diff options
| author | anekos | 2011-07-15 08:16:37 +0900 | 
|---|---|---|
| committer | anekos | 2011-07-15 08:19:26 +0900 | 
| commit | 9a749c3d75071195b239c4ea5bf2567fa2ea3398 (patch) | |
| tree | 35c2aab970a3f29dfed75a4a600b17b9ad3903db | |
| parent | f22218425207c8c3e6afc479b414d7001a6ef112 (diff) | |
| download | vimperator-plugins-9a749c3d75071195b239c4ea5bf2567fa2ea3398.tar.bz2 | |
フォームに書いたのを submit できるマッピング追加
| -rw-r--r-- | google-plus-commando.js | 62 | 
1 files changed, 36 insertions, 26 deletions
diff --git a/google-plus-commando.js b/google-plus-commando.js index 8188747..04e0276 100644 --- a/google-plus-commando.js +++ b/google-plus-commando.js @@ -35,7 +35,7 @@ THE POSSIBILITY OF SUCH DAMAGE.  // INFO {{{  let INFO =  <> -  <plugin name="GooglePlusCommando" version="1.6.0" +  <plugin name="GooglePlusCommando" version="1.7.0"            href="http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/google-plus-commando.js"            summary="The handy commands for Google+"            lang="en-US" @@ -84,7 +84,7 @@ let INFO =    // State {{{    const State = { -    cancel: null +    form: null    };    // }}} @@ -100,15 +100,16 @@ let INFO =    const Elements = {      get doc() content.document,      get currentEntry () MakeElement(Entry, Elements.doc.querySelector('.a-f-oi-Ai')), -    get postForm () Elements.doc.querySelector('#contentPane > div > div').nextSibling, -    //get postEditor () Elements.postForm.querySelector('.editable').parentNode, -    get postEditor () ( -      Elements.doc.querySelector('.n-Ob') -      || -      Elements.postForm.querySelector('.editable').parentNode -    ), -    get cancelPost () Elements.postEditor.querySelector('div.om[id$=".c"]'), -    get submitButton () Elements.postForm.querySelector('[role="button"]'), +    post: { +      //get editor () Elements.postForm.querySelector('.editable').parentNode, +      get editor () ( +        Elements.doc.querySelector('.n-Ob') +        || +        Elements.postForm.querySelector('.editable').parentNode +      ), +      get cancel () Elements.post.editor.querySelector('div.om[id$=".c"]'), +      get submit () Elements.doc.querySelector('[role="button"].d-s-r.tk3N6e-e.tk3N6e-e-qc.n-Ja-xg') +    },      get notification () Elements.doc.querySelector('#gbi1'),      get viewer () MakeElement(Viewer, Elements.doc.querySelector('.' + Names.viewer)),      get dialog () MakeElement(Dialog, Elements.doc.querySelector('.' + Names.dialog)) @@ -141,7 +142,8 @@ let INFO =        get plusone () root.querySelector('[g\\:type="plusone"]'),        get share () self.buttons[1],        get menu () root.querySelector('[role="menu"]'), -      get cancel () root.querySelector('[role="button"][id$=".cancel"]') +      get cancel () root.querySelector('[role="button"][id$=".cancel"]'), +      get submit () root.querySelector('[role="button"][id$=".post"]')      };      return self;    } @@ -202,14 +204,20 @@ let INFO =      comment: function() {        let entry = Elements.currentEntry;        click(entry.comment); -      State.cancel = function () click(entry.cancel); +      State.form = { +        cancel: function () click(entry.cancel), +        submit: function () click(entry.submit) +      };      },      plusone: function() click(Elements.currentEntry.plusone),      share: function() click(Elements.currentEntry.share),      post: function() {        buffer.scrollTop(); -      click(Elements.postEditor); -      State.cancel = function () click(Elements.cancelPost); +      click(Elements.post.editor); +      State.form = { +        cancel: function () click(Elements.post.cancel), +        submit: function () click(Elements.post.submit) +      };      },      yank: function () {        let e = Elements.currentEntry.permlink; @@ -230,11 +238,10 @@ let INFO =        click(Elements.doc.body);      },      submit: function () { -      for (let [, n] in Iterator(['dialog', 'viewer'])) { -        let e = Elements[n]; -        if (e && e.submit) -          return click(e.submit); -      } +      if (liberator.focus || !State.form) +        return; +      State.form.submit(); +      State.form = null;      },      unfold: function () {        click(Elements.currentEntry.unfold); @@ -248,7 +255,7 @@ let INFO =    const MatchingUrls = RegExp('^https://plus\\.google\\.com/*');    const MappingDescriptionSuffix = ' - Google plus Commando'; -  'comment plusone share next prev post yank notification cancel submit unfold'.split(/\s/).forEach(function (cmd) { +  function defineMapping (mode, cmd) {      let gv =        liberator.globalVariables[          'gplus_commando_map_' + @@ -258,7 +265,7 @@ let INFO =        return;      let func = Commands[cmd];      mappings.addUserMap( -      [modes.NORMAL], +      [mode],        gv.split(/\s+/),        cmd + MappingDescriptionSuffix,        function (count) { @@ -273,16 +280,19 @@ let INFO =          matchingUrls: MatchingUrls        }      ); -  }); +  } + +  'comment plusone share next prev post yank notification cancel unfold'.split(/\s/).forEach(defineMapping.bind(null, modes.NORMAL)); +  'submit'.split(/\s/).forEach(defineMapping.bind(null, modes.INSERT));    mappings.addUserMap(      [modes.INSERT],      ['<Esc>'],      'Escape from input area',      function () { -      if (!liberator.focus && State.cancel) { -        State.cancel(); -        State.cancel = null; +      if (!liberator.focus && State.form) { +        State.form.cancel(); +        State.form = null;          modes.reset();          return;        }  | 
