From abca4613e95d686d28b54677f1a020a84e103751 Mon Sep 17 00:00:00 2001 From: zimocode Date: Fri, 25 Oct 2019 19:26:11 +0800 Subject: [PATCH 1/9] homepage improve 0 --- css/inject/homepage.css | 9 +++++++++ js/background.js | 1 + js/inject/homepage.js | 32 +++++++++++++++++++++++++++++++- manifest.json | 2 +- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/css/inject/homepage.css b/css/inject/homepage.css index 4582218..878142a 100644 --- a/css/inject/homepage.css +++ b/css/inject/homepage.css @@ -60,4 +60,13 @@ smartup.su_apps#su_apps_homepage .su_homepage_li div span{ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; +} +smartup.su_apps#su_apps_homepage .su_homepage_listbox{ + background-color: #ccf; + height: 100%; + width: 200px; + position: absolute; + left: 0; + top: 0; + opacity: 0.9; } \ No newline at end of file diff --git a/js/background.js b/js/background.js index 69ed455..65139b0 100644 --- a/js/background.js +++ b/js/background.js @@ -4269,6 +4269,7 @@ var sub={ fetch(_configURL) .then(response=>response.json()) .then(json=>{ + console.log(_configURL); if(!localStorage.getItem("tbkjx_dataversion")||Number(json.version)>=sub.date.get()){ _url=_url+"?"+sub.date.get().toString(); localStorage.setItem("tbkjx_dataversion",json.version); diff --git a/js/inject/homepage.js b/js/inject/homepage.js index b366fcb..78aa862 100644 --- a/js/inject/homepage.js +++ b/js/inject/homepage.js @@ -7,7 +7,9 @@ sue.apps.homepage={ headTitle:"homepage", headCloseBtn:true, menu:[ - {src:"/image/options.png",title:"app_tip_opt",className:"menu_item menu_item_opt"} + {src:"/image/menu.svg",title:"app_homepage_list",className:"menu_item menu_item_homepage"}, + {src:"/image/options.png",title:"app_tip_opt",className:"menu_item menu_item_opt"}, + {src:"/image/edit.png",title:"app_homepage_edit",className:"menu_item menu_item_edit"} ], options:[ {type:"select",label:"n_optype",name:"n_optype",value:["s_new","s_back","s_current","s_incog"]}, @@ -28,6 +30,22 @@ sue.apps.homepage={ let theAppBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_box"]}); dom.querySelector(".su_main").appendChild(theAppBox); + // + let _listBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listbox"]}); + dom.appendChild(_listBox); + + let _listName=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listnamebox"]},null,null,null,"网站分组"); + _listBox.appendChild(_listName); + + let _listAddBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listaddbox"]}), + _listAddText=sue.apps.domCreate("input",{setName:["className","type"],setValue:["su_homepage_listaddtext","text"]}), + _listAddBtn=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_listaddbtn"]},null,null,null,"新增分组"); + _listAddBox.appendChild(_listAddText); + _listAddBox.appendChild(_listAddBtn); + _listBox.appendChild(_listAddBox); + + // + if(sue.apps.homepage.config.n_homepage_bg){ dom.querySelector(".su_head").style.background="none"; dom.querySelector(".su_main").style.cssText+="background:none;box-shadow:rgba(0,0,0,0.8) 0 0 5px;"; @@ -37,6 +55,18 @@ sue.apps.homepage={ sue.apps.homepage.initItem(); dom.addEventListener("click",this.handleEvent,false); + }, + listInit:function(){ + + }, + listSwitch:function(){ + + }, + listAdd:function(){ + + }, + listDel:function(){ + }, handleEvent:function(e){ switch(e.type){ diff --git a/manifest.json b/manifest.json index ed6fe6f..0fb735d 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "minimum_chrome_version": "22", "name": "smartUp Gestures(Beta)", "short_name":"smartUp", - "version": "6.5.1348.1026", + "version": "6.5.1348.1028", "description": "__MSG_ext_des__", "default_locale": "en", "author":"zimo", From 223c3df061c14ee65f4eb378aad7e62663fbd8ab Mon Sep 17 00:00:00 2001 From: zimocode Date: Sun, 27 Oct 2019 11:18:02 +0800 Subject: [PATCH 2/9] improve tbkjx --- css/inject/tbkjx.css | 21 ++++++++++++--- js/inject/tbkjx.js | 62 ++++++++++++++++++++++++++++++++++++++------ manifest.json | 2 +- 3 files changed, 73 insertions(+), 12 deletions(-) diff --git a/css/inject/tbkjx.css b/css/inject/tbkjx.css index 1f5bffe..05c5896 100644 --- a/css/inject/tbkjx.css +++ b/css/inject/tbkjx.css @@ -77,10 +77,25 @@ smartup.su_apps#su_apps_tbkjx .su_tbkjx_sortbtncur{ color: rgb(255, 255, 255); background: rgb(86, 119, 252); } +smartup.su_apps#su_apps_tbkjx .su_tbkjx_platform{ + margin-bottom: 2px; +} +smartup.su_apps#su_apps_tbkjx .su_tbkjx_platformbtn{ + font-size: 10px; + height: 18px; + line-height: 18px; + min-width: auto; + padding: 0 4px; + margin: 0; +} +smartup.su_apps#su_apps_tbkjx .su_tbkjx_platformbtn_cur{ + color: rgb(255, 255, 255); + background: rgb(86, 119, 252); +} smartup.su_apps#su_apps_tbkjx .su_tbkjx_extent{ /*padding: 4px 0;*/ padding: 0; - margin-bottom: 4px; + margin-bottom: 2px; } smartup.su_apps#su_apps_tbkjx .su_tbkjx_extenttext{ width: 35px; @@ -146,7 +161,7 @@ smartup.su_apps#su_apps_tbkjx .su_tbkjx_listjing{ padding-top: 86px; padding-top: 0; -margin-top: 106px; +margin-top: 120px; position: initial; } smartup.su_apps#su_apps_tbkjx .su_tbkjx_listjing ul{ @@ -158,7 +173,7 @@ height: 288px; overflow-y: auto; overflow-x: hidden; height: 328px; -height: 278px; +height: 264px; padding: 2px 0; } smartup.su_apps#su_apps_tbkjx .su_tbkjx_listjing li{ diff --git a/js/inject/tbkjx.js b/js/inject/tbkjx.js index 6fd83dc..434b973 100644 --- a/js/inject/tbkjx.js +++ b/js/inject/tbkjx.js @@ -1,6 +1,8 @@ console.log("tbkjx"); sue.apps.tbkjx={ - cons:{}, + cons:{ + platform:0 + }, initUI:function(){ let appInfo={ appName:"tbkjx", @@ -43,13 +45,21 @@ sue.apps.tbkjx={ _sortUp=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_sortbtn su_tbkjx_sortup"]},null,"margin:0 5px;",null,"价格由低到高"), _sortDn=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_sortbtn su_tbkjx_sortdn"]},null,null,null,"价格由高到低"), _sortCup=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_sortbtn su_tbkjx_sortcup"]},null,null,null,"优惠券额由低到高"), - _sortCdn=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_sortbtn su_tbkjx_sortcdn"]},null,"margin:4px;",null,"优惠券额由高到低"); + _sortCdn=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_sortbtn su_tbkjx_sortcdn"]},null,"margin:2px 4px;",null,"优惠券额由高到低"); headSort.appendChild(_sortReset); headSort.appendChild(_sortUp); headSort.appendChild(_sortDn); headSort.appendChild(_sortCup); headSort.appendChild(_sortCdn); + let headPlatform=sue.apps.domCreate("div",{setName:["className"],setValue:["su_tbkjx_platform"]}); + let _platformAll=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_platformbtn su_tbkjx_platformall"]},null,null,{setName:["platform"],setValue:["0"]},"所有平台"), + _platformTaobao=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_platformbtn su_tbkjx_platformtaobao"]},null,"margin:0 5px;",{setName:["platform"],setValue:["1"]},"淘宝"), + _platformTianmao=sue.apps.domCreate("button",{setName:["className"],setValue:["su_tbkjx_platformbtn su_tbkjx_platformtianmao"]},null,"margin:0 5px;",{setName:["platform"],setValue:["2"]},"天猫"); + headPlatform.appendChild(_platformAll); + headPlatform.appendChild(_platformTaobao); + headPlatform.appendChild(_platformTianmao); + let headExtent=sue.apps.domCreate("div",{setName:["className"],setValue:["su_tbkjx_extent"]}); let _extentSpan=sue.apps.domCreate("span",{setName:["className"],setValue:["su_tbkjx_extentspan"]},null,null,null,"价格范围:"), _extentFrom=sue.apps.domCreate("input",{setName:["className","id","placeholder","type"],setValue:["su_tbkjx_extenttext","su_tbkjx_extentfrom","最低价","text"]},null,null,null), @@ -74,6 +84,7 @@ sue.apps.tbkjx={ listHead.appendChild(boxSearch); listHead.appendChild(headSort); + listHead.appendChild(headPlatform); listHead.appendChild(headExtent); boxList.appendChild(listHead); @@ -133,7 +144,24 @@ sue.apps.tbkjx={ },500) }, initList:function(data,page){ - // sue.apps.tbkjx.cons.curData=data; + let getPlatformData=function(data){ + if(sue.apps.tbkjx.cons.platform==1){ + for(var i=data.length-1;i>=0;i--){ + if(data[i][5]==1){ + data.splice(i,1); + } + } + }else if(sue.apps.tbkjx.cons.platform==2){ + for(var i=data.length-1;i>=0;i--){ + if(data[i][5]==0){ + data.splice(i,1); + } + } + } + return data; + } + + data=getPlatformData(data.slice(0)); sue.apps.tbkjx.cons.curData=data.slice(0); //// let _listLength=sue.apps.tbkjx.config.n_num; @@ -211,6 +239,12 @@ sue.apps.tbkjx={ if(e.target.classList.contains("su_tbkjx_img")||(e.target.parentNode&&e.target.parentNode.classList.contains("su_tbkjx_qr"))){ sue.apps.tbkjx.showQR(); } + if(e.target.classList.contains("su_tbkjx_platformbtn")){ + sue.apps.tbkjx.cons.platform=Number(e.target.dataset.platform); + sue.apps.tbkjx.platformBtn(); + sue.apps.tbkjx.initList(sue.apps.tbkjx.cons.platformBase,0); + sue.apps.tbkjx.itemSort(sue.apps.tbkjx.cons.curSort); + } break; case"keypress": if(e.keyCode==13&&e.target.id=="su_tbkjx_searchkey"){ @@ -221,6 +255,13 @@ sue.apps.tbkjx={ break; } }, + platformBtn:function(){ + let platformBtns=sue.apps.tbkjx.dom.querySelectorAll(".su_tbkjx_platformbtn"); + for(var i=0;i Date: Sat, 1 Feb 2020 18:02:23 +0800 Subject: [PATCH 3/9] upgrade homepage --- css/inject/homepage.css | 59 ++++++++++++++++++ image/add.svg | 5 ++ js/background.js | 2 +- js/inject/homepage.js | 131 ++++++++++++++++++++++++++++++++++------ manifest.json | 2 +- 5 files changed, 177 insertions(+), 22 deletions(-) create mode 100644 image/add.svg diff --git a/css/inject/homepage.css b/css/inject/homepage.css index 878142a..e24ed52 100644 --- a/css/inject/homepage.css +++ b/css/inject/homepage.css @@ -17,6 +17,7 @@ smartup.su_apps#su_apps_homepage .su_homepage_cp{ position: absolute; right: 0; bottom: 0; + text-shadow: 0.5px 0.5px 0 #000000; } smartup.su_apps#su_apps_homepage ul{ /*padding: 10px;*/ @@ -69,4 +70,62 @@ smartup.su_apps#su_apps_homepage .su_homepage_listbox{ left: 0; top: 0; opacity: 0.9; + overflow: hidden auto; +} +smartup.su_apps#su_apps_homepage .su_homepage_listul{ + list-style-type: none; + margin: -2px 0; + padding: 2px 0; + background: #e7e9fd; + transition:all .4s ease-in-out; + opacity: 1; +} +smartup.su_apps#su_apps_homepage .su_homepage_listli{ + transition:all .3s ease-out; + text-align: right; + width: 100%; + height: 30px; + line-height: 30px; + font-size: 14px; + /*padding-right: 20px;*/ + cursor: pointer; + margin: 2px 0; + /*border-right: 3px solid transparent;*/ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +smartup.su_apps#su_apps_homepage .su_homepage_listli:hover, +smartup.su_apps#su_apps_homepage .su_homepage_listlicur{ + background: #a6baff; + /*border-right: 3px solid #5677fc !important;*/ + color: #3f51b5; +} +smartup.su_apps#su_apps_homepage .su_homepage_listlicur{ + color: #3f51b5; + font-weight: bold; +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddbox{ + border: 1px #fff0 solid; + border-radius: 20px; +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddbox:hover{ + border-color: #fff; + cursor: pointer; +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddbtnbox{ +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddbtnbox:hover{ +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddvaluebox{ + display: none; +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddtext{ + width: 80px; +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddbtn{ + min-width: auto; + min-height: auto; + height: 24px; + line-height: 24px; } \ No newline at end of file diff --git a/image/add.svg b/image/add.svg new file mode 100644 index 0000000..50395b3 --- /dev/null +++ b/image/add.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/js/background.js b/js/background.js index 65139b0..567642f 100644 --- a/js/background.js +++ b/js/background.js @@ -855,7 +855,7 @@ var appConfmodel={ recentclosed:{n_num:10,n_closebox:true}, synced:{n_closebox:true}, jslist:{n_closebox:true}, - homepage:{n_optype:"s_new",n_position:"s_default",n_pin:false,n_closebox:true,n_homepage_icon:true,n_homepage_bg:true,n_homepage_resize:true,type:"topsites",site:[{title:"Google",url:"https://www.google.com"}]}, + homepage:{n_optype:"s_new",n_position:"s_default",n_pin:false,n_closebox:true,n_homepage_icon:true,n_homepage_bg:true,n_homepage_resize:true,type:"topsites",sitegroup:["Default Group"],sites:[[{title:"smartUp Gestures",url:"https://smartup.zimoapps.com/"}]],site:[{title:"Google",url:"https://www.google.com"}]}, tbkjx:{n_num:50,n_optype:"s_new",n_position:"s_default",n_pin:false} } diff --git a/js/inject/homepage.js b/js/inject/homepage.js index 78aa862..a36eb92 100644 --- a/js/inject/homepage.js +++ b/js/inject/homepage.js @@ -7,9 +7,9 @@ sue.apps.homepage={ headTitle:"homepage", headCloseBtn:true, menu:[ - {src:"/image/menu.svg",title:"app_homepage_list",className:"menu_item menu_item_homepage"}, + {src:"/image/menu.svg",title:"app_homepage_list",className:"menu_item menu_item_homepagelist"}, {src:"/image/options.png",title:"app_tip_opt",className:"menu_item menu_item_opt"}, - {src:"/image/edit.png",title:"app_homepage_edit",className:"menu_item menu_item_edit"} + {src:"/image/edit.png",title:"app_homepage_edit",className:"menu_item menu_item_homepageedit"} ], options:[ {type:"select",label:"n_optype",name:"n_optype",value:["s_new","s_back","s_current","s_incog"]}, @@ -38,11 +38,29 @@ sue.apps.homepage={ _listBox.appendChild(_listName); let _listAddBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listaddbox"]}), - _listAddText=sue.apps.domCreate("input",{setName:["className","type"],setValue:["su_homepage_listaddtext","text"]}), - _listAddBtn=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_listaddbtn"]},null,null,null,"新增分组"); - _listAddBox.appendChild(_listAddText); - _listAddBox.appendChild(_listAddBtn); + + _listAddBtnbox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listaddbtnbox"]},null,"background:url("+chrome.runtime.getURL("image/add.svg")+") no-repeat 2px 5px;padding:10px 32px;",null,"Add an new group"), + _listAddBtnimg=sue.apps.domCreate("img",{setName:["className","src"],setValue:["su_homepage_listaddbtnimg",chrome.runtime.getURL("image/add.svg")]}), + _listAddBtnspan=sue.apps.domCreate("span",{setName:["className"],setValue:["su_homepage_listaddbtnspan"]},null,null,null,"Add an new group"), + + _listAddValuebox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listaddvaluebox"]}), + _listAddValuetext=sue.apps.domCreate("input",{setName:["className","type"],setValue:["su_homepage_listaddtext","text"]}), + _listAddValuebtn=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_listaddbtn"]},null,null,null,"确定"); + // _listAddBtnbox.appendChild(_listAddBtnimg); + // _listAddBtnbox.appendChild(_listAddBtnspan); + + _listAddValuebox.appendChild(_listAddValuetext); + _listAddValuebox.appendChild(_listAddValuebtn); + + _listAddBox.appendChild(_listAddBtnbox); + _listAddBox.appendChild(_listAddValuebox); + + let _listItemBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_listitembox"]}); + _listBox.appendChild(_listAddBox); + _listBox.appendChild(_listItemBox); + + sue.apps.homepage.listInit(); // @@ -53,20 +71,54 @@ sue.apps.homepage={ chrome.runtime.sendMessage({type:"appsAction",app:"homepage",action:"getImageURL"}); } - sue.apps.homepage.initItem(); + // sue.apps.homepage.itemInit(0); dom.addEventListener("click",this.handleEvent,false); }, listInit:function(){ - + let _dom=sue.apps.homepage.dom.querySelector(".su_homepage_listitembox"); + let _ul=sue.apps.domCreate("ul",{setName:["className"],setValue:["su_homepage_listul"]}); + _dom.textContent=""; + let _groups=sue.apps.homepage.config.sitegroup.slice(0); + _groups.unshift(sue.apps.i18n("apps_homepage_grouptopsites")); + for(var i=0;i<_groups.length;i++){ + var _li=sue.apps.domCreate("li",{setName:["className"],setValue:["su_homepage_listli"]},null,null,{setName:["id"],setValue:[i]},_groups[i]); + _ul.appendChild(_li); + } + _dom.appendChild(_ul); + sue.apps.homepage.listSwitch(0) }, - listSwitch:function(){ - + listSwitch:function(id){ + sue.apps.homepage.itemInit(id); + let _lis=sue.apps.homepage.dom.querySelectorAll(".su_homepage_listul li"); + for(var i=0;i<_lis.length;i++){ + if(i==Number(id)){ + _lis[i].classList.add("su_homepage_listlicur"); + }else{ + _lis[i].classList.remove("su_homepage_listlicur"); + } + } + sue.apps.homepage.listShow(); }, - listAdd:function(){ + listAdd:function(e){ + let _domAdd=e.target.parentNode; + _domAdd.style.display=window.getComputedStyle(_domAdd).display=="none"?"block":"none"; + let _value=e.target.parentNode.querySelector(".su_homepage_listaddtext").value; + if(_value){ + sue.apps.homepage.config.sitegroup.push(_value); + sue.apps.homepage.saveConf(); + sue.apps.homepage.listInit(); + sue.apps.homepage.listSwitch(sue.apps.getAPPboxEle(e).querySelectorAll(".su_homepage_listul li").length-1); + } }, - listDel:function(){ - + listDel:function(){}, + listShow:function(e){ + let _dom=(e?sue.apps.getAPPboxEle(e):false)||sue.apps.homepage.dom; + _dom=_dom.querySelector(".su_homepage_listbox"); + _dom.style.display=window.getComputedStyle(_dom).display=="none"?"block":"none"; + }, + saveConf:function(){ + chrome.runtime.sendMessage({type:"apps_saveconf",apptype:"homepage",config:sue.apps.homepage.config},function(response){}); }, handleEvent:function(e){ switch(e.type){ @@ -76,19 +128,57 @@ sue.apps.homepage={ if(sue.apps.homepage.config.n_closebox){ sue.apps.boxClose(e); } + }else if(e.target.classList.contains("su_homepage_listli")){ + sue.apps.homepage.listSwitch(Number(e.target.dataset.id)); + }else if(e.target.classList.contains("su_homepage_listaddbtnbox")){ + sue.apps.homepage.showAddbox(e); + }else if(e.target.classList.contains("su_homepage_listaddbtn")){ + sue.apps.homepage.listAdd(e); + }else if(e.target.classList.contains("menu_item_homepagelist")){ + sue.apps.homepage.listShow(e); + }else if(e.target.classList.contains("menu_item_homepageedit")){ + sue.apps.homepage.editMode(e) } } }, - initItem:function(){ + editMode:function(e){ + if(e.target.classList.contains("su_homepage_editmode")){ + e.target.classList.remove("su_homepage_editmode"); + sue.apps.homepage.cons.editMode=false; + }else{ + e.target.classList.add("su_homepage_editmode"); + sue.apps.homepage.cons.editMode=true; + } + let _dom=sue.apps.homepage.dom.querySelector(".su_homepage_box ul"); + if(sue.apps.homepage.cons.editMode){ + let _li=sue.apps.domCreate("li",{setName:["className"],setValue:["su_homepage_li su_homepage_item su_homepage_itemadd"]}); + _li.appendChild(sue.apps.domCreate("div",null,null,"text-align:center",null,"+")); + _dom.appendChild(_li); + }else{ + let _li=_dom.querySelector(".su_homepage_itemadd"); + _li.remove(); + } + }, + showAddbox:function(e){ + let _dom=e.target.parentNode.querySelector(".su_homepage_listaddvaluebox"); + + _dom.style.display=window.getComputedStyle(_dom).display=="none"?"block":"none"; + }, + itemInit:function(id){ + console.log(id); let _dom=sue.apps.homepage.dom.querySelector(".su_homepage_box"); let _ul=sue.apps.domCreate("ul"); - for(var i=0;i Date: Wed, 5 Feb 2020 20:52:31 +0800 Subject: [PATCH 4/9] new action: magnet --- _locales/en/messages.json | 9 +++++ _locales/zh_CN/messages.json | 9 +++++ change.log | 7 ++++ css/inject/magnet.css | 34 +++++++++++++++++ js/actions.js | 9 +++-- js/background.js | 14 ++++++- js/inject/magnet.js | 72 ++++++++++++++++++++++++++++++++++++ manifest.json | 2 +- 8 files changed, 150 insertions(+), 6 deletions(-) create mode 100644 css/inject/magnet.css create mode 100644 js/inject/magnet.js diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 9e5919f..decbfb4 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1526,5 +1526,14 @@ }, "closeapps":{ "message":"Close all Mini-apps in tab" + }, + "magnet":{ + "message":"Torrent Hash To Magnet URI" + }, + "btn_clear":{ + "message":"CLEAR" + }, + "magnet_placeholder_input":{ + "message":"Input torrent hash text." } } \ No newline at end of file diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index f759081..dc9437c 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -1501,5 +1501,14 @@ }, "closeapps":{ "message":"关闭当前页内所有迷你应用" + }, + "magnet":{ + "message":"特征码转磁链" + }, + "btn_clear":{ + "message":"清除" + }, + "magnet_placeholder_input":{ + "message":"输入特征码。" } } \ No newline at end of file diff --git a/change.log b/change.log index 36b9ef7..3f25b04 100644 --- a/change.log +++ b/change.log @@ -1,5 +1,12 @@ { "log": [ + { + "ver":"6.6.247.1034", + "date":"2020.02.05", + "content":[ + "new action: magnet" + ] + }, { "ver":"6.5.1348.1026", "date":"2019.10.16", diff --git a/css/inject/magnet.css b/css/inject/magnet.css new file mode 100644 index 0000000..64b98c5 --- /dev/null +++ b/css/inject/magnet.css @@ -0,0 +1,34 @@ +smartup.su_apps#su_apps_magnet .su_magnetbox{ + width: 520px; + padding: 8px; +} +smartup.su_apps#su_apps_magnet .su_magenet_domleft{ + text-align: center; + width: 240px; + float: left; +} +smartup.su_apps#su_apps_magnet .su_magenet_domleft button{ + margin-bottom: 8px; + margin-top: 8px; +} +smartup.su_apps#su_apps_magnet .su_magenet_link{ + text-align: left; + text-decoration: underline; + color: blue; + display: inline-block; + word-break: break-all; + margin-top: 8px; +} +smartup.su_apps#su_apps_magnet textarea{ + display: block; + width: 240px; + height: 64px; + font-size: 14px; +} +smartup.su_apps#su_apps_magnet .su_magenet_qr{ + height: auto; + width: auto; + padding-left: 8px; + margin-bottom: 8px; + float: right; +} \ No newline at end of file diff --git a/js/actions.js b/js/actions.js index a9f403b..0d3ed50 100644 --- a/js/actions.js +++ b/js/actions.js @@ -99,7 +99,8 @@ let actions={ {name:"autoreload"}, {name:"homepage"}, {name:"tbkjx"}, - {name:"appslist"} + {name:"appslist"}, + {name:"magnet"} /*{name:"gmail"}, {name:"ary"}, {name:"color"}, @@ -117,7 +118,8 @@ let actions={ {name:"mail",selects:["n_mail","n_tab"],texts:["n_mail_prefix","n_mail_domain"]}, {name:"print"}, {name:"extdisable"}, - {name:"mute",selects:["n_mute"]} + {name:"mute",selects:["n_mute"]}, + {name:"magnet"} ], [//ag_exp {name:"recentclosed"}, @@ -144,7 +146,8 @@ let actions={ {name:"txtsearch",selects:["n_txtengine","n_encoding","n_optype","n_position"],checks:["n_pin"]}, {name:"qr"}, {name:"tts",selects:["n_voicename","n_gender"],ranges:["n_rate","n_pitch","n_volume"]}, - {name:"speaker"} + {name:"speaker"}, + {name:"magnet"} ] ], ldrg_group:["ag_none",/*"ag_tab","ag_copy",*/"ag_others"], diff --git a/js/background.js b/js/background.js index 567642f..f513a5b 100644 --- a/js/background.js +++ b/js/background.js @@ -2340,6 +2340,16 @@ var sub={ }, //mini apps + magnet:function(){ + console.log(sub.message.selEle); + var _appname="magnet"; + sub.initAppconf(_appname); + var _obj={}; + _obj.seltxt=sub.message.selEle?sub.message.selEle.txt:""; + _obj.drawtype=sub.message.drawType; + sub.cons[_appname]=_obj; + sub.insertTest(_appname); + }, tbkjx:function(){ var _appname="tbkjx"; sub.initAppconf(_appname); @@ -2488,7 +2498,7 @@ var sub={ var _appname="appslist"; sub.initAppconf(_appname); var _obj={} - _obj.apps=["rss","tablist","random","extmgm","recentbk","recentht","recentclosed","synced","base64","qr","numc","speaker","jslist","lottery","convertcase","autoreload","homepage"]; + _obj.apps=["rss","tablist","random","extmgm","recentbk","recentht","recentclosed","synced","base64","qr","numc","speaker","jslist","lottery","convertcase","autoreload","homepage","magnet"]; chrome.tabs.saveAsPDF?_obj.apps.push("savepdf"):null; navigator.language=="zh-CN"?_obj.apps.push("tbkjx"):null; sub.cons[_appname]=_obj; @@ -3586,7 +3596,7 @@ var sub={ } if(message.apptype=="base64"){ chrome.tabs.executeScript({file:"js/base64.js",runAt:"document_start"},function(){}) - }else if(message.apptype=="qr"){ + }else if(message.apptype=="qr"||message.apptype=="magnet"){ chrome.tabs.executeScript({file:"js/qrcode.js",runAt:"document_start"},function(){}) }else if(message.apptype=="tbkjx"){ chrome.tabs.executeScript({file:"js/purify.js",runAt:"document_start"},function(){}); diff --git a/js/inject/magnet.js b/js/inject/magnet.js new file mode 100644 index 0000000..cc931ba --- /dev/null +++ b/js/inject/magnet.js @@ -0,0 +1,72 @@ +console.log("magnet"); +sue.apps.magnet={ + initUI:function(){ + let appInfo={ + appName:"magnet", + headTitle:"magnet", + headCloseBtn:true + } + sue.apps.init(); + var dom=sue.apps.initBox(appInfo); + dom.id="su_apps_"+appInfo.appName; + sue.apps[appInfo.appName].dom=dom; + sue.apps.initPos(dom); + + let theAppBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_magnetbox"]}); + dom.querySelector(".su_main").appendChild(theAppBox); + + let domLeft=sue.apps.domCreate("div",{setName:["className"],setValue:["su_magenet_domleft"]}); + let domInput=sue.apps.domCreate("textarea",{setName:["className","placeholder"],setValue:["su_magenet_input",sue.apps.i18n("magnet_placeholder_input")]}), + btnClear=sue.apps.domCreate("button",{setName:["className"],setValue:["su_magenet_btn su_magnet_clear"]},null,null,null,sue.apps.i18n("btn_clear")), + btnDone=sue.apps.domCreate("button",{setName:["className"],setValue:["su_magenet_btn su_magnet_done"]},null,null,null,sue.apps.i18n("btn_done")), + domOutput=sue.apps.domCreate("textarea",{setName:["className","disabled"],setValue:["su_magenet_output",true]}), + domLink=sue.apps.domCreate("a",{setName:["className"],setValue:["su_magenet_link"]}); + + let domQr=sue.apps.domCreate("div",{setName:["className"],setValue:["su_magenet_qr"]}); + + domLeft.appendChild(domInput); + domLeft.appendChild(btnClear); + domLeft.appendChild(btnDone); + domLeft.appendChild(domOutput); + domLeft.appendChild(domLink); + theAppBox.appendChild(domLeft); + theAppBox.appendChild(domQr); + + domInput.value=sue.apps.magnet.seltxt.trim(); + sue.apps.magnet.action(btnDone); + theAppBox.addEventListener("click",this,false); + }, + handleEvent:function(e){ + switch(e.type){ + case"click": + if(e.target.classList.contains("su_magnet_clear")){ + sue.apps.magnet.clear(e.target.previousSibling); + }else if(e.target.classList.contains("su_magnet_done")){ + sue.apps.magnet.action(e); + } + break; + } + }, + clear:function(dom){ + dom.value=""; + }, + action:function(e){ + let dom=e.target||e; + let domOutput=dom.nextSibling, + domLink=dom.parentNode.lastChild; + domQr=sue.apps.getAPPboxEle(e).querySelector(".su_magenet_qr"), + _str="magnet:?xt=urn:btih:"+dom.parentNode.firstChild.value; + console.log(domQr); + domOutput.value=_str; + domLink.href=_str; + domLink.target="_blank"; + domLink.textContent=_str; + domQr.textContent=""; + new QRCode(domQr,_str); + } +} +chrome.runtime.sendMessage({type:"apps_getvalue",apptype:"magnet"},function(response){ + sue.apps.magnet.seltxt=response.value.seltxt; + sue.apps.magnet.drawtype=response.value.drawtype; + sue.apps.magnet.initUI(); +}) \ No newline at end of file diff --git a/manifest.json b/manifest.json index c69f568..5cd1751 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "minimum_chrome_version": "22", "name": "smartUp Gestures(Beta)", "short_name":"smartUp", - "version": "6.5.1348.1033", + "version": "6.6.247.1034", "description": "__MSG_ext_des__", "default_locale": "en", "author":"zimo", From ee6f64aba372b25e41ec5a2a52d28561e18b4a51 Mon Sep 17 00:00:00 2001 From: zimocode Date: Wed, 12 Feb 2020 19:37:39 +0800 Subject: [PATCH 5/9] upgrade homepage --- _locales/en/messages.json | 36 +++ _locales/zh_CN/messages.json | 36 +++ change.log | 7 +- css/apps_basic.css | 1 + css/inject/homepage.css | 126 +++++++++-- html/options.html | 1 + js/apps_basic.js | 27 ++- js/background.js | 48 +++- js/inject/homepage.js | 428 ++++++++++++++++++++++++++++------- manifest.json | 2 +- 10 files changed, 597 insertions(+), 115 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index decbfb4..54ca722 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1535,5 +1535,41 @@ }, "magnet_placeholder_input":{ "message":"Input torrent hash text." + }, + "homepage_grouptop":{ + "message":"Most Visited Sites" + }, + "homepage_groupdefault":{ + "message":"Default Group" + }, + "homepage_grouplist":{ + "message":"Sites group list" + }, + "homepage_editmode":{ + "message":"Edit Mode" + }, + "homepage_newgroup":{ + "message":"Add an new group" + }, + "homepage_grouptitle":{ + "message":"Group Name" + }, + "homepage_sitetitle":{ + "message":"Site Name" + }, + "homepage_siteurl":{ + "message":"Site URL" + }, + "homepage_placeurl":{ + "message":"Including prefix: http, https and etc." + }, + "homepage_cfmlistdel":{ + "message":"This will delete all sites in the group, Please confirm the operation." + }, + "homepage_ctm":{ + "message":"Add to Mini-apps: Home Page" + }, + "n_homepage_last":{ + "message":"Set the last sites group as a default one" } } \ No newline at end of file diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index dc9437c..bab2a15 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -1510,5 +1510,41 @@ }, "magnet_placeholder_input":{ "message":"输入特征码。" + }, + "homepage_grouptop":{ + "message":"最常访问的网站" + }, + "homepage_groupdefault":{ + "message":"默认分组" + }, + "homepage_grouplist":{ + "message":"网站分组列表" + }, + "homepage_editmode":{ + "message":"编辑模式" + }, + "homepage_newgroup":{ + "message":"新增分组" + }, + "homepage_grouptitle":{ + "message":"分组名称" + }, + "homepage_sitetitle":{ + "message":"网站名称" + }, + "homepage_siteurl":{ + "message":"网站地址" + }, + "homepage_placeurl":{ + "message":"包括前缀:http,https等。" + }, + "homepage_cfmlistdel":{ + "message":"该操作会删除相应分组下的所有网站,请再次确认。" + }, + "homepage_ctm":{ + "message":"添加到迷你应用-主页" + }, + "n_homepage_last":{ + "message":"设置上一次选中的网站分组为默认" } } \ No newline at end of file diff --git a/change.log b/change.log index 3f25b04..75316ba 100644 --- a/change.log +++ b/change.log @@ -1,10 +1,11 @@ { "log": [ { - "ver":"6.6.247.1034", - "date":"2020.02.05", + "ver":"6.6.255.1041", + "date":"2020.02.12", "content":[ - "new action: magnet" + "new action: magnet", + "upgrade homepage" ] }, { diff --git a/css/apps_basic.css b/css/apps_basic.css index b1283d6..072465a 100644 --- a/css/apps_basic.css +++ b/css/apps_basic.css @@ -210,6 +210,7 @@ smartup .su_menu img{ padding: 2px; } smartup .su_options{ + transition:all .2s ease-in-out; position: absolute; left: 0; top: 0; diff --git a/css/inject/homepage.css b/css/inject/homepage.css index e24ed52..634e78d 100644 --- a/css/inject/homepage.css +++ b/css/inject/homepage.css @@ -1,5 +1,6 @@ smartup.su_apps#su_apps_homepage .su_homepage_box{ width: 550px; + min-height: 120px; padding: 8px; } smartup.su_apps#su_apps_homepage .su_homepage_cp{ @@ -8,7 +9,7 @@ smartup.su_apps#su_apps_homepage .su_homepage_cp{ font-size: 10px; color: #ccc; text-align: right; - width: 580px; + width: auto; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -63,7 +64,7 @@ smartup.su_apps#su_apps_homepage .su_homepage_li div span{ text-overflow: ellipsis; } smartup.su_apps#su_apps_homepage .su_homepage_listbox{ - background-color: #ccf; + background-color: rgb(231, 233, 253); height: 100%; width: 200px; position: absolute; @@ -71,10 +72,11 @@ smartup.su_apps#su_apps_homepage .su_homepage_listbox{ top: 0; opacity: 0.9; overflow: hidden auto; + z-index: 100; } smartup.su_apps#su_apps_homepage .su_homepage_listul{ list-style-type: none; - margin: -2px 0; + margin: 0 0 0 -8px; padding: 2px 0; background: #e7e9fd; transition:all .4s ease-in-out; @@ -87,19 +89,24 @@ smartup.su_apps#su_apps_homepage .su_homepage_listli{ height: 30px; line-height: 30px; font-size: 14px; - /*padding-right: 20px;*/ cursor: pointer; margin: 2px 0; - /*border-right: 3px solid transparent;*/ + padding-right: 8px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } +smartup.su_apps#su_apps_homepage .su_homepage_listli:hover .su_homepage_listbtndel{ + margin-left: 8px; +} +smartup.su_apps#su_apps_homepage .su_homepage_listli:hover .su_homepage_listbtndel:hover{ + background-color: red; +} smartup.su_apps#su_apps_homepage .su_homepage_listli:hover, smartup.su_apps#su_apps_homepage .su_homepage_listlicur{ background: #a6baff; - /*border-right: 3px solid #5677fc !important;*/ color: #3f51b5; + /*border-right: 3px solid #5677fc !important;*/ } smartup.su_apps#su_apps_homepage .su_homepage_listlicur{ color: #3f51b5; @@ -113,10 +120,6 @@ smartup.su_apps#su_apps_homepage .su_homepage_listaddbox:hover{ border-color: #fff; cursor: pointer; } -smartup.su_apps#su_apps_homepage .su_homepage_listaddbtnbox{ -} -smartup.su_apps#su_apps_homepage .su_homepage_listaddbtnbox:hover{ -} smartup.su_apps#su_apps_homepage .su_homepage_listaddvaluebox{ display: none; } @@ -124,8 +127,103 @@ smartup.su_apps#su_apps_homepage .su_homepage_listaddtext{ width: 80px; } smartup.su_apps#su_apps_homepage .su_homepage_listaddbtn{ - min-width: auto; - min-height: auto; - height: 24px; - line-height: 24px; + border-top: 1px solid #d0d9ff; + padding: 10px 32px; + position: absolute; + bottom: 0; + background: #e7e9fd; + width: auto; +} +smartup.su_apps#su_apps_homepage .su_homepage_listaddbtn:hover{ + cursor: pointer; +} +smartup.su_apps#su_apps_homepage .su_homepage_item{ + overflow: hidden; +} +smartup.su_apps#su_apps_homepage .su_homepage_item:hover .su_homepage_itembtndel{ + margin-right: -8px !important; +} +smartup.su_apps#su_apps_homepage .su_homepage_item:hover .su_homepage_itembtndel:hover{ + background-color: red; +} +smartup.su_apps#su_apps_homepage .su_homepage_itemaddbox{ + width: 360px; + height: auto; + padding: 4px; + background: #cef; + margin: 0 auto; + position: absolute; + right: 12px; + top: 12px; + border-radius: 2px; +} +smartup.su_apps#su_apps_homepage .su_homepage_itembtndel{ + transition:all .3s ease-out; + float: right; + margin: -34px -44px 0 0 !important; + width: 36px; + height: 36px; + text-align: center; + background: rgba(0, 0, 0, 0.5); + color: white !important; + font-size: 16px !important; +} +smartup.su_apps#su_apps_homepage .su_homepage_boxbtnclose{ + position: absolute; + right: 0; + top: 0; + padding: 2px; +} +smartup.su_apps#su_apps_homepage .su_homepage_addboxmain{ + width: 360px; +} +smartup.su_apps#su_apps_homepage .su_homepage_addboxlabel{ + width: 120px; + display: inline-block; + text-align: right; +} +smartup.su_apps#su_apps_homepage .su_homepage_boxgroup{ + width: 120px; +} +smartup.su_apps#su_apps_homepage .su_homepage_addboxbtn{ + text-align: center; + margin: 8px 0; +} +smartup.su_apps#su_apps_homepage .su_homepage_listbtndel{ + transition:all .3s ease-out; + float: left; + width: 24px; + text-align: center; + margin-left: -16px; + background: rgba(0, 0, 0, 0.5); + color: white !important; + font-size: 16px !important; +} +smartup.su_apps#su_apps_homepage .su_homepage_editbg{ + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + position: absolute; + left: 0; + top: 0; + z-index: 101; +} +smartup.su_apps#su_apps_homepage .su_homepage_editbox{ + margin: 0 auto; + width: auto; + height: auto; + top: 48px; + left: 120px; + padding: 4px; + background: #cef; + margin: 0 auto; + position: absolute; + border-radius: 2px; + z-index: 102; +} +smartup.su_apps#su_apps_homepage .su_homepage_editmode{ + background-color: red; +} +smartup.su_apps#su_apps_homepage .su_homepage_listitembox{ + margin: 16px 0; } \ No newline at end of file diff --git a/html/options.html b/html/options.html index 507413e..1983810 100644 --- a/html/options.html +++ b/html/options.html @@ -437,6 +437,7 @@


+
diff --git a/js/apps_basic.js b/js/apps_basic.js index 688a233..4bff436 100644 --- a/js/apps_basic.js +++ b/js/apps_basic.js @@ -298,21 +298,24 @@ sue.apps={ var domopt=sue.apps.getAPPboxEle(e).querySelector(".su_options"); var _opt=window.getComputedStyle(domopt).opacity==0?true:false; if(_opt){ - domopt.style.cssText+="opacity:1;z-index:10;"; + domopt.style.cssText+="display:block;"; + window.setTimeout(function(){domopt.style.cssText+="opacity:1;z-index:10;";},10) }else{ domopt.style.cssText+="opacity:0;z-index:-1;"; + window.setTimeout(function(){domopt.style.cssText+="display:none;";},200) } }, initPos:function(dom){ let _fn=function(){ - console.log(dom) dom.querySelector(".su_main").style.cssText+="max-height:"+(window.innerHeight-100)+"px;"; document.body.appendChild(dom); var _appname=dom.dataset.appname; - var _height=window.getComputedStyle(dom).height, - _width=window.getComputedStyle(dom).width; - _height=parseInt(_height.substr(0,_height.length-2)); - _width=parseInt(_width.substr(0,_width.length-2)); + // var _height=window.getComputedStyle(dom).height, + // _width=window.getComputedStyle(dom).width; + var _height=dom.getBoundingClientRect().height; + _width=dom.getBoundingClientRect().width; + // _height=parseInt(_height.substr(0,_height.length-2)); + // _width=parseInt(_width.substr(0,_width.length-2)); dom.style.cssText+="left:"+(window.innerWidth-_width)/2+"px;"; dom.style.cssText+="opacity:.98;top:"+(window.innerHeight-_height)/2+"px;"; window.setTimeout(function(){ @@ -323,5 +326,17 @@ sue.apps={ _fn(); //dom.style.cssText+="opacity:.98;top:"+(window.innerHeight-_height)/2+"px;"; },100) + }, + fixURL:function(url){ + var arrayPre=["http://","https://","ftp://","chrome://","chrome-extension://","view-source:chrome-extension://","moz-extension://","about://","about:","file:///"]; + var _flag=false; + for(var i=0;ilength, set to 0 + if(id>sue.apps.homepage.config.sitegroup.length){ + sue.apps.homepage.cons.curListId=0; + } + }else if(e.target&&e.target.classList&&e.target.classList.contains("su_homepage_listli")){ + sue.apps.homepage.cons.curListId=e.target.dataset.id; + } + if(sue.apps.homepage.config.n_homepage_last){ + chrome.runtime.sendMessage({type:"appsAction",app:"homepage",action:"setListId",value:sue.apps.homepage.cons.curListId}) + } + sue.apps.homepage.itemInit(sue.apps.homepage.cons.curListId,e); + let _lis=(sue.apps.getAPPboxEle(e)).querySelectorAll(".su_homepage_listul li"); for(var i=0;i<_lis.length;i++){ - if(i==Number(id)){ + if(i==sue.apps.homepage.cons.curListId){ _lis[i].classList.add("su_homepage_listlicur"); }else{ _lis[i].classList.remove("su_homepage_listlicur"); } } - sue.apps.homepage.listShow(); + sue.apps.homepage.listShow(e); }, - listAdd:function(e){ - let _domAdd=e.target.parentNode; - _domAdd.style.display=window.getComputedStyle(_domAdd).display=="none"?"block":"none"; + listNew:function(e){ + let dom=sue.apps.getAPPboxEle(e)/*.querySelector(".su_apps")*/, + domBg=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_editbg"]}), + domBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_editbox"]}); + + let boxMain=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_addboxmain"]}), + boxTitleLabel=sue.apps.domCreate("label",{setName:["className"],setValue:["su_homepage_addboxlabel"]},null,null,null,sue.apps.i18n("homepage_grouptitle")), + boxTitle=sue.apps.domCreate("input",{setName:["className","type"],setValue:["su_homepage_boxtitle","text"]}); + boxMain.appendChild(boxTitleLabel); + boxMain.appendChild(boxTitle); + domBox.appendChild(boxMain); - let _value=e.target.parentNode.querySelector(".su_homepage_listaddtext").value; - if(_value){ - sue.apps.homepage.config.sitegroup.push(_value); + let boxBtn=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_addboxbtn"]}), + boxBtnClose=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_boxbtncancel"]},null,null,null,sue.apps.i18n("btn_cancel")), + boxBtnSave=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_listbtnadd"]},null,null,null,sue.apps.i18n("btn_done")); + boxBtn.appendChild(boxBtnClose); + boxBtn.appendChild(boxBtnSave); + domBox.appendChild(boxBtn); + + dom.appendChild(domBg); + dom.appendChild(domBox); + }, + listNewSave:function(e){ + sue.apps.homepage.config.sitegroup.push(sue.apps.getAPPboxEle(e).querySelector(".su_homepage_boxtitle").value); + sue.apps.homepage.config.sites.push([]); + sue.apps.homepage.saveConf(); + sue.apps.homepage.listInit(e); + }, + listEdit:function(e){ + let id=parseInt(e.target.dataset.id)-1; + if(id==-1){return;} + let dom=sue.apps.getAPPboxEle(e)/*.querySelector(".su_apps")*/, + domBg=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_editbg"]}), + domBox=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_editbox"]}); + + let boxMain=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_addboxmain"]}), + boxTitleLabel=sue.apps.domCreate("label",{setName:["className"],setValue:["su_homepage_addboxlabel"]},null,null,null,sue.apps.i18n("homepage_grouptitle")), + boxTitle=sue.apps.domCreate("input",{setName:["className","type","value"],setValue:["su_homepage_boxtitle","text",sue.apps.homepage.config.sitegroup[id]]}); + boxMain.appendChild(boxTitleLabel); + boxMain.appendChild(boxTitle); + domBox.appendChild(boxMain); + + let boxBtn=sue.apps.domCreate("div",{setName:["className"],setValue:["su_homepage_addboxbtn"]}), + boxBtnClose=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_boxbtncancel"]},null,null,null,sue.apps.i18n("btn_cancel")), + boxBtnSave=sue.apps.domCreate("button",{setName:["className"],setValue:["su_homepage_listbtnedit"]},null,null,{setName:["id"],setValue:[id]},sue.apps.i18n("btn_done")); + boxBtn.appendChild(boxBtnClose); + boxBtn.appendChild(boxBtnSave); + domBox.appendChild(boxBtn); + + dom.appendChild(domBg); + dom.appendChild(domBox); + }, + listEditSave:function(e){ + sue.apps.homepage.config.sitegroup[e.target.dataset.id]=sue.apps.getAPPboxEle(e).querySelector(".su_homepage_boxtitle").value; + console.log(sue.apps.homepage.config.sitegroup[e.target.dataset.id]); + sue.apps.homepage.saveConf(); + sue.apps.homepage.listInit(e); + }, + listDel:function(e){ + let dom=sue.apps.getAPPboxEle(e); + let id=parseInt(e.target.parentNode.dataset.id)-1; + sue.apps.homepage.cons.curListId=parseInt(e.target.parentNode.dataset.id)-1; + if(window.confirm(sue.apps.i18n("homepage_cfmlistdel"))){ + sue.apps.homepage.config.sitegroup.splice(id,1); + sue.apps.homepage.config.sites.splice(id,1) sue.apps.homepage.saveConf(); - sue.apps.homepage.listInit(); - sue.apps.homepage.listSwitch(sue.apps.getAPPboxEle(e).querySelectorAll(".su_homepage_listul li").length-1); + sue.apps.homepage.listInit(sue.apps.getAPPboxEle(e)); } }, - listDel:function(){}, listShow:function(e){ let _dom=(e?sue.apps.getAPPboxEle(e):false)||sue.apps.homepage.dom; _dom=_dom.querySelector(".su_homepage_listbox"); _dom.style.display=window.getComputedStyle(_dom).display=="none"?"block":"none"; }, saveConf:function(){ - chrome.runtime.sendMessage({type:"apps_saveconf",apptype:"homepage",config:sue.apps.homepage.config},function(response){}); + chrome.runtime.sendMessage({type:"apps_saveconf",apptype:"homepage",config:sue.apps.homepage.config}); }, handleEvent:function(e){ switch(e.type){ case"click": if(e.target.classList.contains("su_homepage_item")){ - chrome.runtime.sendMessage({type:"appsAction",app:"homepage",action:"openItem",value:e.target.dataset.url}) - if(sue.apps.homepage.config.n_closebox){ - sue.apps.boxClose(e); + if(sue.apps.homepage.cons.editMode){ + sue.apps.homepage.itemEdit(e); + }else{ + chrome.runtime.sendMessage({type:"appsAction",app:"homepage",action:"openItem",value:e.target.dataset.url}) + if(sue.apps.homepage.config.n_closebox){ + sue.apps.boxClose(e); + } } }else if(e.target.classList.contains("su_homepage_listli")){ - sue.apps.homepage.listSwitch(Number(e.target.dataset.id)); + sue.apps.homepage.cons.editMode?sue.apps.homepage.listEdit(e):sue.apps.homepage.listSwitch(e); }else if(e.target.classList.contains("su_homepage_listaddbtnbox")){ sue.apps.homepage.showAddbox(e); }else if(e.target.classList.contains("su_homepage_listaddbtn")){ - sue.apps.homepage.listAdd(e); + sue.apps.homepage.listNew(e); + }else if(e.target.classList.contains("su_homepage_listbtnadd")){ + sue.apps.homepage.listNewSave(e); + sue.apps.homepage.itemEditClose(e); }else if(e.target.classList.contains("menu_item_homepagelist")){ sue.apps.homepage.listShow(e); }else if(e.target.classList.contains("menu_item_homepageedit")){ - sue.apps.homepage.editMode(e) + sue.apps.homepage.editMode(e); + sue.apps.homepage.itemInit(sue.apps.getAPPboxEle(e).querySelector(".su_homepage_listlicur")?parseInt(sue.apps.getAPPboxEle(e).querySelector(".su_homepage_listlicur").dataset.id):0,e); + sue.apps.homepage.listInit(e); + }else if(e.target.classList.contains("su_homepage_itemadd")){ + sue.apps.homepage.itemNew(e); + }else if(e.target.classList.contains("su_homepage_boxbtncancel")){ + sue.apps.homepage.itemEditClose(e); + }else if(e.target.classList.contains("su_homepage_boxbtnnew")){ + sue.apps.homepage.itemNewSave(e); + sue.apps.homepage.itemEditClose(e); + }else if(e.target.classList.contains("su_homepage_boxbtnedit")){ + sue.apps.homepage.itemEditSave(e); + sue.apps.homepage.itemEditClose(e); + }else if(e.target.classList.contains("su_homepage_itembtndel")){ + sue.apps.homepage.itemDel(e); + }else if(e.target.classList.contains("su_homepage_listbtnedit")){ + sue.apps.homepage.listEditSave(e); + sue.apps.homepage.itemEditClose(e); + }else if(e.target.classList.contains("su_homepage_listbtndel")){ + sue.apps.homepage.listDel(e); + }else if(e.target.classList.contains("su_homepage_ctmbtnsave")){ + sue.apps.homepage.itemCTMSave(e); + sue.apps.homepage.itemEditClose(e); } } }, @@ -145,54 +253,203 @@ sue.apps.homepage={ if(e.target.classList.contains("su_homepage_editmode")){ e.target.classList.remove("su_homepage_editmode"); sue.apps.homepage.cons.editMode=false; + sue.apps.getAPPboxEle(e).querySelector(".su_title").textContent=sue.apps.i18n("homepage"); }else{ e.target.classList.add("su_homepage_editmode"); sue.apps.homepage.cons.editMode=true; - } - let _dom=sue.apps.homepage.dom.querySelector(".su_homepage_box ul"); - if(sue.apps.homepage.cons.editMode){ - let _li=sue.apps.domCreate("li",{setName:["className"],setValue:["su_homepage_li su_homepage_item su_homepage_itemadd"]}); - _li.appendChild(sue.apps.domCreate("div",null,null,"text-align:center",null,"+")); - _dom.appendChild(_li); - }else{ - let _li=_dom.querySelector(".su_homepage_itemadd"); - _li.remove(); + sue.apps.getAPPboxEle(e).querySelector(".su_title").textContent=sue.apps.i18n("homepage")+" ("+sue.apps.i18n("homepage_editmode")+")"; } }, showAddbox:function(e){ let _dom=e.target.parentNode.querySelector(".su_homepage_listaddvaluebox"); - _dom.style.display=window.getComputedStyle(_dom).display=="none"?"block":"none"; }, - itemInit:function(id){ - console.log(id); - let _dom=sue.apps.homepage.dom.querySelector(".su_homepage_box"); - let _ul=sue.apps.domCreate("ul"); + itemInit:function(id,e){ + var id=id||sue.apps.homepage.cons.curListId; + let _dom=(e?sue.apps.getAPPboxEle(e):sue.apps.homepage.dom).querySelector(".su_homepage_box"); + let _ul=sue.apps.domCreate("ul",null,null,null,{setName:["idgp"],setValue:[id-1]}); _dom.textContent=""; + _dom.appendChild(_ul); let sites=sue.apps.homepage.config.sites.slice(0); sites.unshift(sue.apps.homepage.topSites); - if(!sites[id]){return false;} - for(var i=0;i Date: Sun, 16 Feb 2020 12:29:25 +0800 Subject: [PATCH 6/9] fix #74 --- _locales/en/messages.json | 13 ++++++-- _locales/zh_CN/messages.json | 13 ++++++-- change.log | 7 +++-- css/options.css | 8 +++-- html/options.html | 2 +- js/background.js | 22 ++++++++++---- js/options.js | 58 ++++++++++++++++-------------------- manifest.json | 4 +-- manifest_note | 4 +-- 9 files changed, 78 insertions(+), 53 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 54ca722..18fefcf 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1444,10 +1444,10 @@ "message":"More Extensons" }, "con_ad":{ - "message":"Show advertisement" + "message":"Show advertisements on current options page" }, "des_ad":{ - "message":"Ads are only shown on the current settings page and will never appear on other pages. Thank you for your supporting." + "message":"Ads are only shown on the current options page and will never appear on other pages. Thank you for your supporting." }, "des_moreextlist":{ "message":"These extensions are developed by me. Welcome to install and use." @@ -1571,5 +1571,14 @@ }, "n_homepage_last":{ "message":"Set the last sites group as a default one" + }, + "msg_conferr0":{ + "message":"Failed to save settings. The error message is:" + }, + "msg_conferr1":{ + "message":"smartUp Gestures will try to roll back to the previous settings." + }, + "notif_title_conferr":{ + "message":"Settings save Failed!" } } \ No newline at end of file diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index bab2a15..6bb8f59 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -1419,10 +1419,10 @@ "message":"扩展推荐" }, "con_ad":{ - "message":"展示广告" + "message":"在当前的设置页展示广告" }, "des_ad":{ - "message":"广告仅在当前的设置页展现,绝不会在其它页面出现。本扩展一直在不断更新,需要并感谢你的支持。" + "message":"广告仅在当前的设置页展现,绝不会在其它页面出现。感谢你的支持。" }, "des_moreextlist":{ "message":"这些扩展都是本人所开发,欢迎安装使用。" @@ -1546,5 +1546,14 @@ }, "n_homepage_last":{ "message":"设置上一次选中的网站分组为默认" + }, + "msg_conferr0":{ + "message":"设置保存失败。错误信息如下:" + }, + "msg_conferr1":{ + "message":"smartUp手势将尝试回滚到之前的设置。" + }, + "notif_title_conferr":{ + "message":"设置保存失败!" } } \ No newline at end of file diff --git a/change.log b/change.log index 75316ba..d08a3e4 100644 --- a/change.log +++ b/change.log @@ -1,11 +1,12 @@ { "log": [ { - "ver":"6.6.255.1041", - "date":"2020.02.12", + "ver":"6.6.260.1043", + "date":"2020.02.16", "content":[ "new action: magnet", - "upgrade homepage" + "upgrade homepage", + "fix bug: issues@github: #74" ] }, { diff --git a/css/options.css b/css/options.css index c05503c..15eb86c 100644 --- a/css/options.css +++ b/css/options.css @@ -628,7 +628,7 @@ smartup.su_apps{ } #msgbox{ min-width: 300px; - height: 40px; + min-height: 40px; line-height: 40px; background: rgba(202,239,197,.98); position: fixed; @@ -643,6 +643,10 @@ smartup.su_apps{ font-size: 16px; font-weight: bold; } +#msgbox div{ + text-align: left; + line-height: 20px; +} .head{ height: 40px; margin-top: 40px; @@ -796,7 +800,7 @@ smartup.su_apps{ .menup{ height: 40px; line-height: 40px; - font-size: 18px; + font-size: 16px; font-weight: bold; color: rgba(0,0,0,.9); border-top: 1px solid transparent; diff --git a/html/options.html b/html/options.html index 1983810..97e45d1 100644 --- a/html/options.html +++ b/html/options.html @@ -503,7 +503,7 @@
-
+

diff --git a/js/background.js b/js/background.js index c41296c..6ea3f21 100644 --- a/js/background.js +++ b/js/background.js @@ -2711,7 +2711,7 @@ var sub={ sub.cons.origins=pers.origins; }); }, - saveConf:function(noInit){ + saveConf:function(noInit,sendResponse){ console.log("save"); console.log(config); let _isSync; @@ -2724,8 +2724,17 @@ var sub={ if(_isSync){ chrome.storage.sync.clear(function(){ chrome.storage.sync.set(config,function(){ - loadConfig(noInit); - //sub.init(); + if(chrome.runtime.lastError){ + sub.showNotif("basic",sub.getI18n("notif_title_conferr"),sub.getI18n("msg_conferr0")+"\n"+chrome.runtime.lastError.message+"\n"+sub.getI18n("msg_conferr1")); + sub.cons.lastErr=chrome.runtime.lastError.message; + chrome.storage.sync.set(sub.cons.lastConf,function(){ + loadConfig(); + chrome.runtime.sendMessage({type:"confErr",lastErr:sub.cons.lastErr}) + }); + }else{ + loadConfig(); + chrome.runtime.sendMessage({type:"confOK"}); + } }) }) }else{ @@ -2735,8 +2744,8 @@ var sub={ _obj.localConfig=items.localConfig; chrome.storage.local.clear(function(){ chrome.storage.local.set(_obj,function(){ - loadConfig(noInit); - //sub.init(); + loadConfig(); + chrome.runtime.sendMessage({type:"confOK"}); }) }) }) @@ -3659,8 +3668,9 @@ var sub={ loadConfig(); break; case"saveConf": + sub.cons.lastConf=config; config=message.value; - sub.saveConf(); + sub.saveConf(true,sendResponse); break; case"per_clear": sub.cons.permissions={}; diff --git a/js/options.js b/js/options.js index fc27247..daf9409 100644 --- a/js/options.js +++ b/js/options.js @@ -557,37 +557,6 @@ var suo={ }, saveConf2:function(str,type,mytime){ chrome.runtime.sendMessage({type:"saveConf",value:config}); - suo.showMsgBox(); - - return; - console.log("saveConf2") - let _isSync; - if(config.general.sync.autosync&&chrome.storage.sync){ - _isSync=true; - }else{ - _isSync=false; - } - if(_isSync){ - chrome.storage.sync.clear(function(){ - chrome.storage.sync.set(config,function(){ - chrome.runtime.sendMessage({type:"reloadconf"}); - suo.showMsgBox(); - }) - }) - }else{ - chrome.storage.local.get(function(items){ - let _obj=items; - _obj.config=config; - _obj.localConfig=items.localConfig; - chrome.storage.local.clear(function(){ - chrome.storage.local.set(_obj,function(){ - chrome.runtime.sendMessage({type:"reloadconf"}); - suo.showMsgBox(); - }) - }) - }) - } - _isSync?localStorage.setItem("sync","true"):localStorage.setItem("sync","false"); }, domCreate2:function(edom,eele,einner,ecss,edata,etxt){ var dom=document.createElement(edom); @@ -722,7 +691,17 @@ var suo={ OBJ.style.cssText+="background-color:yellow;color:rgba(0,0,0,.8);"; break; } - OBJ.innerText=str; + //OBJ.innerText=str; + // + OBJ.textContent=""; + if(typeof str=="string"){ + OBJ.innerText=str; + }else if(typeof str=="object"){ + for(var i=0;i","notifications","storage","contextMenus","tts"], + "permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","tts"], "optional_permissions": ["downloads","downloads.shelf","clipboardRead","clipboardWrite","bookmarks","history","management","sessions","pageCapture","background","topSites"] } \ No newline at end of file diff --git a/manifest_note b/manifest_note index f12621f..8ee8d3f 100644 --- a/manifest_note +++ b/manifest_note @@ -1,7 +1,7 @@ //The diffrent betwen browsers, from line 455 //chrome "incognito": "split", -"permissions": ["tabs","","notifications","storage","contextMenus","tts"], +"permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","tts"], "optional_permissions": ["downloads","downloads.shelf","clipboardRead","clipboardWrite","bookmarks","history","management","sessions","pageCapture","background","topSites"] //firefox @@ -9,5 +9,5 @@ "optional_permissions": ["browserSettings"] //firefox -"permissions": ["tabs","","notifications","storage","contextMenus","management","sessions"], +"permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","management","sessions"], "optional_permissions": ["browserSettings","downloads","clipboardRead","clipboardWrite","bookmarks","history","topSites"] \ No newline at end of file From 6bc636a4de0ea9447ee258249dcc8f270f7e9731 Mon Sep 17 00:00:00 2001 From: zimocode Date: Sun, 16 Feb 2020 12:46:06 +0800 Subject: [PATCH 7/9] try to fix #72 --- change.log | 4 ++-- js/background.js | 18 +++++++++--------- js/event.js | 2 +- manifest.json | 7 +++---- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/change.log b/change.log index d08a3e4..8cad15e 100644 --- a/change.log +++ b/change.log @@ -1,12 +1,12 @@ { "log": [ { - "ver":"6.6.260.1043", + "ver":"6.6.260.1044", "date":"2020.02.16", "content":[ "new action: magnet", "upgrade homepage", - "fix bug: issues@github: #74" + "fix bug: issues@github: #74, try to fix #72" ] }, { diff --git a/js/background.js b/js/background.js index 6ea3f21..cf91558 100644 --- a/js/background.js +++ b/js/background.js @@ -1568,7 +1568,7 @@ var sub={ var theURL, clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.focus(); - document.execCommand('paste', false, null); + document.execCommand('paste'); theURL=clipOBJ.value; clipOBJ.remove(); @@ -1657,7 +1657,7 @@ var sub={ break; } clipOBJ.select(); - document.execCommand('copy', false, null); + document.execCommand('copy'); clipOBJ.remove(); }) } @@ -1771,7 +1771,7 @@ var sub={ var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.value=sub.message.selEle.txt; clipOBJ.select(); - document.execCommand('copy', false, null); + document.execCommand('copy'); clipOBJ.remove(); } var thepers=["clipboardRead"]; @@ -1809,7 +1809,7 @@ var sub={ console.log("txtsearchclip") let _str,_obj=document.body.appendChild(document.createElement("textarea")); _obj.focus(); - document.execCommand('paste', false, null); + document.execCommand('paste'); _str=_obj.value; console.log(_obj) _obj.remove(); @@ -1894,7 +1894,7 @@ var sub={ var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.value=sub.message.selEle.lnk; clipOBJ.select(); - document.execCommand('copy', false, null); + document.execCommand('copy'); clipOBJ.remove(); } var thepers=["clipboardRead"]; @@ -1907,7 +1907,7 @@ var sub={ var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.value=sub.message.selEle.str; clipOBJ.select(); - document.execCommand('copy', false, null); + document.execCommand('copy'); clipOBJ.remove(); } var thepers=["clipboardRead"]; @@ -1920,7 +1920,7 @@ var sub={ var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.value=''+sub.message.selEle.str+'<\/a>'; clipOBJ.select(); - document.execCommand('copy', false, null); + document.execCommand('copy'); clipOBJ.remove(); } var thepers=["clipboardRead"]; @@ -1985,7 +1985,7 @@ var sub={ var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.value=sub.message.selEle.img; clipOBJ.select(); - document.execCommand('copy', false, null); + document.execCommand('copy'); clipOBJ.remove(); } @@ -3767,7 +3767,7 @@ var sub={ if(sub.cons.permissions.contains("clipboardWrite")) { var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.focus(); - document.execCommand('paste', false, null); + document.execCommand('paste'); var clipData=clipOBJ.value; clipOBJ.remove(); sub.theConf.paste=clipData; diff --git a/js/event.js b/js/event.js index f282ab9..8ed8c9d 100644 --- a/js/event.js +++ b/js/event.js @@ -1041,7 +1041,7 @@ var sue={ case"paste": var clipOBJ=document.body.appendChild(document.createElement("textarea")); clipOBJ.focus(); - document.execCommand('paste', false, null); + document.execCommand('paste'); var clipData=clipOBJ.value; sue.startEle.value+=response.paste; break; diff --git a/manifest.json b/manifest.json index 32d8199..0257add 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "minimum_chrome_version": "22", "name": "smartUp Gestures(Beta)", "short_name":"smartUp", - "version": "6.6.260.1043", + "version": "6.6.260.1044", "description": "__MSG_ext_des__", "default_locale": "en", "author":"zimo", @@ -41,7 +41,6 @@ "image/*", "icon.png" ], - "incognito": "split", - "permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","tts"], - "optional_permissions": ["downloads","downloads.shelf","clipboardRead","clipboardWrite","bookmarks","history","management","sessions","pageCapture","background","topSites"] +"permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","management","sessions"], +"optional_permissions": ["browserSettings","downloads","clipboardRead","clipboardWrite","bookmarks","history","topSites"] } \ No newline at end of file From f8ab468ec0139d8f7503ba16be94f0af49e8d842 Mon Sep 17 00:00:00 2001 From: zimocode Date: Sun, 16 Feb 2020 13:21:41 +0800 Subject: [PATCH 8/9] fix #84 --- change.log | 4 ++-- js/background.js | 7 +++++++ manifest.json | 8 ++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/change.log b/change.log index 8cad15e..68ba79e 100644 --- a/change.log +++ b/change.log @@ -1,12 +1,12 @@ { "log": [ { - "ver":"6.6.260.1044", + "ver":"6.6.260.1045", "date":"2020.02.16", "content":[ "new action: magnet", "upgrade homepage", - "fix bug: issues@github: #74, try to fix #72" + "fix bug: issues@github: #74, #84, try to fix #72" ] }, { diff --git a/js/background.js b/js/background.js index cf91558..3be213d 100644 --- a/js/background.js +++ b/js/background.js @@ -2890,6 +2890,13 @@ var sub={ else if(config.version<45){ sub.setBackup("45") } + else if(config.version<46){ + sub.setBackup("46"); + } + }, + _46:function(){ + config.version=46; + sub.saveConf(true); }, _45:function(){ config.touch={}; diff --git a/manifest.json b/manifest.json index 0257add..2222b81 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "minimum_chrome_version": "22", "name": "smartUp Gestures(Beta)", "short_name":"smartUp", - "version": "6.6.260.1044", + "version": "6.6.260.1045", "description": "__MSG_ext_des__", "default_locale": "en", "author":"zimo", @@ -41,6 +41,6 @@ "image/*", "icon.png" ], -"permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","management","sessions"], -"optional_permissions": ["browserSettings","downloads","clipboardRead","clipboardWrite","bookmarks","history","topSites"] -} \ No newline at end of file + "incognito": "split", + "permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","tts"], + "optional_permissions": ["downloads","downloads.shelf","clipboardRead","clipboardWrite","bookmarks","history","management","sessions","pageCapture","background","topSites"] \ No newline at end of file From f01b089189e916f0071bb6726c99b10d96125f5b Mon Sep 17 00:00:00 2001 From: zimocode Date: Sun, 16 Feb 2020 13:46:37 +0800 Subject: [PATCH 9/9] update --- manifest.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 2222b81..b32ecc4 100644 --- a/manifest.json +++ b/manifest.json @@ -43,4 +43,5 @@ ], "incognito": "split", "permissions": ["tabs","","notifications","storage","contextMenus","unlimitedStorage","tts"], - "optional_permissions": ["downloads","downloads.shelf","clipboardRead","clipboardWrite","bookmarks","history","management","sessions","pageCapture","background","topSites"] \ No newline at end of file + "optional_permissions": ["downloads","downloads.shelf","clipboardRead","clipboardWrite","bookmarks","history","management","sessions","pageCapture","background","topSites"] +} \ No newline at end of file