瀏覽代碼

Fixing mark/unmark settings, only can be configured in the main portal by the global admin

Julio Montoya 12 年之前
父節點
當前提交
551d896b15
共有 5 個文件被更改,包括 58 次插入31 次删除
  1. 2 1
      main/admin/access_url_edit.php
  2. 18 6
      main/admin/settings.lib.php
  3. 28 19
      main/admin/settings.php
  4. 5 3
      main/inc/ajax/admin.ajax.php
  5. 5 2
      main/inc/lib/main_api.lib.php

+ 2 - 1
main/admin/access_url_edit.php

@@ -12,6 +12,7 @@ $this_section = SECTION_PLATFORM_ADMIN;
 
 //api_protect_admin_script();
 api_protect_global_admin_script();
+
 if (!api_get_multiple_access_url()) {
 	header('Location: index.php');
 	exit;
@@ -103,7 +104,7 @@ if( $form->validate()) {
 }
 
 
-$form->addElement('text','url', 'URL',array('size'=>'30'));
+$form->addElement('text','url', 'URL', array('class'=>'span6'));
 $form->addRule('url', get_lang('ThisFieldIsRequired'), 'required');
 $form->addRule('url', '', 'maxlength',254);
 $form->addElement('textarea','description',get_lang('Description'));

+ 18 - 6
main/admin/settings.lib.php

@@ -1055,7 +1055,9 @@ function generate_settings_form($settings, $settings_by_access_list) {
     
     $form->addElement('hidden', 'search_field', Security::remove_XSS($_GET['search_field']));
     
-    if ( $_configuration['multiple_access_urls'] && api_is_global_platform_admin()) {
+    $url_id = api_get_current_access_url_id();
+    
+    if ( $_configuration['multiple_access_urls'] && api_is_global_platform_admin() && $url_id == 1) {
         $group = array();    
         $group[] = $form->createElement('button', 'mark_all', get_lang('MarkAll'));
         $group[] = $form->createElement('button', 'unmark_all', get_lang('UnmarkAll'));    
@@ -1071,12 +1073,22 @@ function generate_settings_form($settings, $settings_by_access_list) {
         if ( $_configuration['multiple_access_urls']) {
             if (api_is_global_platform_admin()) {                
                 if ($row['access_url_locked'] == 0) {
-                    if ($row['access_url_changeable'] == '1') {
-                        $form->addElement('html', '<div style="float: right;"><a class="share_this_setting" data_status = "0"  data_to_send = "'.$row['variable'].'" href="javascript:void(0);">'.
-                                Display::return_icon('shared_setting.png', get_lang('ChangeSharedSetting')).'</a></div>');
+                    if ($url_id == 1) {
+                        if ($row['access_url_changeable'] == '1') {
+                            $form->addElement('html', '<div style="float: right;"><a class="share_this_setting" data_status = "0"  data_to_send = "'.$row['variable'].'" href="javascript:void(0);">'.
+                                    Display::return_icon('shared_setting.png', get_lang('ChangeSharedSetting')).'</a></div>');
+                        } else {
+                            $form->addElement('html', '<div style="float: right;"><a class="share_this_setting" data_status = "1" data_to_send = "'.$row['variable'].'" href="javascript:void(0);">'.
+                                    Display::return_icon('shared_setting_na.png', get_lang('ChangeSharedSetting')).'</a></div>');
+                        }
                     } else {
-                        $form->addElement('html', '<div style="float: right;"><a class="share_this_setting" data_status = "1" data_to_send = "'.$row['variable'].'" href="javascript:void(0);">'.
-                                Display::return_icon('shared_setting_na.png', get_lang('ChangeSharedSetting')).'</a></div>');
+                        if ($row['access_url_changeable'] == '1') {
+                            $form->addElement('html', '<div style="float: right;">'.
+                                    Display::return_icon('shared_setting.png', get_lang('ChangeSharedSetting')).'</div>');
+                        } else {
+                            $form->addElement('html', '<div style="float: right;">'.
+                                    Display::return_icon('shared_setting_na.png', get_lang('ChangeSharedSetting')).'</div>');
+                        }
                     }
                 }                
             }

+ 28 - 19
main/admin/settings.php

@@ -87,22 +87,22 @@ $form_search->setDefaults(array('search_field' => $_REQUEST['search_field']));
 
 $form_search_html = $form_search->return_form();
 
+$url_id = api_get_current_access_url_id();
 
 $settings = null;
 
-// Build the form.
-if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', 'stylesheets', 'Search'))) {
-    $my_category = Database::escape_string($_GET['category']);
-
-    if ($_configuration['access_url'] == 1) {        
-        $settings = api_get_settings($my_category, 'group', $_configuration['access_url']);        
+function get_settings($category = null) {
+    $url_id = api_get_current_access_url_id();
+    
+    if ($url_id == 1) {    
+        $settings = api_get_settings($category, 'group', $url_id);        
     } else {
-        $url_info = api_get_access_url($_configuration['access_url']);
+        $url_info = api_get_access_url($url_id);
         if ($url_info['active'] == 1) {
             // The default settings of Chamilo
-            $settings = api_get_settings($my_category, 'group', 1, 0);
+            $settings = api_get_settings($category, 'group', 1, 0);
             // The settings that are changeable from a particular site.
-            $settings_by_access = api_get_settings($my_category, 'group', $_configuration['access_url'], 1);
+            $settings_by_access = api_get_settings($category, 'group', $url_id, 1);
             
             $settings_by_access_list = array();
             foreach ($settings_by_access as $row) {
@@ -122,17 +122,24 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', '
         }
     }
     
-    if (isset($_GET['category']) && $_GET['category'] == 'search_setting') {  
+    if (isset($category) && $category== 'search_setting') {  
         if (!empty($_REQUEST['search_field'])) {
             $settings = search_setting($_REQUEST['search_field']);                               
         }
     }
+    return $settings;
+}
+
+// Build the form.
+if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', 'stylesheets', 'Search'))) {
+    $my_category = isset($_GET['category']) ? $_GET['category'] : null;
+    $settings = get_settings($my_category);
     
     $form = generate_settings_form($settings, $settings_by_access_list);
     
     $message = array();
     
-    if ($form->validate()) {       
+    if ($form->validate()) {    
         $values = $form->exportValues();   
         
         $mark_all = false;
@@ -157,22 +164,24 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', '
                         $changeable = 0;
                         if ($mark_all) {
                             $changeable = 1;
-                        }
+                        }                        
                         
                         $params = array('variable = ?' =>  array($key));
                         $data = api_get_settings_params($params);                        
                          
                         if (!empty($data)) {
                             foreach ($data as $item) {                
-                                $params = array('id' =>$item['id'], 'access_url_changeable' => $changeable);
-                                api_set_setting_simple($params);        
+                                $params = array('id' =>$item['id'], 'access_url_changeable' => $changeable);                                
+                                api_set_setting_simple($params);    
                             }
                         }
                     }
                 }
+                //Reload settings
+                $settings = get_settings($my_category);
+                $form = generate_settings_form($settings, $settings_by_access_list);
             }
-        }        
-                
+        }                
         $pdf_export_watermark_path = $_FILES['pdf_export_watermark_path'];
          
         if (isset($pdf_export_watermark_path) && !empty($pdf_export_watermark_path['name'])) {       
@@ -211,7 +220,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', '
         foreach ($values as $key => $value) {          
             if (in_array($key, $settings_to_avoid)) { continue; }            
             $key = Database::escape_string($key);
-            $sql = "UPDATE $table_settings_current SET selected_value = 'false' WHERE variable = '".$key."' AND access_url = ".intval($_configuration['access_url'])."  AND type IN ('checkbox', 'radio') ";            
+            $sql = "UPDATE $table_settings_current SET selected_value = 'false' WHERE variable = '".$key."' AND access_url = ".intval($url_id)."  AND type IN ('checkbox', 'radio') ";            
             $res = Database::query($sql);            
         }
         
@@ -266,7 +275,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', '
                             break;
                     }
                     if ($old_value != $value) $keys[] = $key;
-                    $result = api_set_setting($key, $value, null, null, $_configuration['access_url']);
+                    $result = api_set_setting($key, $value, null, null, $url_id);
                 } else {                
                     $sql = "SELECT subkey FROM $table_settings_current WHERE variable = '$key'";
                     $res = Database::query($sql);	                    
@@ -279,7 +288,7 @@ if (!empty($_GET['category']) && !in_array($_GET['category'], array('Plugins', '
                         }
                     }
                     foreach ($value as $subkey => $subvalue) {	             
-                        $result = api_set_setting($key, 'true', $subkey, null, $_configuration['access_url']);	
+                        $result = api_set_setting($key, 'true', $subkey, null, $url_id);	
                     }
                 	
                 }

+ 5 - 3
main/inc/ajax/admin.ajax.php

@@ -12,9 +12,11 @@ $action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;
 
 switch ($action) {
 	case 'update_changeable_setting':        
-        if (api_is_global_platform_admin()) {            
-            if (isset($_GET['id']) && !empty($_GET['id'])) {
-                $params = array('variable = ?' =>  array($_GET['id']));                
+        $url_id = api_get_current_access_url_id();
+        
+        if (api_is_global_platform_admin() && $url_id == 1) {            
+            if (isset($_GET['id']) && !empty($_GET['id'])) {                
+                $params = array('variable = ? ' =>  array($_GET['id']));
                 $data = api_get_settings_params($params);                
                 if (!empty($data)) {
                     foreach ($data as $item) {                

+ 5 - 2
main/inc/lib/main_api.lib.php

@@ -4028,11 +4028,14 @@ function api_set_setting_option($params) {
 }
 
 function api_set_setting_simple($params) {
-	$table = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
+	$table = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);    
+    $url_id = api_get_current_access_url_id();
+    
 	if (empty($params['id'])) {
+        $params['access_url'] = $url_id;
 		Database::insert($table, $params);
 	} else {
-		Database::update($table, $params, array('id = ? '=> $params['id']));
+		Database::update($table, $params, array('id = ? '=> array($params['id'])));
 	}		
 }