Edit admin panels with CKEditor - refs BT#9325

1.10.x
Angel Fernando Quiroz Campos 10 years ago
parent 122b328576
commit e526605149
  1. 67
      main/admin/index.php
  2. 38
      main/inc/ajax/admin.ajax.php
  3. 35
      main/template/default/admin/settings_index.tpl

@ -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

@ -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;

@ -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>

Loading…
Cancel
Save