Selaa lähdekoodia

Add advanced options

simov 9 vuotta sitten
vanhempi
sitoutus
46bc07ab09
6 muutettua tiedostoa jossa 75 lisäystä ja 2 poistoa
  1. 1 1
      background/background.js
  2. 11 0
      content/options.html
  3. 53 0
      content/options.js
  4. 7 1
      content/popup.js
  5. 1 0
      css/popup.css
  6. 2 0
      manifest.json

+ 1 - 1
background/background.js

@@ -12,7 +12,7 @@ chrome.storage.sync.get((sync) => {
   }
   if (!sync.path) {
     chrome.storage.sync.set({path:
-      '/.*\\/.*\\.(?:markdown|mdown|mkdn|md|mkd|mdwn|mdtxt|mdtext|text)(?:#.*)?$/'
+      '.*\\/.*\\.(?:markdown|mdown|mkdn|md|mkd|mdwn|mdtxt|mdtext|text)(?:#.*)?$'
     })
   }
 })

+ 11 - 0
content/options.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+  <title>Markdown Viewer</title>
+  <script src="/vendor/mithril.min.js" type="text/javascript" charset="utf-8"></script>
+</head>
+<body>
+</body>
+<script src="/content/options.js" type="text/javascript" charset="utf-8"></script>
+</html>

+ 53 - 0
content/options.js

@@ -0,0 +1,53 @@
+
+m.mount(document.querySelector('body'), {
+  controller: function () {
+    var ctrl = {
+      origins: []
+    }
+    ctrl.add = () => {
+      chrome.permissions.request({
+        origins: [document.querySelector('input').value]
+      }, (granted) => {
+        if (granted) {
+          ctrl.all()
+          document.querySelector('input').value = ''
+        }
+      })
+    }
+    ctrl.remove = (origin) => () => {
+      chrome.permissions.remove({
+        origins: [origin]
+      }, (removed) => {
+        if (removed) {
+          var index = ctrl.origins.indexOf(origin)
+          ctrl.origins.splice(index, 1)
+          m.redraw()
+        }
+      })
+    }
+    ctrl.all = () => {
+      chrome.permissions.getAll((res) => {
+        ctrl.origins = res.origins
+        m.redraw()
+      })
+    }
+    ctrl.all()
+    return ctrl
+  },
+  view: (ctrl) =>
+    m('div', [
+      m('h1', 'Permissions'),
+      m('p', 'Read and change your data on:'),
+      m('table', ctrl.origins.map((origin) =>
+        m('tr', [
+          m('td', origin),
+          m('td', m('button', {onclick: ctrl.remove(origin)}, 'Remove'))
+        ])
+      )),
+      m('form', [
+        m('label', 'Origin'),
+        m('input[placeholder="https://raw.githubusercontent.com"]'),
+        m('button[type=button]', {onclick: ctrl.add}, 'Add')
+      ])
+    ])
+})

+ 7 - 1
content/popup.js

@@ -57,6 +57,10 @@ m.mount(document.querySelector('body'), {
           chrome.extension.sendMessage({message: 'settings'}, init)
         })
         return false
+      },
+      advancedOptions: () => {
+        chrome.extension.sendMessage({message: 'advanced'})
+        return false
       }
     }
   },
@@ -84,7 +88,9 @@ m.mount(document.querySelector('body'), {
             ' ' + key
           )
         )
-      ))
+      )),
+
+      m('a[href=""]', {onclick: ctrl.advancedOptions}, 'Advanced Options')
     ])
   }
 })

+ 1 - 0
css/popup.css

@@ -14,3 +14,4 @@ select { width: 200px; }
 [type=checkbox] { position: relative; z-index: 1; top: 2px; }
 h4 { clear: both; padding: 10px 0 2px 0; }
 a:nth-child(2) { float: right; }
+ul { padding: 0 0 10px 0; }

+ 2 - 0
manifest.json

@@ -13,6 +13,8 @@
     "default_popup": "/content/popup.html"
   },
 
+  "options_page": "/content/options.html",
+
   "background" : {
     "scripts": [
       "/vendor/marked.js",