From e0ff04a95afa77c5ff944f1820be5e88b5031fc1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20Kr=C3=A6mmer=20Nielsen?= Date: Wed, 6 Jul 2011 08:19:27 +0200 Subject: [PATCH] Use .i. address for now --- 1 | 704 ++++++++++++++++++++++++++++++++++++++++ content/quickbox.js | 2 +- content/tv2developer.js | 2 +- version | 2 +- 4 files changed, 707 insertions(+), 3 deletions(-) create mode 100644 1 diff --git a/1 b/1 new file mode 100644 index 0000000..0a1187d --- /dev/null +++ b/1 @@ -0,0 +1,704 @@ +// TV 2 Developer Plugin +// Javascript Implementation +// @author Kristian Kræmmer Nielsen +// +// Keyboard shortcuts +// . = Prompttest +// 2 = Back from i2 +// 7 = Lookup R7 video clip +// A = Template +// B = Robot +// C = Gitweb +// D = Dynamic version +// E = Node info +// F = Tango interface +// G = Look in tango +// H = View source in Gitweb +// I = I2 tree +// K = Lookup content +// L = Live +// N = Node lookup +// O = Opdatering +// P = Ttv page +// P = Ttvpumpe +// Q = Open quicklink dialog +// R = Requeue in tango +// S = Snapshot +// T = Test +// T = tv2.dk +// U = Node query tool +// V = W3C markup validator +// W = Webroot +// X = Examine database queries +// Y = Flush cache + +var TV2Developer = { + + _lastAction: null, + _useStatusBarIconInstead: false, + + /* toggle between statusbar/toolbar mode */ + updateStatusBarMode: function() { + var enabled = this._useStatusBarIconInstead = TV2Util.getPref('useStatusBarMode'); + + var statusbutton = document.getElementById('tv2developer_statusbutton'); + var swapbutton = document.getElementById('tv2-swap-button'); + var popupmenu = document.getElementById('tv2developer-popupmenu'); + + statusbutton.hidden = !enabled; + swapbutton.hidden = enabled; + + if (enabled) { + statusbutton.appendChild(popupmenu); + } else { + swapbutton.appendChild(popupmenu); + } + }, + + /* method for initialize, reading properties, adding icon at firstrun, added keyshortcuts */ + init: function() { + // init + this._lastAction = TV2Util.getPref('lastaction-linktype'); + // add shortcuts depending on platform + var shortcuts = document.getElementById('mainKeyset'); + // We take this from ui.key.chromeAccess (no other way it seems, jkkn) + // Use 0 for disabled, 1 for Shift, 2 for Ctrl, 4 for Alt, 8 for Meta + // (values can be combined, e.g. 5 for Alt+Shift) + var altKey = []; // ALT on windows, CONTROL on mac + var chromeAccess = + Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService) + .getBranch('ui.key.').getIntPref('chromeAccess'); + if (chromeAccess & 1) altKey.push('shift'); + if (chromeAccess & 2) altKey.push('control'); + if (chromeAccess & 4) altKey.push('alt'); + if (chromeAccess & 8) altKey.push('meta'); + if (altKey.length > 0) { + altKey = altKey.join(','); + this._addShortcut(shortcuts, 'tv2-key-open', altKey, '1', 'VK_F1', 'TV2Developer.handleKeyShortcut(event)'); + this._addShortcut(shortcuts, 'tv2-key-repeat', altKey, '2', 'VK_F2', 'TV2Developer.handleButton(event)'); + this._addShortcut(shortcuts, 'tv2-key-quick', altKey, '3', 'VK_F3', 'TV2Developer.openQuickbox(event)'); + this._addShortcut(shortcuts, 'tv2-key-quick-go', altKey, '4', 'VK_F4', 'TV2Developer.openQuickbox(event, true)'); + } + + // first run, add icon + if (TV2Util.getPref('firstRun')) { + TV2Util.setPref('firstRun', false); + // add icon + try { + var firefoxnav = document.getElementById('nav-bar'); + var curSet = firefoxnav.currentSet; + if (curSet.indexOf('tv2-swap-button') == -1) + { + var set; + // Place the button after the urlbar + if (curSet.indexOf('urlbar-container') != -1) + set = curSet.replace(/urlbar-container/, 'urlbar-container,tv2-swap-button'); + else // otherwise at the end + set = firefoxnav.currentSet + ',tv2-swap-button'; + firefoxnav.setAttribute('currentset', set); + firefoxnav.currentSet = set; + document.persist('nav-bar', 'currentset'); + // If you don't do the following call, funny things happen + try { + BrowserToolboxCustomizeDone(true); + } + catch (e) { } + } + } + catch(e) { } + } + + // initializes the statusbar icon by observe optional preference changes + TV2Util.prefs.addObserver('useStatusBarMode', { + observe: function(subject, topic, data) { + if (topic == 'nsPref:changed') { + TV2Developer.updateStatusBarMode(); + } + }}, false); + TV2Developer.updateStatusBarMode(); + }, + + /* utility function to create shortcut object */ + _addShortcut: function(parent, id, modifiers, key, fkeycode, oncommand) { + var newKey = document.createElement('key'); + newKey.setAttribute('id', id); + newKey.setAttribute('modifiers', modifiers); + newKey.setAttribute('key', key); + newKey.setAttribute('oncommand', oncommand); + parent.appendChild(newKey); + // also add F-key shortcut + newKey = document.createElement('key'); + newKey.setAttribute('id', id+'-fkey'); + newKey.setAttribute('modifiers', 'accel'); + newKey.setAttribute('keycode', fkeycode); + newKey.setAttribute('oncommand', oncommand); + parent.appendChild(newKey); + }, + + /* popup menu utility functions */ + emptyMenu: function(menu) { + var children = menu.childNodes; + for (var i = children.length - 1; i >= 0; --i) { + menu.removeChild(children[i]); + } + }, + + TV2Link: function(type, domain, uri, accesskey, flags) { + this.type = type; + // Postfix label with up to 25 chars of uri + this.label = domain; + if (uri.length > 25) { + this.label += uri.substr(0, 23) + '\u2026'; + } else { + this.label += uri; + } + this.url = 'http://' + domain + uri; + if (accesskey) this.accesskey = accesskey; + this.disabled = false; + this.flags = (flags ? flags : ''); + }, + + TV2LinkSplit: function () { + this.type = 'split'; + }, + + TV2LinkWithLabel: function(type, label, url, accesskey, flags, disabled) { + this.type = type; + this.label = label; + this.url = url; + if (accesskey) this.accesskey = accesskey; + this.disabled = typeof(disabled)!='undefined' ? disabled : false; + this.flags = (flags ? flags : ''); + }, + + addMenuLink: function(menu, tv2link, defSet) { + var def = false; + var item; + if (tv2link.type == 'split') { + item = document.createElement('menuseparator'); + } else { + item = document.createElement('menuitem'); + item.setAttribute('label', tv2link.label); + if (tv2link.accesskey) + item.setAttribute('accesskey', tv2link.accesskey); + item.setAttribute('url', tv2link.url); + item.setAttribute('tooltiptext', tv2link.label); + item.setAttribute('disabled', tv2link.disabled); + item.setAttribute('tv2flags', tv2link.flags); + if (!defSet && tv2link.type == this._lastAction) { + item.setAttribute('style', 'font-weight: bold'); + def = true; + } + } + item.setAttribute('tv2link', tv2link.type); + menu.appendChild(item); + return def; + }, + + _isPhp4: function(site) { + if (!site) site = 'www'; + return ((','+TV2Util.getPref('php4sites')+',').indexOf(','+site+',') != -1); + }, + + /* Main function for adding all the links for the menu popup */ + _reg_tv2: /^https?:\/\/([^/.]*)?([^/]*?)(\.(robot|opdatering|template)\.?)?(\.(php4|php5)\.?)?(\.((test3?|snapshot3?|stage))\.)?tv2\.dk((\/[^#\?]*).*)?$/, + _reg_branchuser: /^\.(([^.]*?)\.)?([^.]*)/, + _reg_php: /^(.*\.php)/, + _reg_nodeid: /([0-9]{2,})/g, + _reg_i2files: /\/([0-9]+)-/, + _reg_r7program: /-([0-9]+)\//, + _reg_fromgitweb: /^https?:\/\/flimmer\.tv2\.dk\/git\/\?p=([^/]+)\.tv2\.dk\.git.*(?:f=(webroot|robot|opdatering|template)([^;&]*))/, + _reg_fromi2if: /^\/(tango\/(entry|requeue|dynamic)|tool\/pdo_log\/frameset)\.php.*?(\?|&)url=([^&]+)/, + _reg_cutdomain: /^(.*)\.tv2\.dk$/, + getLinks: function() { + var links = new Array(); + var currentURL = getBrowser().currentURI.spec; + var encodedURL = encodeURIComponent(currentURL); + var initials = TV2Util.getPref('developer-initials'); + + /* Check if we are on the Gitweb site */ + var fromgitweb = this._reg_fromgitweb.exec(currentURL); + + // Adding links as appropiate if tv2.dk site + var tv2 = this._reg_tv2.exec(currentURL); + + if (tv2 && !fromgitweb) { + var skip_treenodes = false; + var tv2_sitename = tv2[1]; + var tv2_branchuser = tv2[2]; + var tv2_sitetype = tv2[4]; + var tv2_apptype = tv2[6]; // php4 or php5 + var tv2_testsite = tv2[8]; + var tv2_testtype = tv2[9]; /* no 3 */ + var tv2_uri = tv2[10]; + var tv2_uriOnly = tv2[11]; // no parameters, anchers + + // Strip -dyn and -static + if (tv2_sitename) tv2_sitename = tv2_sitename.replace(/-(dyn|static)$/, ''); + + // convert old URLs (.test3 / .snapshot3) + if (tv2_testsite == 'test3') { + tv2_testsite = 'test'; + tv2_apptype = 'php4'; + } else if (tv2_testsite == 'snapshot3') { + tv2_testsite = 'snapshot'; + tv2_apptype = 'php4'; + } + + var tv2_user; + var tv2_branch; + // In stage and snapshot and test - split username and branch + if (tv2_testsite == 'snapshot' || tv2_testsite == 'stage' || tv2_testsite == 'test' && tv2_branchuser) { + if (tv2_testsite == 'test') { // if only one - this is the username + var bc = this._reg_branchuser.exec(tv2_branchuser); + if (bc) { + tv2_branch = bc[2]; + tv2_user = bc[3]; + } + } else { // we do not have usernames on snapshot/stage, so this is the branch + tv2_branch = tv2_branchuser.replace(/^\./, ''); + } + } + + // php4 site + var php4 = this._isPhp4(tv2_sitename); + if (!tv2_apptype) { + tv2_apptype = php4 ? 'php4' : 'php5'; + } + + // Handle sites with aliases (e.g. ol2008.tv2.dk is ol.tv2.dk on live... ) + var git_sitename; + var live_sitename = (tv2_sitename ? tv2_sitename : 'www'); + + var docWin = getBrowser().contentWindow; + if (docWin.wrappedJSObject) { + var docObj = docWin.wrappedJSObject; + if (docObj.TV2_PROJECTNAME) { + var nodomain = this._reg_cutdomain.exec(docObj.TV2_PROJECTNAME); + if (nodomain) { + git_sitename = nodomain[1]; + } + } + if (docObj.TV2_LIVESITE) { + var nodomain = this._reg_cutdomain.exec(docObj.TV2_LIVESITE); + if (nodomain) { + live_sitename = nodomain[1]; + } + } + } + + // Find live, test, stage and snapshot url for current site + var liveurl; + var live_sitename_complete = ((live_sitename=='www') ? '' : live_sitename+'.') + 'tv2.dk'; + if (!git_sitename) { + git_sitename = tv2_sitename ? tv2_sitename : 'www'; + } + + // Construct corresponding live URL + if (tv2_testsite) { // test, snapshot or stage + if (tv2_sitetype) { /* opdatering, ... */ + liveurl = tv2_sitename+'.'+tv2_sitetype+'.tv2.dk'; + } else { + liveurl = live_sitename_complete; + } + } + + var testprompturl = git_sitename+(tv2_branch?'.'+tv2_branch:'')+'.?'+(tv2_sitetype?'.'+tv2_sitetype:'')+'.'+tv2_apptype+'.test'+'.tv2.dk'; + var testurl = git_sitename+(tv2_branch?'.'+tv2_branch:'')+'.'+initials+(tv2_sitetype?'.'+tv2_sitetype:'')+'.'+tv2_apptype+'.test'+'.tv2.dk'; + var snapshoturl = git_sitename+(tv2_branch?'.'+tv2_branch:'')+(tv2_sitetype?'.'+tv2_sitetype:'')+'.'+tv2_apptype+'.snapshot'+'.tv2.dk'; + var stageurl = git_sitename+(tv2_branch?'.'+tv2_branch:'')+(tv2_sitetype?'.'+tv2_sitetype:'')+'.'+tv2_apptype+'.stage'+'.tv2.dk'; + + // Add the two urls we are not at + if (!tv2_testsite) { // always add swaps to stage, snapshot and the test site + links.push(new this.TV2Link('test_live_swap', testurl, tv2_uri, TV2Util.getStr('test.accesskey'))); + links.push(new this.TV2Link('snapshot_live_swap', snapshoturl, tv2_uri, TV2Util.getStr('snapshot.accesskey'))); + links.push(new this.TV2Link('stage_live_swap', stageurl, tv2_uri, TV2Util.getStr('stage.accesskey'))); + links.push(new this.TV2Link('testprompt_swap', testprompturl, tv2_uri, TV2Util.getStr('testprompt.accesskey'), 'promptInitials')); + } else if (tv2_testtype == 'snapshot') { + links.push(new this.TV2Link('snapshot_live_swap', liveurl, tv2_uri, TV2Util.getStr('live.accesskey'))); + links.push(new this.TV2Link('snapshot_stage_swap', stageurl, tv2_uri, TV2Util.getStr('stage.accesskey'))); + links.push(new this.TV2Link('test_snapshot_swap', testurl, tv2_uri, TV2Util.getStr('test.accesskey'))); + links.push(new this.TV2Link('testprompt_swap', testprompturl, tv2_uri, TV2Util.getStr('testprompt.accesskey'), 'promptInitials')); + } else if (tv2_testtype == 'stage') { + links.push(new this.TV2Link('stage_live_swap', liveurl, tv2_uri, TV2Util.getStr('live.accesskey'))); + links.push(new this.TV2Link('snapshot_stage_swap', snapshoturl, tv2_uri, TV2Util.getStr('stage.accesskey'))); + links.push(new this.TV2Link('test_stage_swap', testurl, tv2_uri, TV2Util.getStr('test.accesskey'))); + links.push(new this.TV2Link('testprompt_swap', testprompturl, tv2_uri, TV2Util.getStr('testprompt.accesskey'), 'promptInitials')); + } else { // must be test + links.push(new this.TV2Link('test_live_swap', liveurl, tv2_uri, TV2Util.getStr('live.accesskey'))); + links.push(new this.TV2Link('test_snapshot_swap', snapshoturl, tv2_uri, TV2Util.getStr('snapshot.accesskey'))); + links.push(new this.TV2Link('test_stage_swap', stageurl, tv2_uri, TV2Util.getStr('stage.accesskey'))); + if (tv2_user != initials) { + links.push(new this.TV2Link('test_swap', testurl, tv2_uri, TV2Util.getStr('test.accesskey'))); + } + links.push(new this.TV2Link('testprompt_swap', testprompturl, tv2_uri, TV2Util.getStr('testprompt.accesskey'), 'promptInitials')); + } + + links.push(new this.TV2LinkSplit()); + + // Add link to .opdatering, .template, .robot + var _prefix = (tv2_testsite ? git_sitename : live_sitename) + (tv2_branch?'.'+tv2_branch:'') + (tv2_user ? '.' + tv2_user : ''); + var _postfix = (tv2_testsite ? '.'+tv2_apptype+'.'+tv2_testsite : '') + '.tv2.dk'; + var opdatering = _prefix + '.opdatering' + _postfix; + //var template = _prefix + '.template' + _postfix; + var robot = _prefix + '.robot' + _postfix; + var normal = (tv2_testsite ? _prefix + '.' + tv2_apptype + '.' + tv2_testsite + '.tv2.dk' + : live_sitename_complete); + links.push(new this.TV2Link('opdatering_swap', (tv2_sitetype!='opdatering')?opdatering:normal, '/', + (tv2_sitetype!='opdatering') ? TV2Util.getStr('opdatering.accesskey') : TV2Util.getStr('webroot.accesskey'))); + /*links.push(new this.TV2Link('template_swap', (tv2_sitetype!='template')?template:normal, '/', + (tv2_sitetype!='template') ? TV2Util.getStr('template.accesskey') : TV2Util.getStr('webroot.accesskey'))); */ + links.push(new this.TV2Link('robot_swap', (tv2_sitetype!='robot')?robot:normal, '/', + (tv2_sitetype!='robot') ? TV2Util.getStr('robot.accesskey') : TV2Util.getStr('webroot.accesskey'))); + + links.push(new this.TV2LinkSplit()); + + // Add the GitWeb link, inspired by ViewCVS link, inspired by Adrian Bak (ADBA) + var gitweb = 'http://flimmer.i.tv2.dk/git/?p=' + + git_sitename + '.tv2.dk.git;hb=HEAD;f=' + (tv2_sitetype?tv2_sitetype:'webroot'); + var php = this._reg_php.exec(tv2_uriOnly); + if (php) { + gitweb += php[1]; + } else if(tv2_uriOnly.substr(-1) == '/') { + // we add 'index.php' and say that's it! :-) + gitweb += tv2_uriOnly + 'index.php'; + } else { + gitweb += tv2_uriOnly; + } + var gitweb_source = gitweb + ';a=blob'; + gitweb += ';a=history'; + // we set a nice type so we can swap between using the button (test<>gitweb, live<>gitweb,...) + var gitweb_type; + if (!tv2_testsite) { + gitweb_type = 'gitweb_live'; + } else if (tv2_testtype == 'snapshot') { + gitweb_type = 'gitweb_snapshot'; + } else if (tv2_testtype == 'stage') { + gitweb_type = 'gitweb_stage'; + } else { + gitweb_type = 'gitweb_test'; + } + links.push(new this.TV2LinkWithLabel(gitweb_type, TV2Util.getStr('lookupInGitWebSource'), gitweb_source, + TV2Util.getStr('lookupInGitWebSource.accesskey'))); + links.push(new this.TV2LinkWithLabel(gitweb_type, TV2Util.getStr('lookupInGitWeb'), gitweb, + TV2Util.getStr('lookupInGitWeb.accesskey'))); + + // Update and I2 base URL + var updatepostfix = (tv2_user ? '.' + tv2_user : '') + + '.opdatering' + + (tv2_testtype ? '.php5.' + tv2_testtype : '') + '.tv2.dk' + var i2link = 'http://i2' + updatepostfix; + + // Check if we are on an Tango or I2 interface, then we can extract the URL again + var onI2interface; + var onI2interface_url; + if (tv2_sitetype == 'opdatering' && tv2_sitename == 'i2') { + var tangoif = this._reg_fromi2if.exec(tv2_uri); + if (tangoif) { + onI2interface = tangoif[1]; + onI2interface_url = decodeURIComponent(tangoif[4]); + } + } + + // Add Tango lookup link + var i2tango = i2link + '/tango/entry.php?url='; + var tango = encodedURL; + var docWin = getBrowser().contentWindow; + if (docWin.wrappedJSObject && docWin.wrappedJSObject.Tango_URL) { + tango = encodeURIComponent(docWin.wrappedJSObject.Tango_URL); + links.push(new this.TV2LinkWithLabel('tango/dynamic', TV2Util.getStr('viewDynamicVersion'), + i2link + '/tango/dynamic.php?url='+tango+'&referer='+encodedURL, + TV2Util.getStr('viewDynamicVersion.accesskey'), + 'flushCache')); + } + if (onI2interface != 'tango/entry' && onI2interface != 'tango/requeue') { + links.push(new this.TV2LinkWithLabel('tango/entry', TV2Util.getStr('lookupInTango'), + i2link + '/tango/entry.php?url=' + tango, TV2Util.getStr('lookupInTango.accesskey'))); + links.push(new this.TV2LinkWithLabel('tango/requeue', TV2Util.getStr('requeueInTango'), + i2link + '/tango/requeue.php?url=' + tango, TV2Util.getStr('requeueInTango.accesskey'))); + } + + // Add run pdo_log link + if ((onI2interface != 'tool/pdo_log/frameset') && + ((!tv2_testsite && !php4) || // only php5 live sites + (tv2_testsite && tv2_apptype != 'php4'))) { /* not supported on php4 sites */ + links.push(new this.TV2LinkWithLabel('tool/pdo_log/frameset', TV2Util.getStr('performDbPdoLog'), + i2link + '/tool/pdo_log/frameset.php?url='+tango+'&autostop=1&prefix='+initials, + TV2Util.getStr('performDbPdoLog.accesskey'), + 'flushCache')); + } + +// if (TV2Util.getPref('enable-secret', false)) { +// } + + if (onI2interface_url) { + /* link entered in I2 interface */ + links.push(new this.TV2LinkSplit()); + /* tango/entry, tango/requeue, tango/dynamic, tool/pdo_log */ + links.push(new this.TV2LinkWithLabel(onI2interface, onI2interface_url, onI2interface_url, TV2Util.getStr('backI2.accesskey'))); + } + + // Some special cases for some sites + if (tv2_sitename == 'ttv') { + links.push(new this.TV2LinkSplit()); + var ttv_page = /side=([0-9]+)/.exec(tv2_uri); + var ttvpumpelink = 'ttvpumpe'+updatepostfix; + if (ttv_page) { + skip_treenodes = true; + links.push(new this.TV2LinkWithLabel('ttvpage', TV2Util.getStr('lookupTTVPage') + ' ' + ttv_page[1], + 'http://' + ttvpumpelink + '/?channel=TV+2&page=' + ttv_page[1] + '#' + ttv_page[1], /* hardcoded to TV 2 TTV */ + TV2Util.getStr('lookupTTVPage.accesskey'))); + } + /*links.push(new this.TV2Link('ttvpumpe', ttvpumpelink, '/', TV2Util.getStr('ttvpumpe.accesskey')));*/ + links.push(new this.TV2Link('ttvpumpe', 'ttvpumpe.opdatering.tv2.dk', '/', TV2Util.getStr('ttvpumpe.accesskey'))); + } + + // I2-Files and I2-Images + if (tv2_sitename == 'i2-files' || tv2_sitename == 'i2-images' || tv2_sitename == 'i2') { + var contentId = this._reg_i2files.exec(tv2_uriOnly); + if (contentId) { + var typeId; + var typeName; + skip_treenodes = true; + if (tv2_sitename == 'i2-files') { + typeId = 74; // I2_File (and subtypes) + typeName = 'I2_File'; + } else { + if (tv2_uriOnly.substr(0,2)=='/s') { + typeId = 8; typeName = 'I2_Image_Selection'; + } else { + typeId = 7; typeName = ' I2_Image'; + } + } + links.push(new this.TV2LinkSplit()); + links.push(new this.TV2LinkWithLabel('i2files', TV2Util.getStr('lookupContent') + ' ' + contentId[1] + ', ' + + TV2Util.getStr('lookupContent.type') + ' ' + typeName, + i2link + + '/tool/query/?id=&_checkbox=1&2=&3='+typeId+'&content_id='+contentId[1]+'&4=&5=0&6=&action=Query&timeout=1', + TV2Util.getStr('lookupContent.accesskey') + )); + } + } + + // Sputnik R7 program links + if (tv2_sitename == 'sputnik') { + var programId = this._reg_r7program.exec(tv2_uriOnly); + if (programId) { + skip_treenodes = true; + links.push(new this.TV2LinkSplit()); + links.push(new this.TV2LinkWithLabel('r7program', TV2Util.getStr('lookupR7Program') + ' ' + programId[1], + i2link + + '/tool/r7/?1='+programId[1], + TV2Util.getStr('lookupR7Program.accesskey') + )); + } + } + + // Try to extract node id and add links to the node tool + if (!skip_treenodes) { + var i2node = i2link + '/tool/node/?id='; + var nodeids; + var first = true; + while ((nodeids = this._reg_nodeid.exec(tv2_uri)) != null) { + if (first) { + links.push(new this.TV2LinkSplit()); + first = false; + } + links.push(new this.TV2LinkWithLabel('node', TV2Util.getStr('lookupTreeNode') + ' ' + nodeids[1], + i2node + nodeids[1], + TV2Util.getStr('lookupTreeNode.accesskey') + )); + } + } + + } else { + + /* Add links to the site if viewing info at GitWeb site */ + if (fromgitweb) { + var tv2_sitename = fromgitweb[1]; + var tv2_sitetype = fromgitweb[2]; + var tv2_uri = fromgitweb[3]; + + // cut off 'index.php' + if (tv2_uri.substr(-10) == '/index.php') { + tv2_uri = tv2_uri.substr(0, tv2_uri.length-9); + } + + // php4 sites + var php4 = this._isPhp4(tv2_sitename); + var appType = php4 ? 'php4.' : 'php5.'; + + var live_sitename = (tv2_sitetype=='webroot' && tv2_sitename=='www') ? '': (tv2_sitename+'.'); + var type = (tv2_sitetype=='webroot')? '' : tv2_sitetype+'.'; + + links.push(new this.TV2Link('gitweb_live', live_sitename + type + 'tv2.dk', tv2_uri, TV2Util.getStr('live.accesskey'))); + links.push(new this.TV2Link('gitweb_test', tv2_sitename + '.' + initials + '.' + type + appType + 'test' + '.tv2.dk', tv2_uri, TV2Util.getStr('test.accesskey'))); + links.push(new this.TV2Link('gitweb_snapshot', tv2_sitename + '.' + type + appType + 'snapshot' + '.tv2.dk', tv2_uri, TV2Util.getStr('snapshot.accesskey'))); + links.push(new this.TV2Link('gitweb_stage', tv2_sitename + '.' + type + appType + 'stage' + '.tv2.dk', tv2_uri, TV2Util.getStr('stage.accesskey'))); + links.push(new this.TV2Link('gitweb_testprompt', tv2_sitename + '.?.' + type + appType + 'test' + '.tv2.dk', tv2_uri, TV2Util.getStr('testprompt.accesskey'), 'promptInitials')); + + } else { + links.push(new this.TV2LinkWithLabel('disabled', TV2Util.getStr('notTV2Site'), null, '', null, true)); + links.push(new this.TV2LinkSplit()); + links.push(new this.TV2Link('tv2dk', 'tv2.dk', '/', TV2Util.getStr('tv2dk.accesskey'))); + } + } + + // Utility links + links.push(new this.TV2LinkSplit()); + links.push(new this.TV2LinkWithLabel('link_tree', TV2Util.getStr('i2Tree'), 'http://i2.opdatering.tv2.dk/tree/', TV2Util.getStr('i2Tree.accesskey'))); + links.push(new this.TV2LinkWithLabel('node', TV2Util.getStr('nodeInformationTool'), 'http://i2.opdatering.tv2.dk/tool/node/', TV2Util.getStr('nodeInformationTool.accesskey'))); + links.push(new this.TV2LinkWithLabel('link_query', TV2Util.getStr('nodeQueryTool'), 'http://i2.opdatering.tv2.dk/tool/query/', TV2Util.getStr('nodeQueryTool.accesskey'))); + links.push(new this.TV2LinkWithLabel('tango/entry', TV2Util.getStr('tangoInterface'), 'http://i2.opdatering.tv2.dk/tango/', TV2Util.getStr('tangoInterface.accesskey'))); + links.push(new this.TV2LinkWithLabel('w3c', TV2Util.getStr('w3c'), + 'http://validator.jkkn.net/check?uri=' + encodedURL, TV2Util.getStr('w3c.accesskey'))); + links.push(new this.TV2LinkWithLabel('flushcache', TV2Util.getStr('flushCache'), + '-', TV2Util.getStr('flushCache.accesskey'), 'flushCache')); + + return links; + + }, + + /* fill in menu onbefore popup event */ + fillMenu: function(event) { + var menu = event.target; + var links = this.getLinks(); + this.emptyMenu(menu); + + var defSet = false; + for (var i=0; i