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

Featured sites

    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.