178 lines
5.5 KiB
JavaScript
178 lines
5.5 KiB
JavaScript
// Object to create a separate name space for GForum javascript functions
|
|
function GForumAdmin() {}
|
|
|
|
// Initialize the GForum object
|
|
$(document).ready(function() {
|
|
GForumAdmin = new GForumAdmin();
|
|
});
|
|
|
|
GForumAdmin.prototype.ajax_url = 'admin.cgi';
|
|
|
|
/**
|
|
* Initializes the drag and drop functionality for the dashboard
|
|
*/
|
|
GForumAdmin.prototype.initDashboard = function () {
|
|
// Init the column sortables
|
|
$('.widget_column').sortable(
|
|
{
|
|
items: '.widget',
|
|
handle: '.widget_heading',
|
|
opacity: 0.3,
|
|
delay: 100,
|
|
placeholder: 'widget_hover',
|
|
connectWith: ['#dashboard_column0', '#dashboard_column1'],
|
|
stop: function () { GForumAdmin.saveWidgetPositions(); }
|
|
}
|
|
);
|
|
|
|
// Init the row sortables
|
|
$('.widget_row').sortable(
|
|
{
|
|
items: '.widget',
|
|
handle: '.widget_heading',
|
|
opacity: 0.3,
|
|
delay: 100,
|
|
placeholder: 'widget_hover',
|
|
connectWith: ['#dashboard_row0', '#dashboard_row1'],
|
|
stop: function () { GForumAdmin.saveWidgetPositions(); }
|
|
}
|
|
);
|
|
|
|
GForumAdmin.initToolbarButtons();
|
|
|
|
// Init the widget add buttons
|
|
$('.widget_add').click(function () {
|
|
GForumAdmin.addWidget($(this).attr('id').substr(4));
|
|
return false;
|
|
});
|
|
|
|
// Init the widget configuration page buttons
|
|
$('.widget_list_toggle').click(function () {
|
|
$('#widget_list').slideToggle('slow', function () {
|
|
var old_text = $('.widget_toggle_text').text();
|
|
var new_text = $('.widget_toggle_text_exchange').text();
|
|
$('.widget_toggle_text').text(new_text);
|
|
$('.widget_toggle_text_exchange').text(old_text);
|
|
});
|
|
|
|
return false;
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Binds the click functions to the widget toolbar buttons
|
|
*/
|
|
GForumAdmin.prototype.initToolbarButtons = function () {
|
|
$('.widget_close').unbind();
|
|
$('.widget_minimize').unbind();
|
|
|
|
// Init the widget close buttons
|
|
$('.widget_close').click(function () {
|
|
$(this).parents('.widget').fadeOut('slow', function () {
|
|
$(this).remove();
|
|
GForumAdmin.saveWidgetPositions();
|
|
});
|
|
return false;
|
|
});
|
|
|
|
// Init the widget minimize buttons
|
|
$('.widget_minimize').click(function () {
|
|
$(this).parents('.widget').children('.box_content').slideToggle();
|
|
$(this).parents('.widget').find('.widget_minimize').toggleClass('hidden');
|
|
GForumAdmin.toggleWidgetMaximizationState($(this).parents('.widget').attr('id'));
|
|
return false;
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Ajax function to save the current widget positions
|
|
*/
|
|
GForumAdmin.prototype.saveWidgetPositions = function () {
|
|
$.post(GForumAdmin.ajax_url, {
|
|
'do': 'json_save_widget_positions',
|
|
'column0': $('#dashboard_column0').sortable('serialize'),
|
|
'column1': $('#dashboard_column1').sortable('serialize'),
|
|
'row0': $('#dashboard_row0').sortable('serialize'),
|
|
'row1': $('#dashboard_row1').sortable('serialize')
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Ajax function to toggle the maximization state of a widget
|
|
*/
|
|
GForumAdmin.prototype.toggleWidgetMaximizationState = function (widget_id) {
|
|
$.post(GForumAdmin.ajax_url, {
|
|
'do': 'json_toggle_widget_maximization_state',
|
|
'widget_id': widget_id
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Ajax function to add a widget to the dashboard
|
|
*/
|
|
GForumAdmin.prototype.addWidget = function (widget_id) {
|
|
$.post( GForumAdmin.ajax_url, { 'do': 'json_add_widget', 'widget_id': widget_id }, function(data) {
|
|
if (data.success) {
|
|
|
|
var container;
|
|
if (data.data.widget_config.container == 'column') {
|
|
container = '#dashboard_column' + data.data.widget_config.column;
|
|
}
|
|
else {
|
|
container = '#dashboard_row0';
|
|
}
|
|
|
|
$(container).prepend(data.data.widget_html);
|
|
GForumAdmin.initToolbarButtons();
|
|
}
|
|
}, "json");
|
|
};
|
|
|
|
/**
|
|
* Ajax function to fetch the update information and reset the numbers in the DOM
|
|
*/
|
|
GForumAdmin.prototype.fetchUpdates = function (widget_id) {
|
|
$.post( GForumAdmin.ajax_url, { 'do': 'json_fetch_updates' }, function(data) {
|
|
if (data.success) {
|
|
var updates = data.data.updates;
|
|
|
|
// Loop trough the update types
|
|
for (var type in updates) {
|
|
if (typeof type == 'string') {
|
|
eval('var current = updates.' + type);
|
|
|
|
// Reset the number of updates
|
|
$('#updates_list').find('.' + type).text(current);
|
|
|
|
// Highlight critical updates
|
|
if (current > 0 && type == 'critical') {
|
|
$('#updates_list').find('.' + type).parent().addClass('important');
|
|
}
|
|
|
|
// Singular/plural replacements
|
|
if (current != 1) {
|
|
$('#updates_list').find('.' + type + '_plural').show();
|
|
$('#updates_list').find('.' + type + '_singular').hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Show the link to the updates page in case we got some updates
|
|
if (updates.total) {
|
|
$('#updates_link').show();
|
|
}
|
|
|
|
// Show the list
|
|
$('#updates_list').slideDown("slow");
|
|
} else {
|
|
$('#updates_error').text(data.message);
|
|
$('#updates_error').show();
|
|
}
|
|
|
|
$('#updates_spinner').remove();
|
|
}, "json");
|
|
};
|
|
|
|
|