// 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(Ox._( '

pan.do/ra

' + 'open media archive' + '

{0} 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 ? '{0}' + ' is running pan.do/ra revision ' + '{1}.' : '' ), [pandora.site.site.name, pandora.site.site.version] )) .appendTo($content); pandora.createLinks($content); } else { pandora.api.getPage({name: id}, function(result) { 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({ width: '100%' }) .bindEvent({ submit: function(data) { Ox.Request.clearCache('getPage'); pandora.api.editPage({ name: id, text: data.value }); } }) .appendTo($content); }); } 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; };