Parcourir la source

Edit admin panels with CKEditor - refs BT#9325

Angel Fernando Quiroz Campos il y a 10 ans
Parent
commit
e526605149
3 fichiers modifiés avec 54 ajouts et 86 suppressions
  1. 44 23
      main/admin/index.php
  2. 0 38
      main/inc/ajax/admin.ajax.php
  3. 10 25
      main/template/default/admin/settings_index.tpl

+ 44 - 23
main/admin/index.php

@@ -4,7 +4,6 @@
  * Index page of the admin tools
  * @package chamilo.admin
  */
-
 // Resetting the course id.
 $cidReset = true;
 
@@ -19,6 +18,9 @@ api_protect_admin_script(true);
 
 $nameTools = get_lang('PlatformAdmin');
 
+$accessUrlId = 0;
+$adminExtraContentDir = api_get_path(SYS_PATH) . "home/admin/";
+
 if (api_is_multiple_url_enabled()) {
     $accessUrlId = api_get_current_access_url_id();
 
@@ -28,8 +30,6 @@ if (api_is_multiple_url_enabled()) {
         $cleanUrl = str_replace('/', '-', $url);
         $adminExtraContentDir = api_get_path(SYS_PATH) . "home/$cleanUrl/admin/";
     }
-} else {
-    $adminExtraContentDir = api_get_path(SYS_PATH) . "home/admin/";
 }
 
 // Displaying the header
@@ -402,30 +402,55 @@ $tpl->assign('web_admin_ajax_url', $admin_ajax_url);
 $tpl->assign('blocks', $blocks);
 
 if (api_is_platform_admin()) {
-    $extraDataForm = new FormValidator(
+    $extraContentForm = new FormValidator(
         'block_extra_data',
         'post',
         '#',
         null,
         array(
             'id' => 'block-extra-data',
-            'class' => 'form-inline'
-        )
+            'class' => ''
+        ),
+        FormValidator::LAYOUT_BOX_NO_LABEL
     );
+    $extraContentFormRenderer = $extraContentForm->getDefaultRenderer();
+
+    if ($extraContentForm->validate()) {
+        $extraData = $extraContentForm->getSubmitValues();
+        $extraData = array_map(['Security', 'remove_XSS'], $extraData);
+
+        if (!empty($extraData['block'])) {
+            if (!is_dir($adminExtraContentDir)) {
+                mkdir(
+                    $adminExtraContentDir,
+                    api_get_permissions_for_new_directories(),
+                    true
+                );
+            }
+
+            if (!is_writable($adminExtraContentDir)) {
+                die;
+            }
+
+            $fullFilePath = $adminExtraContentDir . $extraData['block'];
+            $fullFilePath .= "_extra.html";
+
+            file_put_contents($fullFilePath, $extraData['extra_content']);
 
-    $extraDataForm->addHtmlEditor(
+            Header::location(api_get_self());
+        }
+    }
+
+    $extraContentForm->addTextarea(
         'extra_content',
         null,
-        false,
-        false,
-        array(
-            'name' => 'extra-content',
-            'ToolbarSet' => 'AdminPanels',
-            'Width' => 530,
-            'Height' => 300
-        )
+        ['id' => 'extra_content']
+    );
+    $extraContentFormRenderer->setElementTemplate(
+        '<div class="form-group">{element}</div>',
+        'extra_content'
     );
-    $extraDataForm->addElement(
+    $extraContentForm->addElement(
         'hidden',
         'block',
         null,
@@ -433,16 +458,12 @@ if (api_is_platform_admin()) {
             'id' => 'extra-block'
         )
     );
-    $extraDataForm->addButtonExport(
-        'submit',
+    $extraContentForm->addButtonExport(
         get_lang('Save'),
-        array(
-            'id' => 'btn-block-editor-save',
-            'class' => 'btn btn-primary'
-        )
+        'submit_extra_content'
     );
 
-    $tpl->assign('extraDataForm', $extraDataForm->toHtml());
+    $tpl->assign('extraDataForm', $extraContentForm->returnForm());
 }
 
 // The template contains the call to the AJAX version checker

+ 0 - 38
main/inc/ajax/admin.ajax.php

@@ -32,44 +32,6 @@ switch ($action) {
         echo version_check();
         break;
 
-    case 'save_block_extra':
-        $content = isset($_POST['extra_content']) ? Security::remove_XSS($_POST['extra_content']) : null;
-        $blockName = isset($_POST['block']) ? Security::remove_XSS($_POST['block']) : null;
-
-        if (empty($blockName)) {
-            die;
-        }
-
-        if (api_is_multiple_url_enabled()) {
-            $accessUrlId = api_get_current_access_url_id();
-
-            if ($accessUrlId == -1) {
-                die;
-            }
-
-            $urlInfo = api_get_access_url($accessUrlId);
-            $url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $urlInfo['url']));
-            $cleanUrl = str_replace('/', '-', $url);
-
-            $newUrlDir = api_get_path(SYS_PATH) . "home/$cleanUrl/admin/";
-        } else {
-            $newUrlDir = api_get_path(SYS_PATH) . "home/admin/";
-        }
-
-        if (!is_dir($newUrlDir)) {
-            mkdir($newUrlDir, api_get_permissions_for_new_directories(), true);
-        }
-
-        if (!is_writable($newUrlDir)) {
-            die;
-        }
-
-        $fullFilePath = "{$newUrlDir}{$blockName}_extra.html";
-
-        file_put_contents($fullFilePath, $content);
-
-        break;
-
     case 'get_extra_content':
         $blockName = isset($_POST['block']) ? Security::remove_XSS($_POST['block']) : null;
 

+ 10 - 25
main/template/default/admin/settings_index.tpl

@@ -7,6 +7,12 @@ $(document).ready(function() {
         }
     });
 
+{% if _u.is_admin %}
+    (function(CKEDITOR) {
+        CKEDITOR.replace('extra_content');
+
+        var extraContentEditor = CKEDITOR.instances.extra_content;
+
     $('a.edit-block').on('click', function(e) {
         e.preventDefault();
 
@@ -21,26 +27,15 @@ $(document).ready(function() {
         });
 
         $.when(extraContent).done(function(content) {
-            $('#extra-content').val(content);
+            extraContentEditor.setData(content);
             $('#extra-block').val($self.data('id'));
             $('#modal-extra-title').text($self.data('label'));
 
             $('#modal-extra').modal('show');
         });
     });
-
-    $('#btn-block-editor-save').on('click', function(e) {
-        e.preventDefault();
-
-        var save = $.ajax('{{ _p.web_ajax }}admin.ajax.php', {
-            type: 'post',
-            data: $('#block-extra-data').serialize() + '&a=save_block_extra'
-        });
-
-        $.when(save).done(function() {
-            window.location.reload();
-        });
-    });
+    })(window.CKEDITOR);
+{% endif %}
 });
 </script>
 
@@ -108,17 +103,7 @@ $(document).ready(function() {
                     <h4 class="modal-title" id="modal-extra-title">{{ 'Blocks' | get_lang }}</h4>
                 </div>
                 <div class="modal-body">
-                    <form action="#" method="post" id="block-extra-data">
-                        <div class="form-group">
-                            <textarea rows="15" name="content" class="form-control" id="extra-content"></textarea>
-                            <input type="hidden" name="block" id="extra-block" value="">
-                        </div>
-                    </form>
-                </div>
-                <div class="modal-footer">
-                    <button id="btn-block-editor-save" class="btn btn-primary">
-                        <i class="fa fa-floppy-o"></i> {{ 'Save' | get_lang }}
-                    </button>
+                     {{ extraDataForm }}
                 </div>
             </div>
         </div>