From ef3c63badc3460fa75720ea5e7a04e4909b445e6 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Mon, 11 Jun 2012 10:17:15 +0200 Subject: [PATCH] move 0xdb siteDialog special case into siteDialog.0xdb.js, fixes #767 --- static/js/pandora/siteDialog.0xdb.js | 166 +++++++++++++++++++++++++++ static/js/pandora/siteDialog.js | 37 +----- 2 files changed, 167 insertions(+), 36 deletions(-) create mode 100644 static/js/pandora/siteDialog.0xdb.js diff --git a/static/js/pandora/siteDialog.0xdb.js b/static/js/pandora/siteDialog.0xdb.js new file mode 100644 index 000000000..0caa10567 --- /dev/null +++ b/static/js/pandora/siteDialog.0xdb.js @@ -0,0 +1,166 @@ +// vim: et:ts=4:sw=4:sts=4:ft=javascript + +'use strict'; + +pandora.ui.siteDialog = function(section) { + + var dialogHeight = Math.round((window.innerHeight - 48) * 0.75), + dialogWidth = Math.round(window.innerWidth * 0.75), + isEditable = pandora.site.capabilities.canEditSitePages[pandora.user.level], + tabs = pandora.site.sitePages.concat([{id: 'software', title: 'Software'}]); + Ox.getObjectById(tabs, section).selected = true; + var $tabPanel = Ox.TabPanel({ + content: function(id) { + var $content = Ox.Element().css({padding: '16px', overflowY: 'auto'}); + if (id == 'contact') { + pandora.$ui.contactForm = pandora.ui.contactForm().appendTo($content); + } else if (id == 'news') { + pandora.$ui.news = pandora.ui.news(dialogWidth, dialogHeight).appendTo($content); + } else if (id == 'software') { + Ox.Element() + .html( + '

pan.do/ra

' + + 'open media archive' + + '

' + pandora.site.site.name + ' is based on pan.do/ra, ' + + 'a free open source framework for media archives.

' + + 'pan.do/ra includes OxJS, ' + + 'a new JavaScript library for web applications.

' + + 'Both pan.do/ra ' + + 'and OxJS ' + + 'will be released in 2012. More soon...' + ) + .appendTo($content); + } else { + pandora.api.getPage({name: id}, function(result) { + var $right, risk; + Ox.Editable({ + clickLink: pandora.clickLink, + editable: isEditable, + tooltip: isEditable ? 'Doubleclick to edit' : '', + type: 'textarea', + placeholder: isEditable ? 'Doubleclick to insert text' : '', + value: result.data.text + }) + .css(id == 'rights' ? { + // this will get applied twice, + // total is 144px + marginRight: '72px' + } : { + width: '100%' + }) + .bindEvent({ + submit: function(data) { + Ox.Request.clearCache('getPage'); + pandora.api.editPage({ + name: id, + text: data.value + }); + } + }) + .appendTo($content); + if (id == 'rights') { + $right = $('
') + .css({position: 'absolute', top: '16px', right: '16px', width: '128px'}) + .appendTo($content); + $('') + .attr({src: '/static/png/rights.png'}) + .css({width: '128px', height: '128px', marginBottom: '8px'}) + .appendTo($right); + risk = ['Unknown', 'Severe', 'High', 'Significant', 'General', 'Low']; + [].concat( + ['Unknown'], + pandora.site.rightsLevels.map(function(rightsLevel) { + return rightsLevel.name; + }).reverse() + ).forEach(function(name, i) { + Ox.Theme.formatColor(330 + 30 * i, 'gradient') + .css({ + padding: '4px', + marginTop: '8px' + }) + .html( + '' + name + '
' + + risk[i] + ' Risk' + + (risk[i].length > 6 ? '
of ' : ' of
') + + 'Legal Action
' + ) + .appendTo($right); + }); + } + }); + } + return Ox.SplitPanel({ + elements: [ + { + element: Ox.Element() + .css({padding: '16px'}) + .append( + $('') + .attr({src: '/static/png/' + ( + id == 'software' ? 'software' : 'logo' + ) + '.png'}) + .css({width: '256px'}) + ), + size: 272 + }, + { + element: $content + } + ], + orientation: 'horizontal' + }); + }, + tabs: tabs + }) + .bindEvent({ + change: function(data) { + that.options({ + title: Ox.getObjectById(tabs, data.selected).title + }); + pandora.UI.set({page: data.selected}); + } + }); + + var that = Ox.Dialog({ + buttons: [ + Ox.Button({ + id: 'close', + title: 'Close' + }).bindEvent({ + click: function() { + that.close(); + } + }) + ], + closeButton: true, + content: $tabPanel, + height: dialogHeight, + maximizeButton: true, + minHeight: 256, + minWidth: 688, // 16 + 256 + 16 + 384 + 16 + removeOnClose: true, + title: Ox.getObjectById(tabs, section).title, + width: dialogWidth + }) + .bindEvent({ + close: function(data) { + pandora.UI.set({page: ''}); + }, + resize: function(data) { + var selected = $tabPanel.selected(); + if (selected == 'contact') { + pandora.$ui.contactForm.resize(); + } else if (selected == 'news') { + pandora.$ui.news.resize(data); + } + } + }); + + that.select = function(id) { + $tabPanel.select(id); + return that; + }; + + return that; + +}; diff --git a/static/js/pandora/siteDialog.js b/static/js/pandora/siteDialog.js index 0caa10567..86d893e26 100644 --- a/static/js/pandora/siteDialog.js +++ b/static/js/pandora/siteDialog.js @@ -32,7 +32,6 @@ pandora.ui.siteDialog = function(section) { .appendTo($content); } else { pandora.api.getPage({name: id}, function(result) { - var $right, risk; Ox.Editable({ clickLink: pandora.clickLink, editable: isEditable, @@ -41,11 +40,7 @@ pandora.ui.siteDialog = function(section) { placeholder: isEditable ? 'Doubleclick to insert text' : '', value: result.data.text }) - .css(id == 'rights' ? { - // this will get applied twice, - // total is 144px - marginRight: '72px' - } : { + .css({ width: '100%' }) .bindEvent({ @@ -58,36 +53,6 @@ pandora.ui.siteDialog = function(section) { } }) .appendTo($content); - if (id == 'rights') { - $right = $('
') - .css({position: 'absolute', top: '16px', right: '16px', width: '128px'}) - .appendTo($content); - $('') - .attr({src: '/static/png/rights.png'}) - .css({width: '128px', height: '128px', marginBottom: '8px'}) - .appendTo($right); - risk = ['Unknown', 'Severe', 'High', 'Significant', 'General', 'Low']; - [].concat( - ['Unknown'], - pandora.site.rightsLevels.map(function(rightsLevel) { - return rightsLevel.name; - }).reverse() - ).forEach(function(name, i) { - Ox.Theme.formatColor(330 + 30 * i, 'gradient') - .css({ - padding: '4px', - marginTop: '8px' - }) - .html( - '' + name + '
' - + risk[i] + ' Risk' - + (risk[i].length > 6 ? '
of ' : ' of
') - + 'Legal Action
' - ) - .appendTo($right); - }); - } - }); } return Ox.SplitPanel({ elements: [