aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/AdminTools/template/admin_controller.js
diff options
context:
space:
mode:
authormistic100 <mistic@piwigo.org>2014-08-04 21:07:41 +0000
committermistic100 <mistic@piwigo.org>2014-08-04 21:07:41 +0000
commit3766aa9935b1cc4b069744c313c9b667c9061ec0 (patch)
treebdd5cb9cb279d4472af2ebb3e50c0d6e0d08aa32 /plugins/AdminTools/template/admin_controller.js
parent5c5490e03e03730e5ebc7866c873919168ba5c73 (diff)
add MultiView controller on admin page (replaces the "switch theme" button)
git-svn-id: http://piwigo.org/svn/trunk@29168 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'plugins/AdminTools/template/admin_controller.js')
-rw-r--r--plugins/AdminTools/template/admin_controller.js118
1 files changed, 118 insertions, 0 deletions
diff --git a/plugins/AdminTools/template/admin_controller.js b/plugins/AdminTools/template/admin_controller.js
new file mode 100644
index 000000000..73f7b1096
--- /dev/null
+++ b/plugins/AdminTools/template/admin_controller.js
@@ -0,0 +1,118 @@
+var AdminTools = function($) {
+ var __this = this;
+
+ this.urlWS;
+ this.urlSelf;
+ this.multiView;
+
+ var $ato = $('#ato_container');
+
+ // fill multiview selects
+ // data came from AJAX request or sessionStorage
+ function populateMultiView() {
+ var $multiview = $ato.find('.multiview');
+
+ if ($multiview.data('init')) return;
+
+ var render = function(data) {
+ var html = '';
+ $.each(data.users, function(i, user) {
+ if (user.status == 'webmaster' || user.status == 'admin') {
+ html+= '<option value="'+ user.id +'">'+ user.username +'</option>';
+ }
+ });
+ $multiview.find('select[data-type="view_as"]').html(html)
+ .val(__this.multiView.view_as);
+
+ html = '';
+ $.each(['clear','roma'], function(i, theme) {
+ html+= '<option value="'+ theme +'">'+ theme +'</option>';
+ });
+ $multiview.find('select[data-type="theme"]').html(html)
+ .val(__this.multiView.theme);
+
+ html = '';
+ $.each(data.languages, function(i, language) {
+ html+= '<option value="'+ language.id +'">'+ language.name +'</option>';
+ });
+ $multiview.find('select[data-type="lang"]').html(html)
+ .val(__this.multiView.lang);
+
+ $multiview.data('init', true);
+
+ $multiview.find('.switcher').show();
+ };
+
+ if ('sessionStorage' in window && window.sessionStorage.multiView != undefined) {
+ render(JSON.parse(window.sessionStorage.multiView));
+ }
+ else {
+ $.ajax({
+ method: 'POST',
+ url: __this.urlWS + 'multiView.getData',
+ dataType: 'json',
+ success: function(data) {
+ render(data.result);
+ if ('sessionStorage' in window) {
+ window.sessionStorage.multiView = JSON.stringify(data.result);
+ }
+ },
+ error: function(xhr, text, error) {
+ alert(text + ' ' + error);
+ }
+ });
+ }
+ }
+
+ // delete session cache
+ this.deleteCache = function() {
+ if ('sessionStorage' in window) {
+ window.sessionStorage.removeItem('multiView');
+ }
+ };
+
+ // attach jquery handlers
+ this.init = function(open) {
+ $('.multiview').appendTo($ato);
+
+ /* <!-- sub menus --> */
+ $ato.on({
+ 'click': function(e) {
+ populateMultiView();
+ $(this).find('ul').toggle();
+ },
+ 'mouseleave': function(e) {
+ if (e.target.tagName.toLowerCase() != "select") {
+ $(this).find('ul').hide();
+ }
+ }
+ });
+ $ato.find('>a').on('click', function(e) {
+ e.preventDefault();
+ });
+ $ato.find('ul').on('mouseleave', function(e) {
+ if (e.target.tagName.toLowerCase() != "select") {
+ $(this).hide();
+ }
+ });
+
+ /* <!-- select boxes --> */
+ $ato.find('.switcher').on({
+ 'change': function() {
+ if ($(this).data('type') == 'theme') {
+ if ($(this).val() != __this.multiView.theme) {
+ window.location.href = __this.urlSelf + 'change_theme=1';
+ }
+ }
+ else {
+ window.location.href = __this.urlSelf + 'ato_'+ $(this).data('type') +'='+ $(this).val();
+ }
+ },
+ 'click': function(e) {
+ e.stopPropagation();
+ }
+ });
+ };
+
+ return this;
+}(jQuery); \ No newline at end of file