Changeset 3051

Show
Ignore:
Timestamp:
10/18/08 23:23:27 (3 months ago)
Author:
david
Message:

changed module config handler not to enforce a module.lala. prefix for all <settings> and refactored it a bit to deal with multiple <settings> blocks more elegantly, refs #519

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/1.0/src/config/AgaviModuleConfigHandler.class.php

    r2782 r3051  
    6969      $enabled = (bool) AgaviToolkit::literalize($module->getAttribute('enabled')); 
    7070       
    71       // loop over <settings> elements; there can be many of them 
    72       foreach($module as $settings) { 
    73         $localPrefix = $settings->getAttribute('prefix', $prefix); 
    74         // <settings> has <setting> children 
    75         foreach($settings as $setting) { 
    76           $settingName = $localPrefix . $setting->getAttribute('name'); 
    77           if($setting->hasAgaviParameters()) { 
    78             $data[$settingName] = $setting->getAgaviParameters(); 
    79           } else { 
    80             $data[$settingName] = $setting->getValue(); 
     71      // loop over <setting> elements; there can be many of them 
     72      foreach($module->get('settings') as $setting) { 
     73        $localPrefix = $prefix; 
     74         
     75        // let's see if this buddy has a <settings> parent with valuable information 
     76        if($setting->parentNode->localName == 'settings') { 
     77          if($setting->parentNode->hasAttribute('prefix')) { 
     78            $localPrefix = $setting->parentNode->getAttribute('prefix'); 
    8179          } 
     80        } 
     81         
     82        $settingName = $localPrefix . $setting->getAttribute('name'); 
     83        if($setting->hasAgaviParameters()) { 
     84          $data[$settingName] = $setting->getAgaviParameters(); 
     85        } else { 
     86          $data[$settingName] = $setting->getValue(); 
    8287        } 
    8388      }