aboutsummaryrefslogblamecommitdiffstats
path: root/lib/main.js
blob: b7875c3b870ef6e4ef1c5b41b7d74f7558dcbb1e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                                                             
             
                                     
                           
                                  
                                   

                               
                                      
                                          
 
 
   
  

                            






                                                              
                                                                 
   

 
 

                                                                      
                    
                      
                                  
          





                             



                                                      

                                      
                                                            



                                  
                                            








                                                           
                                          


                                      
                                  


                                    
                                                                    
                         

                                                           






                                                       

  
 
                              
                                       
                                 
                                     

                                        
                                               
                                                    
                                          
                                  
                                           
                                                 
                                                
                                         
                                                      
                                            
                                          
                                            
                                       
                                       
                                  
  
 

                                                                    
 
                             
                   
                           



                                               

                                    






                                                   



     

                                                                    
 
                 
                         

                                                      

   
 
                                                                
                  

                              

                                           
   

   
 
                  

                                  

                                                


                                      

   
                                                                  
//Released under the MIT/X11 license
//http://www.opensource.org/licenses/mit-license.php

//Links to read through
//http://ehsanakhgari.org/blog/2010-01-07/bugzilla-tweaks-enhanced
//http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/tip/bugzillatweaks
//http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/ecfa0f028b81/bugzillatweaks/lib/main.js
//http://hg.mozilla.org/users/avarma_mozilla.com/atul-packages/file/42ac1e99a107/packages\
///facebook-acquaintances/lib/main.js#l11
//http://ehsanakhgari.org/blog/2010-05-31/my-experience-jetpack-sdk#comment-1253

"use strict";
var browser = require("tab-browser");
var self = require("self");
var pageMod = require("page-mod");
var libbz = require("libbugzilla");
var tabs = require("tabs");
var logger = require("logger");
var Message = require("util").Message;
var contextMenu = require("context-menu");


/**
 *
 */
function skipThisPage(doc) {
  var stemURL = "https://HOSTNAME/show_bug.cgi?id=";
  var titleElems = doc.getElementsByTagName("title");
  var titleStr = titleElems[0].textContent;
  var REArr = new RegExp("[bB]ug\\s+([0-9]+)").exec(titleStr);
  var hostname = doc.location.hostname;
  if (REArr) {
    var bugNo = REArr[1];
    doc.location = stemURL.replace("HOSTNAME", hostname) + bugNo;
  }
}


var messageHandler = exports.messageHandler = function messageHandler(
    worker, msg) {
  switch (msg.cmd) {
  case "AddLogRecord":
    logger.addLogRecord(msg.data);
    break;
  case "ClearTS":
    logger.clearTimeSheet();
    break;
  case "ImportTS":
    logger.importTimeSheet();
    break;
  case "GetTSData":
    worker.postMessage(new Message("ReturningLogData",
      logger.getAllRecords()));
    break;
  case "GetInstalledPackages":
    // send message with packages back
    libbz.getInstalledPackages(msg.data, function(pkgsMsg) {
      worker.postMessage(pkgsMsg);
    });
    break;
  case "GetClipboard":
    libbz.getClipboard(function(clipboard) {
      worker.postMessage(new Message(msg.data, clipboard));
    });
    break;
  case "SetClipboard":
    libbz.setClipboard(msg.data);
    break;
  case "ChangeJSONURL":
    libbz.changeJSONURL();
    break;
  // Needed because Panel is add-on module
  case "OpenURLinPanel":
    libbz.openURLInNewPanel(msg.data);
    break;
  // Needed because of tabs.open()
  case "OpenURLinTab":
    libbz.openURLInNewTab(msg.data);
    break;
  // Needed because creating additional page-mods on remote bugzilla
  case "OpenBugUpstream":
    libbz.createUpstreamBug(msg.data.url, msg.data.subject,
        msg.data.comment);
    break;
  case "testReady":
    // we ignore it here, interesting only in unit test
    break;
  default:
    console.error(msg.toSource());
  }
};


var contentScriptLibraries = [
    self.data.url('tweaks/urltest.js'),
    self.data.url("lib/util.js"),
    self.data.url("lib/rpcutils.js"),
    self.data.url("lib/jumpNextBug.js"),
    self.data.url("lib/queries.js"),
    self.data.url("lib/collectingMetadata.js"),
    self.data.url("tweaks/preprocessDuplicates.js"),
    self.data.url("tweaks/viewSource.js"),
    self.data.url("lib/color.js"),
    self.data.url("tweaks/addNewLinks.js"),
    self.data.url("lib/bugzillaDOMFunctions.js"),
    self.data.url("rhlib/xorgBugCategories.js"),
    self.data.url("lib/otherButtons.js"),
    self.data.url("rhlib/makeBacktraceAttachment.js"),
    self.data.url("rhlib/fixingAttMIME.js"),
    self.data.url("lib/logging-front.js"),
    self.data.url('tweaks/bug-page-mod.js'),
    self.data.url('mozlib/mozpage.js'),
    self.data.url("rhlib/rhbzpage.js"),
    self.data.url("lib/bzpage.js")
];

var mainPMRE = new RegExp("http[s]?:\\/\\/bug(zilla|s)\\.[^\\/]*?" +
  "\\/show_bug.cgi\\?id=.*");

libbz.initialize(function() {
  pageMod.PageMod({
    include : [ mainPMRE ],
    contentScriptWhen : 'ready',
    contentScriptFile : contentScriptLibraries,
    onAttach : function onAttach(worker, msg) {
      worker.on('message', function(msg) {
        messageHandler(worker, msg);
      });
      worker.port.on('GetURL', function (command) {
        libbz.getURL(command.url,
          function(stuff) {
            worker.port.emit(command.backMessage,
                stuff);
          });
      });
    }
  });
});

var skipPGRE = new RegExp("http[s]?:\\/\\/bug(zilla|s)\\.[^\\/]*?" +
  "\\/(process_bug|post_bug|attachment).cgi");

pageMod.PageMod({
  include : [ skipPGRE ],
  contentScriptWhen : 'ready',
  contentScriptFile : self.data.url("lib/skip-bug.js")
});


//Allow toggling of CC event displays using a context menu entry
contextMenu.Item({
  label : "Toggle CC History",
  contentScriptFile : [
      self.data.url('tweaks/urltest.js'),
      self.data.url('tweaks/cc-context.js')
  ]
});


contextMenu.Item({
  label : "Copy Check-in Comment",
  contentScriptFile : [
      self.data.url('tweaks/urltest.js'),
      self.data.url('tweaks/checkin-context.js')
  ],
  onMessage : function(comment) {
    require("clipboard").set(comment);
  }
});
//tabs.open("https://bugzilla.redhat.com/show_bug.cgi?id=710548");