90723839ca
Very big theme changes, standardold theme has been split into two themes base and standard. Base theme contains only CSS that is absolutly required (e.g. layout, white space rules, specific widths) and standard (which now looks like standardwhite) contains all the frills. The following noteable changes have also been made: * Plugin CSS has been pushed back into the plugin directories as styles.css files. * Install_print_header has been corrected. * Redundant or deprecated rules have been removed. * Several minor class changes throughout Moodle. * CSS is now single line rules not multiline indented. * Installs with theme=standardold automatically switch to standard. * body classes / id now have prefixes to make it clearer what they are and avoid conflicts. Also worth noting: * There is still alot of tweaking that is required to get everything looking as it is supposed to, please be patient or better yet help out. * I am currently working on the documentation for the themes system... it will be here soon.
214 lines
8.0 KiB
PHP
214 lines
8.0 KiB
PHP
<?php
|
|
|
|
// Allows the admin to configure blocks (hide/show, delete and configure)
|
|
|
|
require_once('../config.php');
|
|
require_once($CFG->libdir.'/adminlib.php');
|
|
require_once($CFG->libdir.'/tablelib.php');
|
|
|
|
admin_externalpage_setup('manageblocks');
|
|
|
|
$confirm = optional_param('confirm', 0, PARAM_BOOL);
|
|
$hide = optional_param('hide', 0, PARAM_INT);
|
|
$show = optional_param('show', 0, PARAM_INT);
|
|
$delete = optional_param('delete', 0, PARAM_INT);
|
|
|
|
/// Print headings
|
|
|
|
$strmanageblocks = get_string('manageblocks');
|
|
$strdelete = get_string('delete');
|
|
$strversion = get_string('version');
|
|
$strhide = get_string('hide');
|
|
$strshow = get_string('show');
|
|
$strsettings = get_string('settings');
|
|
$strcourses = get_string('blockinstances', 'admin');
|
|
$strname = get_string('name');
|
|
$strshowblockcourse = get_string('showblockcourse');
|
|
|
|
/// If data submitted, then process and store.
|
|
|
|
if (!empty($hide) && confirm_sesskey()) {
|
|
if (!$block = $DB->get_record('block', array('id'=>$hide))) {
|
|
print_error('blockdoesnotexist', 'error');
|
|
}
|
|
$DB->set_field('block', 'visible', '0', array('id'=>$block->id)); // Hide block
|
|
admin_get_root(true, false); // settings not required - only pages
|
|
}
|
|
|
|
if (!empty($show) && confirm_sesskey() ) {
|
|
if (!$block = $DB->get_record('block', array('id'=>$show))) {
|
|
print_error('blockdoesnotexist', 'error');
|
|
}
|
|
$DB->set_field('block', 'visible', '1', array('id'=>$block->id)); // Show block
|
|
admin_get_root(true, false); // settings not required - only pages
|
|
}
|
|
|
|
if (!empty($delete) && confirm_sesskey()) {
|
|
admin_externalpage_print_header();
|
|
echo $OUTPUT->heading($strmanageblocks);
|
|
|
|
if (!$block = blocks_get_record($delete)) {
|
|
print_error('blockdoesnotexist', 'error');
|
|
}
|
|
|
|
else {
|
|
$blockobject = block_instance($block->name);
|
|
$strblockname = $blockobject->get_title();
|
|
}
|
|
|
|
if (!$confirm) {
|
|
echo $OUTPUT->confirm(get_string('blockdeleteconfirm', '', $strblockname), 'blocks.php?delete='.$block->id.'&confirm=1', 'blocks.php');
|
|
echo $OUTPUT->footer();
|
|
exit;
|
|
|
|
} else {
|
|
// Inform block it's about to be deleted
|
|
$blockobject = block_instance($block->name);
|
|
if ($blockobject) {
|
|
$blockobject->before_delete(); //only if we can create instance, block might have been already removed
|
|
}
|
|
|
|
// First delete instances and then block
|
|
$instances = $DB->get_records('block_instances', array('blockname' => $block->name));
|
|
if(!empty($instances)) {
|
|
foreach($instances as $instance) {
|
|
blocks_delete_instance($instance);
|
|
}
|
|
}
|
|
|
|
// Delete block
|
|
if (!$DB->delete_records('block', array('id'=>$block->id))) {
|
|
echo $OUTPUT->notification("Error occurred while deleting the $strblockname record from blocks table");
|
|
}
|
|
|
|
drop_plugin_tables($block->name, "$CFG->dirroot/blocks/$block->name/db/install.xml", false); // old obsoleted table names
|
|
drop_plugin_tables('block_'.$block->name, "$CFG->dirroot/blocks/$block->name/db/install.xml", false);
|
|
|
|
// Delete the capabilities that were defined by this block
|
|
capabilities_cleanup('block/'.$block->name);
|
|
|
|
// remove entent handlers and dequeue pending events
|
|
events_uninstall('block/'.$block->name);
|
|
|
|
$a->block = $strblockname;
|
|
$a->directory = $CFG->dirroot.'/blocks/'.$block->name;
|
|
notice(get_string('blockdeletefiles', '', $a), 'blocks.php');
|
|
}
|
|
}
|
|
|
|
admin_externalpage_print_header();
|
|
echo $OUTPUT->heading($strmanageblocks);
|
|
|
|
/// Main display starts here
|
|
|
|
/// Get and sort the existing blocks
|
|
|
|
if (!$blocks = $DB->get_records('block')) {
|
|
print_error('noblocks', 'error'); // Should never happen
|
|
}
|
|
|
|
$incompatible = array();
|
|
|
|
foreach ($blocks as $block) {
|
|
if (($blockobject = block_instance($block->name)) === false) {
|
|
// Failed to load
|
|
continue;
|
|
}
|
|
$blockbyname[$blockobject->get_title()] = $block->id;
|
|
$blockobjects[$block->id] = $blockobject;
|
|
}
|
|
|
|
if(empty($blockbyname)) {
|
|
print_error('failtoloadblocks', 'error');
|
|
}
|
|
|
|
ksort($blockbyname);
|
|
|
|
/// Print the table of all blocks
|
|
|
|
$table = new flexible_table('admin-blocks-compatible');
|
|
|
|
$table->define_columns(array('name', 'instances', 'version', 'hideshow', 'delete', 'settings'));
|
|
$table->define_headers(array($strname, $strcourses, $strversion, $strhide.'/'.$strshow, $strdelete, $strsettings));
|
|
$table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/blocks.php');
|
|
$table->set_attribute('class', 'compatibleblockstable blockstable generaltable');
|
|
$table->setup();
|
|
|
|
foreach ($blockbyname as $blockname => $blockid) {
|
|
|
|
$blockobject = $blockobjects[$blockid];
|
|
$block = $blocks[$blockid];
|
|
|
|
$delete = '<a href="blocks.php?delete='.$blockid.'&sesskey='.sesskey().'">'.$strdelete.'</a>';
|
|
|
|
$settings = ''; // By default, no configuration
|
|
if ($blockobject->has_config()) {
|
|
if (file_exists($CFG->dirroot.'/blocks/'.$block->name.'/settings.php')) {
|
|
$settings = '<a href="'.$CFG->wwwroot.'/'.$CFG->admin.'/settings.php?section=blocksetting'.$block->name.'">'.$strsettings.'</a>';
|
|
} else {
|
|
$settings = '<a href="block.php?block='.$blockid.'">'.$strsettings.'</a>';
|
|
}
|
|
}
|
|
|
|
// MDL-11167, blocks can be placed on mymoodle, or the blogs page
|
|
// and it should not show up on course search page
|
|
|
|
$totalcount = $DB->count_records('block_instances', array('blockname'=>$blockname));
|
|
$count = $DB->count_records('block_instances', array('blockname'=>$blockname, 'pagetypepattern'=>'course-view-*'));
|
|
|
|
if ($count>0) {
|
|
$blocklist = "<a href=\"{$CFG->wwwroot}/course/search.php?blocklist=$blockid&sesskey=".sesskey()."\" ";
|
|
$blocklist .= "title=\"$strshowblockcourse\" >$totalcount</a>";
|
|
}
|
|
else {
|
|
$blocklist = "$totalcount";
|
|
}
|
|
$class = ''; // Nothing fancy, by default
|
|
|
|
if ($blocks[$blockid]->visible) {
|
|
$visible = '<a href="blocks.php?hide='.$blockid.'&sesskey='.sesskey().'" title="'.$strhide.'">'.
|
|
'<img src="'.$OUTPUT->pix_url('i/hide') . '" class="icon" alt="'.$strhide.'" /></a>';
|
|
} else {
|
|
$visible = '<a href="blocks.php?show='.$blockid.'&sesskey='.sesskey().'" title="'.$strshow.'">'.
|
|
'<img src="'.$OUTPUT->pix_url('i/show') . '" class="icon" alt="'.$strshow.'" /></a>';
|
|
$class = ' class="dimmed_text"'; // Leading space required!
|
|
}
|
|
|
|
$table->add_data(array(
|
|
'<span'.$class.'>'.$blockobject->get_title().'</span>',
|
|
$blocklist,
|
|
'<span'.$class.'>'.$blockobject->get_version().'</span>',
|
|
$visible,
|
|
$delete,
|
|
$settings
|
|
));
|
|
}
|
|
|
|
$table->print_html();
|
|
|
|
if(!empty($incompatible)) {
|
|
echo $OUTPUT->heading(get_string('incompatibleblocks', 'blockstable', 'admin'));
|
|
|
|
$table = new flexible_table('admin-blocks-incompatible');
|
|
|
|
$table->define_columns(array('block', 'delete'));
|
|
$table->define_headers(array($strname, $strdelete));
|
|
$table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/blocks.php');
|
|
|
|
$table->set_attribute('class', 'incompatibleblockstable generaltable');
|
|
|
|
$table->setup();
|
|
|
|
foreach ($incompatible as $block) {
|
|
$table->add_data(array(
|
|
$block->name,
|
|
'<a href="blocks.php?delete='.$block->id.'&sesskey='.sesskey().'">'.$strdelete.'</a>',
|
|
));
|
|
}
|
|
$table->print_html();
|
|
}
|
|
|
|
echo $OUTPUT->footer();
|
|
|
|
|