D5 Snippet, um collapsible fieldsets eigene classes zu geben

3 replies [Letzter Beitrag]
aschiwi
Bild von aschiwi
Offline
Joined: 29 Aug 2007
Punkte: 219

Ich werf das jetzt mal hier so rein, weil ich das total genial fand. der folgende code gibt collapsible fieldsets (zumindest auf den node/edit forms) eigene css classes. in diesem fall nennt er die class "unsichtbarfieldsetname" und fieldsetname wird halt dann selbst angepasst. hach ich kann's nicht recht erklären, aber so kann man das aussehen pro fieldset mit css anpassen oder einzelne fieldsets ausblenden. ich brauch das zum ausblenden von Organic Groups fieldsets, weil die user nicht selbst die groups wählen, sondern die schon vorgegeben sind (per prepopulate vorausgewählt). wenn man das fieldset per formfilter ausblenden täte, würde der wert spätestens beim bearbeiten einer solchen node wieder verloren gehen. wenn das fieldset aber per display:none weggeblendet ist, bleibt der wert erhalten. genug bla, jetzt mal der code, falls das auch jemand brauchen kann:

<?php function euerthemename_fieldset($element) {
  if (
$element['#collapsible']) {
   
drupal_add_js('misc/collapse.js');

    if (!isset($element['#attributes']['class'])) {
     
$element['#attributes']['class'] = '';
    }

    $element['#attributes']['class'] .= ' collapsible';
    if (
$element['#collapsed']) {
    
$element['#attributes']['class'] .= ' collapsed';
    }
  }
 
# custom fieldset CSS class from element #title
 
$css_class = "unsichtbar";
 
$css_class .= str_replace(" ","-",strtolower($element['#title']));
 
# using transliteration module to convert non-ASCII character where available
 
if(module_exists('transliteration')){
   
# including Transliteration functions
   
require_once(drupal_get_path('module', 'transliteration') .'/transliteration.inc');
   
$css_class = transliteration_clean_filename($css_class);
  }

  $element['#attributes']['class'] .= (!empty($element['#attributes']['class']) ? " " : "") . $css_class;

  return '<fieldset' . drupal_attributes($element['#attributes']) .'>' . ($element['#title'] ? '<legend>'. $element['#title'] .'</legend>' : '') . ($element['#description'] ? '<div class="description">'. $element['#description'] .'</div>' : '') . $element['#children'] . $element['#value'] . "</fieldset>\n";
}

?>

0
Your rating: Keines
tommi
Bild von tommi
Offline
Joined: 10 Apr 2007
Punkte: 199
Kuhle Sache

Um die Lesbarkeit zu verbessern, brauchen wir ja den Code Filter, damit das schön Syntaxgehighlighted wird. Wer meldet sich freiwillig, das Ding zum Laufen zu bekommen. Hatte es einmal (glaub ich noch in D5) probiert, aber das klappte nicht.
http://drupalmodules.com/module/code-filter

aschiwi
Bild von aschiwi
Offline
Joined: 29 Aug 2007
Punkte: 219
Ich melde mich freiwillig :-)

Ich melde mich freiwillig :-) Kannst du das Modul schon mal hochladen, dann mach ich den Rest?

 

tommi
Bild von tommi
Offline
Joined: 10 Apr 2007
Punkte: 199
Ab geht die Luzi

Code Filter ist installiert - du kannst reinhauen.