Browse Source

Move report issue and error log to browserAction context menu.

Also adds context menu item for toggling Quick Switch. Fix #464.
The context menu can be opened by right-clicking the browserAction icon.
FelisCatus 10 years ago
parent
commit
97de45e892

+ 4 - 1
omega-locales/ach/LC_MESSAGES/omega-web.po

@@ -1012,7 +1012,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1114,3 +1114,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspect proxy used for this Element"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/cs/LC_MESSAGES/omega-web.po

@@ -1005,7 +1005,7 @@ msgid "popup_reportIssues"
 msgstr "Report problémů"
 
 msgid "popup_errorLog"
-msgstr "Protokol chyb"
+msgstr "Exportovat Protokol chyb"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ chybových požadavků"
@@ -1110,3 +1110,6 @@ msgstr "Zkontrolujte, zda server proxy používaná tento prvek"
 
 msgid "contextMenu_inspectElement"
 msgstr "Zkontrolujte, zda server proxy používaná tento prvek"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Povolit Rychlé přepínání"

+ 4 - 1
omega-locales/en_US/LC_MESSAGES/omega-web.po

@@ -1000,7 +1000,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1096,3 +1096,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspect proxy used for this Element"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/es_AR/LC_MESSAGES/omega-web.po

@@ -1015,7 +1015,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1117,3 +1117,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspeccionar proxy utilizado para este Elemento."
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/fa/LC_MESSAGES/omega-web.po

@@ -1013,7 +1013,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1115,3 +1115,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspect proxy used for this Element"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/ja/LC_MESSAGES/omega-web.po

@@ -1008,7 +1008,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1105,3 +1105,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspect proxy used for this Element"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/ru/LC_MESSAGES/omega-web.po

@@ -1017,7 +1017,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1119,3 +1119,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspect proxy used for this Element"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/tr/LC_MESSAGES/omega-web.po

@@ -1014,7 +1014,7 @@ msgid "popup_reportIssues"
 msgstr "Report issues"
 
 msgid "popup_errorLog"
-msgstr "Error log"
+msgstr "Save error log"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$ failed resources"
@@ -1111,3 +1111,6 @@ msgstr "Inspect proxy to be used if this Link is opened"
 
 msgid "contextMenu_inspectElement"
 msgstr "Inspect proxy used for this Element"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "Enable Quick Switch"

+ 4 - 1
omega-locales/zh_CN/LC_MESSAGES/omega-web.po

@@ -879,7 +879,7 @@ msgid "popup_reportIssues"
 msgstr "反馈问题"
 
 msgid "popup_errorLog"
-msgstr "错误日志"
+msgstr "保存错误日志"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$个资源未加载"
@@ -975,3 +975,6 @@ msgstr "检查此[链接目标]将会使用的代理"
 
 msgid "contextMenu_inspectElement"
 msgstr "检查此[元素]使用的代理"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "启用快速切换"

+ 4 - 1
omega-locales/zh_TW/LC_MESSAGES/omega-web.po

@@ -879,7 +879,7 @@ msgid "popup_reportIssues"
 msgstr "反饋問題"
 
 msgid "popup_errorLog"
-msgstr "錯誤日誌"
+msgstr "儲存错误日志"
 
 msgid "popup_requestErrorCount"
 msgstr "$COUNT$個資源未載入"
@@ -975,3 +975,6 @@ msgstr "檢查此[連結目標]將會使用的代理"
 
 msgid "contextMenu_inspectElement"
 msgstr "檢查此[元素]使用的代理"
+
+msgid "contextMenu_enableQuickSwitch"
+msgstr "啟用快速切換"

+ 56 - 0
omega-target-chromium-extension/background_preload.coffee

@@ -0,0 +1,56 @@
+window.UglifyJS_NoUnsafeEval = true
+localStorage['log'] = ''
+localStorage['logLastError'] = ''
+
+window.OmegaContextMenuQuickSwitchHandler = -> null
+# We don't need this API. However its presence indicates that Chrome >= 35
+# which provides info.checked we need in contextMenu callback.
+# https://developer.chrome.com/extensions/contextMenus
+if chrome.i18n.getUILanguage?
+  # We must create the menu item here before others to make it first in menu.
+  chrome.contextMenus.create({
+    id: 'enableQuickSwitch'
+    title: chrome.i18n.getMessage('contextMenu_enableQuickSwitch')
+    type: 'checkbox'
+    checked: false
+    contexts: ["browser_action"]
+    onclick: (info) -> window.OmegaContextMenuQuickSwitchHandler(info)
+  })
+
+chrome.contextMenus.create({
+  title: chrome.i18n.getMessage('popup_reportIssues')
+  contexts: ["browser_action"]
+  onclick: ->
+    url = 'https://github.com/FelisCatus/SwitchyOmega/issues/new?title=&body='
+    finalUrl = url
+    try
+      extensionVersion = chrome.runtime.getManifest().version
+      env =
+        extensionVersion: extensionVersion
+        projectVersion: extensionVersion
+        userAgent: navigator.userAgent
+      body = chrome.i18n.getMessage('popup_issueTemplate', [
+        env.projectVersion, env.userAgent
+      ])
+      body ||= """
+        \n\n
+        <!-- Please write your comment ABOVE this line. -->
+        SwitchyOmega #{env.projectVersion}
+        #{env.userAgent}
+      """
+      finalUrl = url + encodeURIComponent(body)
+      err = localStorage['logLastError']
+      if err
+        body += "\n```\n#{err}\n```"
+        finalUrl = (url + encodeURIComponent(body)).substr(0, 2000)
+
+    chrome.tabs.create(url: finalUrl)
+})
+
+chrome.contextMenus.create({
+  title: chrome.i18n.getMessage('popup_errorLog')
+  contexts: ["browser_action"]
+  onclick: ->
+    blob = new Blob [localStorage['log']], {type: "text/plain;charset=utf-8"}
+    saveAs(blob, "OmegaLog_#{Date.now()}.txt")
+})

+ 3 - 3
omega-target-chromium-extension/grunt/coffee.coffee

@@ -2,9 +2,9 @@ module.exports =
   target_web:
     files:
       'build/js/omega_target_web.js': 'omega_target_web.coffee'
-  target_web_log:
-    files:
-      'build/js/omega_target_web_basics.js': 'omega_target_web_basics.coffee'
   background:
     files:
       'build/js/background.js': 'background.coffee'
+  background_preload:
+    files:
+      'build/js/background_preload.js': 'background_preload.coffee'

+ 0 - 13
omega-target-chromium-extension/omega_target_web_basics.coffee

@@ -1,13 +0,0 @@
-window.OmegaTargetWebBasics =
-  getLog: (callback) ->
-    callback(localStorage['log'] || '')
-  getError: (callback) ->
-    callback(localStorage['logLastError'] || '')
-  getEnv: (callback) ->
-    extensionVersion = chrome.runtime.getManifest().version
-    callback({
-      extensionVersion: extensionVersion
-      projectVersion: extensionVersion
-      userAgent: navigator.userAgent
-    })
-  getMessage: chrome.i18n.getMessage.bind(chrome.i18n)

+ 1 - 0
omega-target-chromium-extension/overlay/background.html

@@ -8,6 +8,7 @@
   <canvas id="canvas-icon"></canvas>
   <canvas id="canvas-icon-2x"></canvas>
   <script src="js/log_error.js"></script>
+  <script src="lib/FileSaver/FileSaver.js"></script>
   <script src="js/background_preload.js"></script>
   <script src="js/omega_pac.min.js"></script>
   <script src="js/omega_target.min.js"></script>

+ 0 - 3
omega-target-chromium-extension/overlay/js/background_preload.js

@@ -1,3 +0,0 @@
-window.UglifyJS_NoUnsafeEval = true
-localStorage['log'] = ''
-localStorage['logLastError'] = ''

+ 19 - 2
omega-target-chromium-extension/src/options.coffee

@@ -1,4 +1,4 @@
-OmegaTarget = require('omega-target')
+OcontextMenu_inspectElementmegaTarget = require('omega-target')
 OmegaPac = OmegaTarget.OmegaPac
 Promise = OmegaTarget.Promise
 xhr = Promise.promisify(require('xhr'))
@@ -165,7 +165,24 @@ class ChromeOptions extends OmegaTarget.Options
       return
 
   _quickSwitchInit: false
-  setQuickSwitch: (quickSwitch) ->
+  _quickSwitchContextMenuCreated: false
+  _quickSwitchCanEnable: false
+  setQuickSwitch: (quickSwitch, canEnable) ->
+    @_quickSwitchCanEnable = canEnable
+    if not @_quickSwitchContextMenuCreated
+      @_quickSwitchContextMenuCreated = true
+      if quickSwitch
+        chrome.contextMenus.update('enableQuickSwitch', {checked: true})
+      window.OmegaContextMenuQuickSwitchHandler = (info) =>
+        changes = {}
+        changes['-enableQuickSwitch'] = info.checked
+        setOptions = @_setOptions(changes)
+        if info.checked and not @_quickSwitchCanEnable
+          setOptions.then ->
+            chrome.tabs.create(
+              url: chrome.extension.getURL('options.html#/ui')
+            )
+
     if quickSwitch
       chrome.browserAction.setPopup({popup: ''})
       if not @_quickSwitchInit

+ 6 - 7
omega-target/src/options.coffee

@@ -391,14 +391,12 @@ class Options
   # @returns {Promise} A promise which is fulfilled when the quick switch is set
   ###
   reloadQuickSwitch: ->
+    profiles = @_options['-quickSwitchProfiles']
+    profiles = null if profiles.length < 2
     if @_options['-enableQuickSwitch']
-      profiles = @_options['-quickSwitchProfiles']
-      if profiles.length >= 2
-        @setQuickSwitch(profiles)
-      else
-        @setQuickSwitch(null)
+      @setQuickSwitch(profiles, !!profiles)
     else
-      @setQuickSwitch(null)
+      @setQuickSwitch(null, !!profiles)
 
   ###*
   # Apply the settings related to element proxy inspection.
@@ -594,9 +592,10 @@ class Options
   # Set or disable the quick switch profiles.
   # In base class, this method is not implemented and will not do anything.
   # @param {string[]|null} quickSwitch The profile names, or null to disable
+  # @param {boolean} canEnable Whether user can enable quick switch or not.
   # @returns {Promise} A promise which is fulfilled when the quick switch is set
   ###
-  setQuickSwitch: (quickSwitch) ->
+  setQuickSwitch: (quickSwitch, canEnable) ->
     Promise.resolve()
 
   ###*

+ 0 - 4
omega-web/src/coffee/popup.coffee

@@ -28,8 +28,6 @@ shortcutKeys =
   61: 'addRule' # =
   84: 'tempRule' # t
   79: 'option' # o
-  73: 'issue' # i
-  76: 'log' # l
   82: 'requestInfo' # r
 
 for i in [1..9]
@@ -63,8 +61,6 @@ jQuery(document).on 'keydown', (e) ->
             'addRule': 'A'
             'tempRule': 'T'
             'option': 'O'
-            'issue': 'I'
-            'log': 'L'
             'requestInfo': 'R'
           for shortcut, key of keys
             showHelp(shortcut, key)

+ 0 - 26
omega-web/src/coffee/popup_basics.coffee

@@ -1,26 +0,0 @@
-# Use events to ensure that the log can be downloaded even if everything else
-# fails to load.
-document.querySelector('.error-log').addEventListener 'click', (->
-  window.OmegaTargetWebBasics.getLog (log) ->
-    blob = new Blob [log], {type: "text/plain;charset=utf-8"}
-    saveAs(blob, "OmegaLog_#{Date.now()}.txt")
-), false
-
-window.OmegaTargetWebBasics.getEnv (env) ->
-  url = 'https://github.com/FelisCatus/SwitchyOmega/issues/new?title=&body='
-  body = window.OmegaTargetWebBasics.getMessage('popup_issueTemplate', [
-    env.projectVersion, env.userAgent
-  ])
-  body ||= """
-    \n\n
-    <!-- Please write your comment ABOVE this line. -->
-    SwitchyOmega #{env.projectVersion}
-    #{env.userAgent}
-  """
-  link = document.querySelector('.report-issue')
-  link.href = url + encodeURIComponent(body)
-  window.OmegaTargetWebBasics.getError (err) ->
-    return unless err
-    body += "\n```\n#{err}\n```"
-    final_url = url + encodeURIComponent(body)
-    link.href = final_url.substr(0, 2000) # Limit URL up to 2000 chars.

+ 0 - 14
omega-web/src/popup.jade

@@ -80,17 +80,6 @@ html(lang='en' ng-app='omegaPopup' ng-controller='PopupCtrl' ng-csp)
           span.glyphicon.glyphicon-wrench
           = ' '
           span {{'popup_showOptions' | tr}}
-      li
-        a.report-issue(href='https://github.com/FelisCatus/SwitchyOmega/issues'
-          target='_blank' data-shortcut='issue')
-          span.glyphicon.glyphicon-comment
-          = ' '
-          span {{'popup_reportIssues' | tr}}
-      li
-        a.error-log(href='#' role='button' data-shortcut='log')
-          span.glyphicon.glyphicon-download
-          = ' '
-          span {{'popup_errorLog' | tr}}
     form.condition-form(name='conditionForm' style='display: none;'
       ng-style='{display: showConditionForm ? "block" : "none"}'
       ng-submit='addCondition(rule.condition, rule.profileName)')
@@ -165,9 +154,6 @@ html(lang='en' ng-app='omegaPopup' ng-controller='PopupCtrl' ng-csp)
             ng-click='openOptions("#/general")') {{'popup_configureMonitorWebRequests' | tr}}
 
     script(src='js/log_error.js')
-    script(src='lib/FileSaver/FileSaver.js')
-    script(src='js/omega_target_web_basics.js')
-    script(src='js/popup_basics.js')
     script(src='lib/jquery/jquery.min.js')
     script(src='lib/angular/angular.min.js')
     script(src='lib/angular-bootstrap/ui-bootstrap-tpls.min.js')