// vim: et:ts=4:sw=4:sts=4:ft=javascript 'use strict'; pandora.ui.siteDialog = function(section) { var canSeeVersion = pandora.site.capabilities.canSeeSoftwareVersion[pandora.user.level], dialogHeight = Math.round((window.innerHeight - 48) * 0.75), dialogWidth = Math.round(window.innerWidth * 0.75), isEditable = pandora.site.capabilities.canEditSitePages[pandora.user.level], tabs = Ox.clone(pandora.site.sitePages, true).map(function(page) { page.title = Ox._(page.title); return page; }).concat([{id: 'software', title: Ox._('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') { $content.addClass('OxTextPage'); } 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 platform for media archives.

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

' + '

To learn more about pan.do/ra and OxJS, ' + 'please visit pan.do/ra ' + 'and oxjs.org.

' + ( canSeeVersion ? '' + pandora.site.site.name + ' is running pan.do/ra revision ' + pandora.site.site.version + '.' : '' ) ) .appendTo($content); } else { pandora.api.getPage({name: id}, function(result) { var $right, risk; Ox.Editable({ clickLink: pandora.clickLink, editable: isEditable, tooltip: isEditable ? pandora.getEditTooltip() : '', type: 'textarea', placeholder: isEditable ? Ox._('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', lineHeight: 'normal'}) .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', height: 'auto', marginTop: id == 'software' ? '-16px' : 0 }) ), 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: Ox._('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) { Ox.getObjectById(tabs, pandora.user.ui.page) && pandora.UI.set({page: ''}); }, resize: function(data) { var selected = $tabPanel.selected(); dialogHeight = data.height; dialogWidth = data.width; if (selected == 'contact') { pandora.$ui.contactForm.resize(); } else if (selected == 'news') { pandora.$ui.news.resize(data); } }, key_down: function() { pandora.user.ui.page == 'news' && pandora.$ui.news.selectItem(1); }, key_up: function() { pandora.user.ui.page == 'news' && pandora.$ui.news.selectItem(-1); } }); that.select = function(id) { $tabPanel.select(id); return that; }; return that; };