├── .gitattributes ├── .gitignore ├── README.md ├── chrome ├── License.txt ├── _locales │ ├── en │ │ └── messages.json │ └── zh_CN │ │ └── messages.json ├── background.html ├── bookmark.html ├── closed.html ├── css │ ├── history-rtl.css │ ├── history.css │ ├── img │ │ ├── diy │ │ │ ├── 1_close.png │ │ │ ├── 1_open.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ ├── line_conn.gif │ │ ├── loading.gif │ │ ├── zTreeStandard.gif │ │ └── zTreeStandard.png │ ├── options-rtl.css │ ├── options.css │ ├── popup-rtl.css │ ├── popup.css │ └── zTreeStyle.css ├── history.html ├── history2.html ├── images │ ├── alert-bg.png │ ├── bg.gif │ ├── blank.png │ ├── btn_donate_LG.gif │ ├── check.png │ ├── close.gif │ ├── cog.png │ ├── cross.png │ ├── deleting.gif │ ├── drtb-@2x.png │ ├── drtb.png │ ├── edit-items.gif │ ├── group-toggle-@2x.png │ ├── group-toggle.png │ ├── handle-bg-@2x.png │ ├── handle-bg.png │ ├── help-@2x.png │ ├── help.png │ ├── icon128-blank.png │ ├── icon16-other.png │ ├── icon19-arrow.png │ ├── icon19-arrowbox.png │ ├── icon19-blank.png │ ├── icon19-circle-@2x.png │ ├── icon19-circle.png │ ├── icon19-down.png │ ├── icon19-edge.png │ ├── icon19-neat.png │ ├── icon19-other.png │ ├── icon19-pink-@2x.png │ ├── icon19-pink.png │ ├── icon19.png │ ├── icon32-blank.png │ ├── icon38-blank.png │ ├── icon48-blank.png │ ├── legend-@2x.gif │ ├── legend.gif │ ├── loading-bg.png │ ├── loading.gif │ ├── logo.png │ ├── main-icon128.png │ ├── main-icon19.png │ ├── main-icon32.png │ ├── main-icon38.png │ ├── main-icon48.png │ ├── move-@2x.png │ ├── move.png │ ├── options-bg.gif │ ├── order-toggle-@2x.png │ ├── order-toggle.png │ ├── orderby-toggle-@2x.png │ ├── orderby-toggle.png │ ├── pin-grey.png │ ├── pin.png │ ├── preview-icon.gif │ ├── remove.png │ ├── rh-popup-options-@2x.png │ ├── rh-popup-options.png │ ├── rhtitle-bg.gif │ ├── save-bg.gif │ ├── scrollbar-down-active.gif │ ├── scrollbar-down.gif │ ├── scrollbar-handle-active.gif │ ├── scrollbar-handle.gif │ ├── scrollbar-up-active.gif │ ├── scrollbar-up.gif │ ├── search.gif │ ├── seperator.gif │ ├── share-bg.png │ ├── slider-bg.gif │ ├── star-grey.png │ ├── star.png │ ├── tab-about.png │ ├── tab-bg.gif │ ├── tab-changelog.png │ ├── tab-options.png │ ├── tab-translations.png │ ├── tab-twitter.png │ ├── toggle-@2x.png │ ├── toggle.png │ ├── toggle2-@2x.png │ ├── toggle2.png │ ├── tree-128.png │ ├── tree-16.png │ ├── tree-19.png │ ├── tree-32.png │ ├── tree-38.png │ ├── tree-48.png │ ├── tree.png │ ├── ui-delete.png │ ├── ui-pin.png │ └── ui-share.png ├── manifest.json ├── options.html ├── popup.html └── scripts │ ├── background.js │ ├── bookmark.js │ ├── closed.js │ ├── func.js │ ├── fuzzysearch.js │ ├── history-rtl.js │ ├── history.js │ ├── history2.js │ ├── jquery-1.4.4.min.js │ ├── jquery-3.6.0.min.js │ ├── jquery.ztree.core.js │ ├── jquery.ztree.exhide.js │ ├── moo.js │ ├── options-rtl.js │ ├── options.js │ ├── popup-rtl.js │ └── popup.js └── screen.jpg /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.com 2 | *.class 3 | *.dll 4 | *.exe 5 | *.o 6 | *.so 7 | *.7z 8 | *.dmg 9 | *.gz 10 | *.iso 11 | *.jar 12 | *.rar 13 | *.tar 14 | *.zip 15 | *.log 16 | *.sql 17 | *.sqlite 18 | *.pem 19 | *.crx 20 | *.zip 21 | .DS_Store 22 | .DS_Store? 23 | ._* 24 | .Spotlight-V100 25 | .Trashes 26 | ehthumbs.db 27 | Thumbs.db 28 | node_modules 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tree Style Histyle 2 | 3 | ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/tumuyan/Tree-Style-History?label=github) 4 | [![Microsoft Edge Addons](https://img.shields.io/badge/dynamic/json?label=%20Edge&query=%24.version&url=https%3A%2F%2Fmicrosoftedge.microsoft.com%2Faddons%2Fgetproductdetailsbycrxid%2Fgfmkhnaldbgcpoddmapciblllofekbpn)](https://microsoftedge.microsoft.com/addons/detail/gfmkhnaldbgcpoddmapciblllofekbpn) 5 | [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/khcenbpnhbeplojhaolbpldmoppicold)](https://chrome.google.com/webstore/detail/tree-style-history/khcenbpnhbeplojhaolbpldmoppicold) 6 | [![CC BY-NC-ND](https://img.shields.io/badge/CC-BY--NC--ND-blue)](./chrome/License.txt) 7 | 8 | This extension shows your recent browser history in tree style. 9 | When you browser pages from internet, you always jump from one page to another by clicking hyper-text links. This extension shows such a jumping relationship through a tree structure, help you find out what you were doing, what website you visited, and whether something has been done. 10 | 11 | Also following features are available. 12 | 1. Use the right-click menu to quickly search the history for current site, or the site linked to. 13 | 2. Tree view of recently closed pages. They are group by when they were closed and whether they were closed properly. 14 | 3. Linear view of bookmarks. Usually browser shows bookmarks in tree style, this extension does the opposite, reorders and displays bookmarks by time and site. 15 | 4. Quickly switch tabs in popup page. Sort tabs in reverse order of the time you visited. 16 | 17 | This work is based on [Recent History](https://github.com/umarsheikh13/recent-history) and has get the permission to modify and publish the code as a new exttension, many thanks to Umar. 18 | Currently only Chinese and English UI are available. 19 | 20 | 树状展示浏览器历史。 21 | 在使用浏览器访问网页时,用户往往会通过点击链接,从一个页面跳转到另一个页面。本扩展通过树状结构展示了这样的跳转关系,从而让用户能够更快地弄清楚自己当时在做什么,访问了什么网站,当时要做的事情是否已经完成。 22 | 除此核心功能外,还有如下特色: 23 | 1. 使用右键菜单,快速搜索当前网站,或者链接指向的网站的访问历史。 24 | 2. 树状查看最近关闭的页面。根据关闭页面的时间、是否正常关闭对页面自动分组。批量打开一个分组的全部页面。 25 | 3. 线性查看书签。通常浏览器使用树状结构展示书签;本扩展反其道而行,按照时间和网站重新排序并展示书签,方便查看和整理最新收藏的内容。 26 | 4. 快速切换最近访问的标签页。在弹窗中按照访问时刻倒序排列标签页。 27 | 28 | 灵感来自Firefox扩展[voyage](https://docs.google.com/document/d/1oaJjS9zWGQDBzy4wE403P7V2nQukMql_sfvAURl2noI/preview),后来ff飙版本的时候这个扩展就废了,现在连发布页都被删除。 29 | 我一直没有再见到类似的扩展,所以自己就搓了一个,算是完成多年夙愿。 30 | 基于Umar的扩展[Recent History](https://github.com/umarsheikh13/recent-history)修改,已经获得原作者Umar的许可可以修改并且作为一个新的扩展进行发布,非常感谢他的劳动和许可。 31 | 32 | 33 | ## Policy 34 | 35 | Tree Style History collects your browser history, analyzes it and stores it on your computer, and shows it when needed. 36 | It does not upload data to the Internet or share it with other programs. When you uninstall the extension, all saved data will be automatically erased by the browser. 37 | 38 | Tree Style History会收集您的浏览器记录,分析并存储到您的计算机内,并在需要的时候进行展示。 39 | 它不会上传数据上传到互联网或者分享给其他程序。当您卸载扩展时,所有保存的数据均会被浏览器自动清除。 40 | 41 | 42 | ## Install 43 | I have uploaded it to Edge Add-ons 44 | https://microsoftedge.microsoft.com/addons/detail/gfmkhnaldbgcpoddmapciblllofekbpn 45 | 46 | I don't have Chrome Web Store developer account, but @oXnMe uploaded it to Chrome Web Store 47 | https://chrome.google.com/webstore/detail/tree-style-history/khcenbpnhbeplojhaolbpldmoppicold 48 | 49 | Or download - unzip - load the folder in developer mode. 50 | https://github.com/tumuyan/Tree-Style-History/issues/1 51 | 52 | **Both Chrome and Edge require extensions adapt to Manifest V3, but I couldn't update this extension to Manifest V3, so this extension will soon become unusable.** 53 | 54 | 已经上传到Edge外接程序商店 55 | https://microsoftedge.microsoft.com/addons/detail/gfmkhnaldbgcpoddmapciblllofekbpn 56 | 57 | 我没有Chrome商店的开发者帐号,但是有网友代上传了Chrome商店. 58 | https://chrome.google.com/webstore/detail/tree-style-history/khcenbpnhbeplojhaolbpldmoppicold 59 | 60 | 或者打开浏览器的开发者模式,[下载压缩包](https://github.com/tumuyan/Tree-Style-History/archive/refs/heads/main.zip)解压并载入 61 | https://jingyan.baidu.com/article/ca2d939dfa5762ab6d31ce10.html 62 | https://github.com/tumuyan/Tree-Style-History/issues/1 63 | 64 | 65 | **Chrome和Edge都要求浏览器扩展适配manifest v3,但是由于我无法把此扩展更新到manifest v3,此扩展即将无法使用** 66 | 67 | ![screenshot](screen.jpg) 68 | 69 | ## Changlog 70 | 71 | 72 | 3.1.13 (2024/04/29) 调整popup窗口所能显示的项目数量的上限,处理favicon 为空的情况。 73 | 74 | 3.1.12 (2022/06/23) 增加功能:在弹窗中显示最近浏览的标签页,快速切换标签页; 优化功能(弹窗中的最近关闭的标签页):数据改为从Chrome API获取,点击改为恢复会话而不是打开网页,关闭窗口显示一笔记录点击时可以直接恢复窗口 75 | 76 | 3.1.11 (2022/06/11) 修改选项:自定义点击图标后的动作;调整右键菜单的文本,增加是否显示右键菜单的开关(#15) 77 | 78 | 3.1.10 (2022/06/10) 增加功能:在树状历史中点击链接时,如果已经有此网址对应的标签页,则跳转到已经打开的页面,而不新打开页面(另外在测试时发现浏览器要求升级manifest_version,试了试不太能轻松搞定,希望有朋友来帮忙完成更新!) 79 | 80 | 3.1.9 (2022/1/27) 完善线性历史、线性书签的外观:为按钮增加提示文字,优化时间显示,去除线性书签的无效checkbox和无效提示内容,显示线性书签的域名分类下包含的书签数量 81 | 82 | 3.1.8 (2021/8/9) 增加选项:在“弹窗设置”中增加“显示弹窗”选项,选择是(弹窗)否(打开树状历史) 83 | 84 | 3.1.7 (2021/6/24) 修复bug:在“最近关闭”的页面点击链接,会自动打开2个页面 85 | 86 | 3.1.6 (2021/6/7) 修复bug:Chrome无法显示默认历史管理器的问题(在Edge是正常的);线性书签无法正常显示小书签(bookmarklet) 87 | 88 | 3.1.5 (2021/5/29) 89 | 增加功能:线性书签标签页。 90 | 增加选项:指定在popup弹窗中点击“更多”时,打开浏览器默认的页面还是扩展内置页面。 91 | 修复bug:设置-下载参数时弹窗顺序显示有错误;日期没有自动补零。 92 | 已知问题:浏览器限制同一个扩展最多绑定4个快捷键,现在通过特别的方式绑定了5个快捷键,导致扩展默认快捷键无法生效,需要手动设置。 93 | 94 | 3.1.4 (2021/5/22) - 增加功能:树状历史中显示较少的历史(默认关闭,需要在设置中手动打开),批量打开最近关闭的页面。优化:微调外观,一定程度上实现了窄窗口自适应(但是使用Android kiwi浏览器测试确认手机不能实现主要功能),统一变更过滤域名的算法 95 | 96 | 3.1.3 (2021/5/18) - 增加功能:树状展示最近关闭的页面;修复:令日期和时间选项对树状历史同样生效;优化:微调外观,修改设置中的默认参数。 97 | 98 | 3.1.2 (2021/5/11) - 优化搜索浏览记录功能,增加选项同步功能(跟随浏览器账户自动同步),增加快捷键设置(可以通过设置快捷键替换默认历史记录管理器),缓存访问历史的网址数量,优化部分UI的样式和命名,增加清除缓存功能,优化网址过滤功能。 99 | 100 | 3.1.1 (2021/04/26) - 为树状历史页增加访问类型筛选功能,为树状历史增加loading动画/加大行间距,增加对网址标题特殊符号的处理,历史数量较少时自动载入前日记录,调整默认的设置参数,调整Chrome设置默认历史页面的选项(Edge屏蔽此功能),增加设置页的提示文字,优化历史缓存记录,降低搜索字数限制,增加暗黑模式(根据浏览器设置自动切换),调整popup页面外观,增加右键菜单“搜索此网站的浏览记录”。 101 | 102 | 3.1.0 (2021/04/18) - Add the basic tree style function. 103 | 104 | ## License 105 | 106 | Tree Style History, Tree Style History (Toolbar Icon) 107 | 108 | Copyright (c) 2021 Tumuyan 109 | 110 | This Work is based on Recent History and has get the 111 | permission to modify and publish the code as a new exttension. 112 | 113 | ---- 114 | 115 | Recent History, Recent History (Toolbar Icon) 116 | 117 | Copyright (c) 2011-2020 Umar Sheikh 118 | 119 | THE EXTENSION IS PROVIDED IN THE HOPE THAT IT WILL BE USEFUL, 120 | BUT WITHOUT ANY WARRANTY. IT IS PROVIDED "AS IS" WITHOUT 121 | WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, 122 | BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 123 | AND FITNESS FOR A PARTICULAR PURPOSE. 124 | 125 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW THE AUTHOR WILL 126 | BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 127 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 128 | INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS 129 | OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED 130 | BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE 131 | WITH ANY OTHER PROGRAMS), EVEN IF THE AUTHOR HAS BEEN ADVISED 132 | OF THE POSSIBILITY OF SUCH DAMAGES. 133 | 134 | Attribution-Noncommercial-No Derivative Works 3.0 Unported 135 | http://creativecommons.org/licenses/by-nc-nd/3.0/ 136 | -------------------------------------------------------------------------------- /chrome/License.txt: -------------------------------------------------------------------------------- 1 | 2 | Tree Style History, Tree Style History (Toolbar Icon) 3 | 4 | Copyright (c) 2021 Tumuyan 5 | 6 | This Work is based on Recent History and has get the 7 | permission to modify and publish the code as a new exttension. 8 | 9 | ---- 10 | 11 | Recent History, Recent History (Toolbar Icon) 12 | 13 | Copyright (c) 2011-2020 Umar Sheikh 14 | 15 | THE EXTENSION IS PROVIDED IN THE HOPE THAT IT WILL BE USEFUL, 16 | BUT WITHOUT ANY WARRANTY. IT IS PROVIDED "AS IS" WITHOUT 17 | WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, 18 | BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 19 | AND FITNESS FOR A PARTICULAR PURPOSE. 20 | 21 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW THE AUTHOR WILL 22 | BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 23 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 24 | INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS 25 | OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED 26 | BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE 27 | WITH ANY OTHER PROGRAMS), EVEN IF THE AUTHOR HAS BEEN ADVISED 28 | OF THE POSSIBILITY OF SUCH DAMAGES. 29 | 30 | Attribution-Noncommercial-No Derivative Works 3.0 Unported 31 | http://creativecommons.org/licenses/by-nc-nd/3.0/ 32 | -------------------------------------------------------------------------------- /chrome/_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "recentHistory": { 3 | "message": "Recent History" 4 | }, 5 | "recentlyClosedTabs": { 6 | "message": "Recently Closed Tabs" 7 | }, 8 | "mostVisited": { 9 | "message": "Most Visited" 10 | }, 11 | "recentBookmarks": { 12 | "message": "Recent Bookmarks" 13 | }, 14 | "pinned": { 15 | "message": "Pinned" 16 | }, 17 | "options": { 18 | "message": "Options" 19 | }, 20 | "translations": { 21 | "message": "Translations" 22 | }, 23 | "about": { 24 | "message": "About" 25 | }, 26 | "mainOptions": { 27 | "message": "Popup Options" 28 | }, 29 | "styleOptions": { 30 | "message": "Style Options" 31 | }, 32 | "advanceOptions": { 33 | "message": "Others Options" 34 | }, 35 | "option1": { 36 | "message": "Number of Recent History Items" 37 | }, 38 | "option2": { 39 | "message": "Number of Recently Closed Tabs" 40 | }, 41 | "option2_2": { 42 | "message": "Number of Recent Tabs" 43 | }, 44 | "option3": { 45 | "message": "Number of Most Visited Items" 46 | }, 47 | "option4": { 48 | "message": "Number of Recently Bookmarked Items" 49 | }, 50 | "option5": { 51 | "message": "Pop-up Order" 52 | }, 53 | "option6": { 54 | "message": "History Page" 55 | }, 56 | "option7": { 57 | "message": "Date Format" 58 | }, 59 | "option8": { 60 | "message": "Show Search Bar in Pop-up" 61 | }, 62 | "option9": { 63 | "message": "Preview" 64 | }, 65 | "option10": { 66 | "message": "Show URL" 67 | }, 68 | "option11": { 69 | "message": "Show Separator" 70 | }, 71 | "option12": { 72 | "message": "Show Extra Info" 73 | }, 74 | "option13": { 75 | "message": "Show Background Colours" 76 | }, 77 | "option14": { 78 | "message": "Pop-up Icon" 79 | }, 80 | "option15": { 81 | "message": "Pop-up Width" 82 | }, 83 | "option16": { 84 | "message": "Restore Items to Most Visited" 85 | }, 86 | "option17": { 87 | "message": "Filter Domains from History" 88 | }, 89 | "option18": { 90 | "message": "Click Item Action" 91 | }, 92 | "option181": { 93 | "message": "Click More Action" 94 | }, 95 | "option19": { 96 | "message": "Pop-up Theme" 97 | }, 98 | "option20": { 99 | "message": "Time Format" 100 | }, 101 | "option21": { 102 | "message": "Social Bookmarking" 103 | }, 104 | "option22": { 105 | "message": "Show less history" 106 | }, 107 | "option22tip": { 108 | "message": "Not show the record for refresh page, repeat urls without parent node and child node." 109 | }, 110 | "help1": { 111 | "message": "The number of recent history items in the pop-up" 112 | }, 113 | "help2": { 114 | "message": "The number of recently closed tabs in the pop-up" 115 | }, 116 | "help2_2": { 117 | "message": "The number of recently tabs in the pop-up" 118 | }, 119 | "help3": { 120 | "message": "The number of most visited items in the pop-up" 121 | }, 122 | "help4": { 123 | "message": "The number of recently bookmarked items in the pop-up" 124 | }, 125 | "help5": { 126 | "message": "The order in which the specified items will be shown" 127 | }, 128 | "help6": { 129 | "message": "Which history manager you would like to use" 130 | }, 131 | "help7": { 132 | "message": "The format of the date used throughout the extension" 133 | }, 134 | "help8": { 135 | "message": "The search bar situated at the top of the pop-up" 136 | }, 137 | "help10": { 138 | "message": "The page URL situated below the item title" 139 | }, 140 | "help11": { 141 | "message": "The separator situated at the bottom of the item" 142 | }, 143 | "help12": { 144 | "message": "The extra information next to the page URL (i.e. visit count and date)" 145 | }, 146 | "help13": { 147 | "message": "If activated will display a different colour for different items such as a bookmarked or pinned URL in the recent history and recently closed tabs list" 148 | }, 149 | "help16": { 150 | "message": "The URLs you have removed from the most visited list. Click on the cross next to the URL to restore it to the list." 151 | }, 152 | "help17": { 153 | "message": "The URLs from the domain names you do not wish to be displayed in the history list, e.g. foobar.com" 154 | }, 155 | "help18": { 156 | "message": "What should happen when you click on an item in the pop-up" 157 | }, 158 | "help181": { 159 | "message": "What should happen when you click MORE in the pop-up" 160 | }, 161 | "help20": { 162 | "message": "The format of the time used throughout the extension" 163 | }, 164 | "help21": { 165 | "message": "This adds a share icon next to items in the pop-up when editing" 166 | }, 167 | "yes": { 168 | "message": "Yes" 169 | }, 170 | "no": { 171 | "message": "No" 172 | }, 173 | "visits": { 174 | "message": "Visits" 175 | }, 176 | "saveOptions": { 177 | "message": "Save Options" 178 | }, 179 | "saving": { 180 | "message": "Saving..." 181 | }, 182 | "saved": { 183 | "message": "Saved!" 184 | }, 185 | "click1": { 186 | "message": "Open in current tab" 187 | }, 188 | "click2": { 189 | "message": "Open in new tab" 190 | }, 191 | "click3": { 192 | "message": "Open in new background tab" 193 | }, 194 | "click4": { 195 | "message": "Open in Tree Style History" 196 | }, 197 | "click5": { 198 | "message": "Open in browser default viewer" 199 | }, 200 | "translation1": { 201 | "message": "Please help make Recent History better by providing new and better translations for it. This page has been created to make it easier for you to translate this extension." 202 | }, 203 | "translation2": { 204 | "message": "Please follow the steps below to translate Recent History into your language:" 205 | }, 206 | "translation3": { 207 | "message": "Scroll to the bottom of this page." 208 | }, 209 | "translation4": { 210 | "message": "Fill in the form correctly." 211 | }, 212 | "translation5": { 213 | "message": "Translate all the 'messages' into your chosen language." 214 | }, 215 | "translation6": { 216 | "message": "Click on the 'Submit' button." 217 | }, 218 | "translation7": { 219 | "message": "Done!" 220 | }, 221 | "aboutText": { 222 | "message": "This extension displays your recent history in a tree style." 223 | }, 224 | "successfullyInstalled": { 225 | "message": "Successfully Installed/Updated" 226 | }, 227 | "whatsNew": { 228 | "message": "What's New?" 229 | }, 230 | "version": { 231 | "message": "Version" 232 | }, 233 | "showAllHistory": { 234 | "message": "Show All History" 235 | }, 236 | "noResults": { 237 | "message": "No results found" 238 | }, 239 | "currentHistory": { 240 | "message": "Current Date" 241 | }, 242 | "allHistory": { 243 | "message": "All History" 244 | }, 245 | "totalHistoryItems": { 246 | "message": "Total History Items:" 247 | }, 248 | "deleteItems": { 249 | "message": "Delete Items" 250 | }, 251 | "mondayLetter": { 252 | "message": "M" 253 | }, 254 | "tuesdayLetter": { 255 | "message": "T" 256 | }, 257 | "wednesdayLetter": { 258 | "message": "W" 259 | }, 260 | "thursdayLetter": { 261 | "message": "T" 262 | }, 263 | "fridayLetter": { 264 | "message": "F" 265 | }, 266 | "saturdayLetter": { 267 | "message": "S" 268 | }, 269 | "sundayLetter": { 270 | "message": "S" 271 | }, 272 | "AM": { 273 | "message": "am" 274 | }, 275 | "PM": { 276 | "message": "pm" 277 | }, 278 | "12hour": { 279 | "message": "12 Hour" 280 | }, 281 | "24hour": { 282 | "message": "24 Hour" 283 | }, 284 | "loading": { 285 | "message": "Loading..." 286 | }, 287 | "original": { 288 | "message": "Original" 289 | }, 290 | "classic": { 291 | "message": "Classic" 292 | }, 293 | "pink": { 294 | "message": "Pink" 295 | }, 296 | "ui1": { 297 | "message": "Pin item?" 298 | }, 299 | "ui2": { 300 | "message": "Delete item from history?" 301 | }, 302 | "ui3": { 303 | "message": "Delete item from recently closed tabs?" 304 | }, 305 | "ui4": { 306 | "message": "Delete bookmark?" 307 | }, 308 | "ui5": { 309 | "message": "Delete item from the most visited list?" 310 | }, 311 | "ui6": { 312 | "message": "Unpin?" 313 | }, 314 | "tips": { 315 | "message": "Helpful Tips" 316 | }, 317 | "tip1": { 318 | "message": "Pop-up: You can open an item in a new background tab by left clicking the item while pressing and holding down Ctrl." 319 | }, 320 | "tip2": { 321 | "message": "Pop-up: By clicking on the cogs next to the titles you can delete, pin and share items." 322 | }, 323 | "tip3": { 324 | "message": "Options: You can press the up and down keys to increase and decrease numerical values when the field is selected." 325 | }, 326 | "tip4": { 327 | "message": "Options: You can press Enter to add a domain to the filtered list." 328 | }, 329 | "tip5": { 330 | "message": "History: You can use Shift click to select multiple items." 331 | }, 332 | "tip6": { 333 | "message": "History: Use the buttons in the blue toolbar to manipulate the way the history items are shown." 334 | }, 335 | "optionloadrange": { 336 | "message": "Cache history for tree style (days at least)" 337 | }, 338 | "optionloadrange2": { 339 | "message": "Display how manny days for tree style history" 340 | }, 341 | "optionloadrange3": { 342 | "message": "Life time for cached history " 343 | }, 344 | "treeOptions": { 345 | "message": "Tree Style history" 346 | }, 347 | "treeOpen": { 348 | "message": "Open tree style" 349 | }, 350 | "treePolicy": { 351 | "message": "Tree Style History collects your browser history, analyzes it and stores it on your computer, and displays it when needed.
It does not upload data to the Internet or share it with other programs. When you uninstall the extension, all saved data will be automatically erased by the browser.
This Work is based on Recent History and has get the permission to modify and publish the code as a new exttension." 352 | }, 353 | "more": { 354 | "message": "More" 355 | }, 356 | "searchSite": { 357 | "message": "Search history in this site" 358 | }, 359 | "plsInputUrl": { 360 | "message": "Please input right URL" 361 | }, 362 | "longInputUrl": { 363 | "message": "The length of your input URL is too long" 364 | }, 365 | "shortcuts": { 366 | "message": "Shortcuts" 367 | }, 368 | "shortcutsTip": { 369 | "message": "Set shortcuts for popup, tree style history, liner history and recent closed page" 370 | }, 371 | "name": { 372 | "message": "Tree Style History" 373 | }, 374 | "nameShort": { 375 | "message": "Tree History" 376 | }, 377 | "linerHistory": { 378 | "message": "Liner History" 379 | }, 380 | "saveUpload": { 381 | "message": "Save & Upload (Beta)" 382 | }, 383 | "downloadConfig": { 384 | "message": "Download Basic Config(Without Filter)" 385 | }, 386 | "downloadConfig2": { 387 | "message": "Download & Merge Config" 388 | }, 389 | "defaultConfig": { 390 | "message": "Default Config" 391 | }, 392 | "saveFail": { 393 | "message": "Fail" 394 | }, 395 | "deleteCache": { 396 | "message": "Delete Cache" 397 | }, 398 | "deleteCacheTip": { 399 | "message": "Delete Cache" 400 | }, 401 | "clickMe": { 402 | "message": "Click Me" 403 | }, 404 | "done": { 405 | "message": "Done" 406 | }, 407 | "deleteList": { 408 | "message": "Clear List" 409 | }, 410 | "mergeList": { 411 | "message": "Merge list from server" 412 | }, 413 | "filterSetting": { 414 | "message": "Filter Setting" 415 | }, 416 | "addItemNum": { 417 | "message": "Add item: " 418 | }, 419 | "closeHistory": { 420 | "message": "Recent Close" 421 | }, 422 | "OpenClosedHistory": { 423 | "message": "Open recent closed Tabs" 424 | }, 425 | "abnormalClosedTab": { 426 | "message": "Abnormal Closed Tabs (Click me to open the tab group)" 427 | }, 428 | "dateConfig": { 429 | "message": "Date Format Config" 430 | }, 431 | "showCalendar": { 432 | "message": "Date Picker" 433 | }, 434 | "fastClosedTab": { 435 | "message": "Fast Closed Tabs (Click me to open the tab group)" 436 | }, 437 | "tidClosedTab": { 438 | "message": "Click me to open the tab group " 439 | }, 440 | "linerBookMark": { 441 | "message": "Liner Bookmark" 442 | }, 443 | "OpenBookMark": { 444 | "message": "Open Liner Bookmark" 445 | }, 446 | "BookMarkPath": { 447 | "message": "Show the path in liner bookmark view" 448 | }, 449 | "showPopup": { 450 | "message": "Show popup page" 451 | }, 452 | "showPopuptip": { 453 | "message": "Action for click the icon." 454 | }, 455 | "orderByTitle": { 456 | "message": "Order by title" 457 | }, 458 | "orderByTime": { 459 | "message": "Order by time" 460 | }, 461 | "group": { 462 | "message": "Group" 463 | }, 464 | "order": { 465 | "message": "Order" 466 | }, 467 | "UseContextMenu": { 468 | "message": "Use Context menu (need restarting browser)" 469 | }, 470 | "recentTabs": { 471 | "message": "Recent viewed tabs" 472 | } 473 | } -------------------------------------------------------------------------------- /chrome/_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "recentHistory": { 3 | "message": "最近访问历史" 4 | }, 5 | "recentlyClosedTabs": { 6 | "message": "最近关闭的标签" 7 | }, 8 | "mostVisited": { 9 | "message": "最常访问" 10 | }, 11 | "recentBookmarks": { 12 | "message": "最近添加的书签" 13 | }, 14 | "pinned": { 15 | "message": "钉住" 16 | }, 17 | "options": { 18 | "message": "设置" 19 | }, 20 | "translations": { 21 | "message": "翻译" 22 | }, 23 | "about": { 24 | "message": "关于" 25 | }, 26 | "mainOptions": { 27 | "message": "弹窗设置" 28 | }, 29 | "styleOptions": { 30 | "message": "样式设置" 31 | }, 32 | "advanceOptions": { 33 | "message": "其他设置" 34 | }, 35 | "option1": { 36 | "message": "最多显示多少条最近访问历史" 37 | }, 38 | "option2": { 39 | "message": "最多显示多少条最近关闭的标签" 40 | }, 41 | "option2_2": { 42 | "message": "最多显示多少个最近浏览的标签" 43 | }, 44 | "option3": { 45 | "message": "最多显示多少条最常访问页面" 46 | }, 47 | "option4": { 48 | "message": "最多显示多少条最近添加的书签" 49 | }, 50 | "option5": { 51 | "message": "弹窗顺序" 52 | }, 53 | "option6": { 54 | "message": "历史页" 55 | }, 56 | "option7": { 57 | "message": "日期格式" 58 | }, 59 | "option8": { 60 | "message": "在弹窗中显示搜索栏" 61 | }, 62 | "option9": { 63 | "message": "预览" 64 | }, 65 | "option10": { 66 | "message": "显示URL" 67 | }, 68 | "option11": { 69 | "message": "显示分隔线" 70 | }, 71 | "option12": { 72 | "message": "显示附加信息" 73 | }, 74 | "option13": { 75 | "message": "显示背景色" 76 | }, 77 | "option14": { 78 | "message": "弹窗图标" 79 | }, 80 | "option15": { 81 | "message": "弹窗宽度" 82 | }, 83 | "option16": { 84 | "message": "将项目恢复到最常访问列表" 85 | }, 86 | "option17": { 87 | "message": "隐藏指定域名的访问历史" 88 | }, 89 | "option18": { 90 | "message": "单击记录的操作" 91 | }, 92 | "option181": { 93 | "message": "单击更多的操作" 94 | }, 95 | "option19": { 96 | "message": "弹窗主题" 97 | }, 98 | "option20": { 99 | "message": "时间格式" 100 | }, 101 | "option21": { 102 | "message": "社交网络书签" 103 | }, 104 | "option22": { 105 | "message": "显示较少的历史" 106 | }, 107 | "option22tip": { 108 | "message": "不显示刷新页面的历史记录、没有跳转关系的重复记录,从而减少展示的历史记录" 109 | }, 110 | "help1": { 111 | "message": "在弹窗中最多显示多少条最近访问历史" 112 | }, 113 | "help2": { 114 | "message": "在弹窗中最多显示多少条最近关闭的标签" 115 | }, 116 | "help2_2": { 117 | "message": "在弹窗中最多显示多少个最近浏览的标签" 118 | }, 119 | "help3": { 120 | "message": "在弹窗中最多显示多少条最常访问的页面" 121 | }, 122 | "help4": { 123 | "message": "在弹窗中最多显示多少条最近添加的书签" 124 | }, 125 | "help5": { 126 | "message": "项目的排列顺序" 127 | }, 128 | "help6": { 129 | "message": "使用哪个历史记录管理器" 130 | }, 131 | "help7": { 132 | "message": "本扩展使用的日期格式" 133 | }, 134 | "help8": { 135 | "message": "在弹窗顶部显示搜索栏" 136 | }, 137 | "help10": { 138 | "message": "在项目标题下显示页面URL" 139 | }, 140 | "help11": { 141 | "message": "在项目底部显示分隔线" 142 | }, 143 | "help12": { 144 | "message": "在页面URL旁显示附加信息,如访问次数和日期" 145 | }, 146 | "help13": { 147 | "message": "如果启用,将为不同项目使用不同的颜色,如在最近访问历史和最近关闭的标签中那些添加过书签的URL,或钉住的URL" 148 | }, 149 | "help16": { 150 | "message": "此处显示你从最常访问列表中删除的URL。点击右边的X可以将其恢复到最常访问列表" 151 | }, 152 | "help17": { 153 | "message": "此处指定你不想在访问历史中显示的网址。输入的内容必须包含域名,如163.com;注意指定顶级域名不能覆盖一级域名,如指定163.com不会隐藏music.163.com的访问记录,但是二级域名可以覆盖二级域名。" 154 | }, 155 | "help18": { 156 | "message": "当点击弹窗中的项目时,执行什么操作" 157 | }, 158 | "help181": { 159 | "message": "当点击弹窗中的“更多”时,执行什么操作" 160 | }, 161 | "help20": { 162 | "message": "本扩展使用的时间格式" 163 | }, 164 | "help21": { 165 | "message": "在弹窗中编辑时,在项目旁显示分享按钮" 166 | }, 167 | "help22": { 168 | "message": "打开浏览器时插件会检查已缓存的历史记录是否大于设定的天数。如果不足,会消耗资源进行缓存" 169 | }, 170 | "help23": { 171 | "message": "" 172 | }, 173 | "help24": { 174 | "message": "超出此范围的缓存记录会被自动清除,设为0则不清除" 175 | }, 176 | "help25": { 177 | "message": "如果当前日期的历史记录小于设定值,会自动加载前几天的历史,一直到加载的记录大于设定值" 178 | }, 179 | "yes": { 180 | "message": "是" 181 | }, 182 | "no": { 183 | "message": "否" 184 | }, 185 | "visits": { 186 | "message": "访问" 187 | }, 188 | "saveOptions": { 189 | "message": "保存设置" 190 | }, 191 | "saving": { 192 | "message": "正在保存..." 193 | }, 194 | "saved": { 195 | "message": "已保存!" 196 | }, 197 | "click1": { 198 | "message": "在当前标签中打开" 199 | }, 200 | "click2": { 201 | "message": "在新标签中打开" 202 | }, 203 | "click3": { 204 | "message": "在新后台标签中打开" 205 | }, 206 | "click4": { 207 | "message": "在Tree Style History中打开" 208 | }, 209 | "click5": { 210 | "message": "在浏览器默认查看器中打开" 211 | }, 212 | "translation1": { 213 | "message": "请提交更新更好的翻译来帮助改进Recent History。本页面可以简化你的翻译操作。" 214 | }, 215 | "translation2": { 216 | "message": "请按照以下步骤来翻译Recent History:" 217 | }, 218 | "translation3": { 219 | "message": "下拉本页面到底部。" 220 | }, 221 | "translation4": { 222 | "message": "正确填写表格。" 223 | }, 224 | "translation5": { 225 | "message": "将所有的信息翻译为你的语言。" 226 | }, 227 | "translation6": { 228 | "message": "点击“提交”按钮。" 229 | }, 230 | "translation7": { 231 | "message": "完成!" 232 | }, 233 | "aboutText": { 234 | "message": "以树形展示浏览器历史记录。" 235 | }, 236 | "successfullyInstalled": { 237 | "message": "成功安装/更新" 238 | }, 239 | "whatsNew": { 240 | "message": "有什么改进?" 241 | }, 242 | "version": { 243 | "message": "版本" 244 | }, 245 | "showAllHistory": { 246 | "message": "显示所有历史" 247 | }, 248 | "noResults": { 249 | "message": "未找到结果" 250 | }, 251 | "currentHistory": { 252 | "message": "当前日期" 253 | }, 254 | "allHistory": { 255 | "message": "所有历史" 256 | }, 257 | "totalHistoryItems": { 258 | "message": "总计历史条数:" 259 | }, 260 | "deleteItems": { 261 | "message": "删除项目" 262 | }, 263 | "mondayLetter": { 264 | "message": "一" 265 | }, 266 | "tuesdayLetter": { 267 | "message": "二" 268 | }, 269 | "wednesdayLetter": { 270 | "message": "三" 271 | }, 272 | "thursdayLetter": { 273 | "message": "四" 274 | }, 275 | "fridayLetter": { 276 | "message": "五" 277 | }, 278 | "saturdayLetter": { 279 | "message": "六" 280 | }, 281 | "sundayLetter": { 282 | "message": "日" 283 | }, 284 | "AM": { 285 | "message": "am" 286 | }, 287 | "PM": { 288 | "message": "pm" 289 | }, 290 | "12hour": { 291 | "message": "12小时" 292 | }, 293 | "24hour": { 294 | "message": "24小时" 295 | }, 296 | "loading": { 297 | "message": "正在载入..." 298 | }, 299 | "original": { 300 | "message": "原始" 301 | }, 302 | "classic": { 303 | "message": "经典" 304 | }, 305 | "pink": { 306 | "message": "粉红" 307 | }, 308 | "ui1": { 309 | "message": "钉住项目?" 310 | }, 311 | "ui2": { 312 | "message": "从历史中删除?" 313 | }, 314 | "ui3": { 315 | "message": "从最近关闭的标签中删除?" 316 | }, 317 | "ui4": { 318 | "message": "删除书签?" 319 | }, 320 | "ui5": { 321 | "message": "从最常访问列表中删除?" 322 | }, 323 | "ui6": { 324 | "message": "解除钉住?" 325 | }, 326 | "tips": { 327 | "message": "使用提示" 328 | }, 329 | "tip1": { 330 | "message": "弹窗:要在新的后台标签页中打开项目,可以按住Ctrl并左键单击此项目。" 331 | }, 332 | "tip2": { 333 | "message": "弹窗:单击标题旁的齿轮,可以删除、钉住和分享项目。" 334 | }, 335 | "tip3": { 336 | "message": "设置:更改一个数值型选项时,可以按上下箭头来加减此值。" 337 | }, 338 | "tip4": { 339 | "message": "设置:可以按回车来添加域名到过滤列表。" 340 | }, 341 | "tip5": { 342 | "message": "历史:可以按住Shift多选。" 343 | }, 344 | "tip6": { 345 | "message": "历史:使用蓝色工具栏中的按钮来更改历史项的显示方式。" 346 | }, 347 | "optionloadrange": { 348 | "message": "解析并缓存历史的天数" 349 | }, 350 | "optionloadrange2": { 351 | "message": "默认展示的历史的天数" 352 | }, 353 | "optionloadrange3": { 354 | "message": "缓存保留天数" 355 | }, 356 | "optionloadrange4": { 357 | "message": "至少展示的数量" 358 | }, 359 | "treeOptions": { 360 | "message": "树状历史" 361 | }, 362 | "treeOpen": { 363 | "message": "打开树状历史" 364 | }, 365 | "treePolicy": { 366 | "message": "Tree Style History会收集您的浏览器记录,分析并存储到您的计算机内,并在需要的时候进行展示。
它不会上传数据上传到互联网或者分享给其他程序。当您卸载扩展时,所有保存的数据均会被浏览器自动清除。
项目基于recent historic,已经获得原作者的许可进行修改并重新发布。" 367 | }, 368 | "more": { 369 | "message": "更多" 370 | }, 371 | "searchSite": { 372 | "message": "搜索此网站的浏览记录" 373 | }, 374 | "plsInputUrl": { 375 | "message": "请输入正确的域名" 376 | }, 377 | "longInputUrl": { 378 | "message": "输入的内容太长,不是正确的域名" 379 | }, 380 | "shortcuts": { 381 | "message": "设置快捷键" 382 | }, 383 | "shortcutsTip": { 384 | "message": "为popup弹窗、树状历史、线性历史、最近关闭的页面设置不同的快捷键" 385 | }, 386 | "name": { 387 | "message": "Tree Style History - 树形历史" 388 | }, 389 | "nameShort": { 390 | "message": "树形历史" 391 | }, 392 | "linerHistory": { 393 | "message": "线性历史" 394 | }, 395 | "saveUpload": { 396 | "message": "保存并上传参数" 397 | }, 398 | "downloadConfig": { 399 | "message": "下载参数(不含域名过滤设置)" 400 | }, 401 | "downloadConfig2": { 402 | "message": "下载基本参数并合并(预览功能)" 403 | }, 404 | "defaultConfig": { 405 | "message": "恢复默认" 406 | }, 407 | "saveFail": { 408 | "message": "失败" 409 | }, 410 | "deleteCache": { 411 | "message": "清除缓存" 412 | }, 413 | "clickMe": { 414 | "message": "点击这里" 415 | }, 416 | "done": { 417 | "message": "已完成" 418 | }, 419 | "deleteList": { 420 | "message": "清空列表" 421 | }, 422 | "mergeList": { 423 | "message": "合并当且列表和在线列表" 424 | }, 425 | "filterSetting": { 426 | "message": "域名过滤设置" 427 | }, 428 | "addItemNum": { 429 | "message": "增加数量: " 430 | }, 431 | "closeHistory": { 432 | "message": "最近关闭" 433 | }, 434 | "OpenClosedHistory": { 435 | "message": "打开最近关闭的页面的记录" 436 | }, 437 | "abnormalClosedTab": { 438 | "message": "没能正常关闭的页面(点击可以批量打开分组)" 439 | }, 440 | "dateConfig": { 441 | "message": "日期时间格式设置" 442 | }, 443 | "showCalendar": { 444 | "message": "选择日期" 445 | }, 446 | "fastClosedTab": { 447 | "message": "快速关闭的页面(点击可以批量打开分组)" 448 | }, 449 | "tidClosedTab": { 450 | "message": "点击可以批量打开分组 " 451 | }, 452 | "linerBookMark": { 453 | "message": "线性书签" 454 | }, 455 | "OpenBookMark": { 456 | "message": "打开线性书签" 457 | }, 458 | "BookMarkPath": { 459 | "message": "在线性书签中显示保存路径" 460 | }, 461 | "showPopup": { 462 | "message": "显示弹窗" 463 | }, 464 | "showPopuptip": { 465 | "message": "点击扩展图标或者激活扩展时的动作" 466 | }, 467 | "orderByTitle": { 468 | "message": "按名称排序" 469 | }, 470 | "orderByTime": { 471 | "message": "按时间排序" 472 | }, 473 | "group": { 474 | "message": "分组" 475 | }, 476 | "order": { 477 | "message": "排序" 478 | }, 479 | "UseContextMenu": { 480 | "message": "启用快捷菜单(重新打开浏览器时生效)" 481 | }, 482 | "recentTabs": { 483 | "message": "最近浏览的标签页" 484 | } 485 | } -------------------------------------------------------------------------------- /chrome/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/bookmark.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Liner Bookmark | Tree Style History 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 27 | 28 |
29 | 30 | 31 | 32 | 35 | 36 | 37 | 54 | 55 |

38 |
39 | 41 | 42 | 43 | 44 | 45 |   46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
56 |
57 |
58 | Loading 59 |
60 | 61 | 62 | -------------------------------------------------------------------------------- /chrome/closed.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Recent Close | Tree Style History 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 35 | 36 |
37 | 38 | 39 | 43 | 46 | 47 | 48 | 49 | 50 | 73 | 74 |
40 |

41 | 42 |
51 |
52 |
    53 | 57 |
    58 | 59 | 72 |
    75 |
    76 | 77 | 78 | 79 | 84 | 130 | 131 |
    80 |
    81 |
    82 | 83 |
    85 |
    86 | 87 | 88 | 89 |
    90 |
    91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 |
    99 |
    100 | 102 |
    0 104 | 105 |
    106 | 107 | 108 |

    109 |

    110 | 🔗 111 | 112 | 113 | 🧭 114 | 🏠 115 | 116 | 🔄 117 | 🔍 118 |
    119 |

    120 | 125 |
    126 | 127 |
    128 | 129 |
    132 |
    133 |
    134 |
    135 | Loading 136 |
    137 | 138 | 139 | -------------------------------------------------------------------------------- /chrome/css/history-rtl.css: -------------------------------------------------------------------------------- 1 | 2 | #navigation-menu { 3 | left: auto; 4 | right: 0; 5 | } 6 | 7 | #navigation-menu h1 { 8 | text-align: right; 9 | direction: rtl; 10 | margin-left: 0; 11 | margin-right: 23px; 12 | } 13 | 14 | #history-container { 15 | margin-left: 10px; 16 | margin-right: 180px; 17 | } 18 | 19 | #calendar { 20 | right: 190px; 21 | } 22 | 23 | #navigation-menu ul li a { 24 | border-right: 6px solid #FFF; 25 | border-left: 0 none; 26 | padding-left: 0; 27 | padding-right: 18px; 28 | } 29 | 30 | #rh-search { 31 | background-position: 3px 3px; 32 | text-align: right; 33 | direction: rtl; 34 | } 35 | 36 | .tip-holder, #navigation-menu ul li { 37 | text-align: right; 38 | direction: rtl; 39 | } 40 | -------------------------------------------------------------------------------- /chrome/css/history.css: -------------------------------------------------------------------------------- 1 | * { 2 | outline: none; 3 | } 4 | 5 | body { 6 | overflow-x: hidden; 7 | font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; 8 | font-size: 13px; 9 | margin: 0; 10 | padding: 0; 11 | } 12 | 13 | a { 14 | -webkit-transition: all 0.2s linear; 15 | transition: all 0.2s linear; 16 | color: rgb(17, 85, 204); 17 | text-decoration: none; 18 | } 19 | 20 | form { 21 | padding: 0; 22 | margin: 0; 23 | } 24 | 25 | input[type="text"] { 26 | -webkit-border-radius: 2px; 27 | border: 1px solid #bfbfbf; 28 | padding: 5px; 29 | } 30 | 31 | input[type="text"]:focus { 32 | border-color: rgb(17, 85, 204); 33 | } 34 | 35 | .select { 36 | -webkit-appearance: button; 37 | -webkit-border-radius: 2px; 38 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 39 | -webkit-user-select: none; 40 | background-image: linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5); 41 | background-position: center right; 42 | background-repeat: no-repeat; 43 | border: 1px solid #aaa; 44 | color: #555; 45 | font-size: 12px; 46 | margin: 0; 47 | overflow: hidden; 48 | padding: 3px 20px 3px 10px; 49 | text-overflow: ellipsis; 50 | white-space: nowrap; 51 | } 52 | 53 | .select:hover { 54 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); 55 | background-image: linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9); 56 | color: #333; 57 | } 58 | 59 | .select:active { 60 | -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2); 61 | background-image: linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc); 62 | color: #444; 63 | } 64 | 65 | .tip-holder { 66 | -webkit-border-radius: 5px; 67 | -webkit-box-shadow: 0 0 4px #ddd; 68 | background-color: #fff; 69 | border: 1px solid #bfbfbf; 70 | font-size: 11px; 71 | display: block; 72 | padding: 7px 9px; 73 | z-index: 3; 74 | } 75 | 76 | .tip-holder .tip-title { 77 | padding-bottom: 2px; 78 | display: block; 79 | color: #333; 80 | } 81 | 82 | .tip-holder .tip-text { 83 | color: #4d6a9f; 84 | display: block; 85 | } 86 | 87 | .button { 88 | -webkit-border-radius: 2px; 89 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 90 | -webkit-user-select: none; 91 | background: -webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5); 92 | border: 1px solid #aaa; 93 | color: #555; 94 | padding: 10px 14px; 95 | font-size: 14px; 96 | cursor: pointer; 97 | } 98 | 99 | .button:hover { 100 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); 101 | background: #ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9); 102 | border-color: #999; 103 | color: #222; 104 | } 105 | 106 | .button:active { 107 | -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2); 108 | background: #ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc); 109 | color: #333; 110 | } 111 | 112 | #navigation-menu { 113 | position: fixed; 114 | top: 0; 115 | left: 0; 116 | width: 170px; 117 | } 118 | 119 | #navigation-menu h1, #main-table h1 { 120 | color: #5C6166; 121 | font-weight: normal; 122 | font-size: 18px; 123 | margin: 20px 0 10px 23px; 124 | } 125 | 126 | #main-table h1 { 127 | margin-top: 20px; 128 | margin-left: 0; 129 | } 130 | 131 | #navigation-menu ul { 132 | margin: 15px 0 0 0; 133 | padding: 0; 134 | } 135 | 136 | #navigation-menu ul li { 137 | list-style-type: none; 138 | } 139 | 140 | #navigation-menu ul li a { 141 | border-left: 6px solid #fff; 142 | height: 29px; 143 | display: block; 144 | font-size: 12px; 145 | line-height: 30px; 146 | padding-left: 18px; 147 | color: #999; 148 | } 149 | 150 | #navigation-menu ul li a.selected { 151 | border-color: #4E5764; 152 | color: #5C6166; 153 | } 154 | 155 | #history-container { 156 | margin: 0 10px 10px 180px; 157 | display: block; 158 | } 159 | 160 | #alert-holder { 161 | background: url('../images/alert-bg.png'); 162 | position: fixed; 163 | display: none; 164 | z-index: 9; 165 | top: 0; 166 | right: 0; 167 | bottom: 0; 168 | left: 0; 169 | } 170 | 171 | #alert-holder #alert-holder-loading { 172 | position: absolute; 173 | margin: -15px 0 0 -15px; 174 | left: 50%; 175 | top: 50%; 176 | } 177 | 178 | #alert-holder #pacman-iframe { 179 | position: absolute; 180 | margin: -160px 0 0 -277px; 181 | display: none; 182 | width: 554px; 183 | height: 186px; 184 | left: 50%; 185 | top: 50%; 186 | } 187 | 188 | .item-holder { 189 | display: block; 190 | position: relative; 191 | padding: 5px; 192 | } 193 | 194 | .item { 195 | display: block; 196 | white-space: nowrap; 197 | clear: both; 198 | float: left; 199 | } 200 | 201 | .item .checkbox, .item .bookmark, .item .pin, .item .time { 202 | display: block; 203 | float: left; 204 | } 205 | 206 | .item .checkbox { 207 | margin: 0 10px 0 0; 208 | padding-left: 13px; 209 | } 210 | 211 | .item .checkbox label input { 212 | padding: 0; 213 | margin: 0; 214 | } 215 | 216 | .item .checkbox label { 217 | display: block; 218 | position: absolute; 219 | padding: 1px 5px 2px 5px; 220 | left: 3px; 221 | top: 3px; 222 | } 223 | 224 | .item .bookmark, .item .pin { 225 | margin: 0 15px 0 9px; 226 | padding-left: 8px; 227 | } 228 | 229 | .item .bookmark { 230 | background: url('../images/star-grey.png') no-repeat left center; 231 | } 232 | 233 | .item .pin { 234 | background: url('../images/pin-grey.png') no-repeat left center; 235 | } 236 | 237 | .item .time { 238 | margin: 0 19px 0 0; 239 | color: #999; 240 | } 241 | 242 | .item .link { 243 | text-decoration: none; 244 | position: relative; 245 | padding: 0 0 0 18px; 246 | } 247 | 248 | .item .favicon { 249 | position: absolute; 250 | left: 0; 251 | top: 0; 252 | height: 16px; 253 | width: 16px; 254 | } 255 | 256 | .item .title { 257 | overflow: hidden; 258 | padding: 0 0 1px 3px; 259 | color: rgb(17, 85, 204) !important; 260 | } 261 | 262 | .item .title:hover { 263 | text-decoration: underline; 264 | } 265 | 266 | .bookmarked, .pinned { 267 | display: inline-block; 268 | vertical-align: top; 269 | margin-left: 5px; 270 | } 271 | 272 | .group-title { 273 | position: relative; 274 | } 275 | 276 | .group-title-toggle { 277 | background: url('../images/toggle.png') no-repeat left center; 278 | display: block; 279 | position: absolute; 280 | height: 12px; 281 | width: 12px; 282 | left: 8px; 283 | top: 8px; 284 | } 285 | 286 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { 287 | .group-title-toggle { 288 | background: url('../images/toggle-@2x.png') no-repeat left center; 289 | background-size: 200%; 290 | } 291 | } 292 | 293 | 294 | label.group-title-toggle-count { 295 | left: 39px; 296 | display: block; 297 | position: absolute; 298 | } 299 | 300 | .group-title-checkbox { 301 | position: absolute; 302 | height: 12px; 303 | width: 12px; 304 | left: 36px; 305 | top: 5px; 306 | } 307 | 308 | .group-title-favicon { 309 | position: absolute; 310 | height: 16px; 311 | width: 16px; 312 | left: 69px; 313 | top: 6px; 314 | } 315 | 316 | .group-title-host { 317 | cursor: pointer; 318 | padding-left: 85px; 319 | font-weight: bold; 320 | color: #333; 321 | } 322 | 323 | .no-results span { 324 | background: url('../images/remove.png') no-repeat left center; 325 | padding-left: 20px; 326 | } 327 | 328 | #main-table { 329 | border-spacing: 0; 330 | padding: 0; 331 | width: 100%; 332 | } 333 | 334 | #rh-search-form { 335 | display: block; 336 | margin-bottom: 10px; 337 | margin-top: 20px; 338 | } 339 | 340 | #search { 341 | text-align: right; 342 | } 343 | 344 | #rh-search { 345 | margin-top: 0; 346 | width: 153px; 347 | border: 1px solid #bfbfbf; 348 | height: 18px; 349 | padding: 3px 5px; 350 | } 351 | 352 | #rh-search:focus { 353 | border-color: rgb(17, 85, 204); 354 | } 355 | 356 | #rh-what { 357 | height: 26px; 358 | padding: 4px 20px 4px 10px; 359 | margin-right: 3px; 360 | } 361 | 362 | #rh-bar { 363 | border-top: 1px solid #eee; 364 | border-bottom: 1px solid #eee; 365 | position: relative; 366 | font-size: small; 367 | font-weight: bold; 368 | margin-top: 9px; 369 | display: block; 370 | padding: 4px 5px; 371 | } 372 | 373 | #rh-bar-uione { 374 | position: absolute; 375 | padding: 3px; 376 | left: 1px; 377 | top: -1px; 378 | } 379 | 380 | #rh-bar-group, #rh-bar-orderby, #rh-bar-order { 381 | display: block; 382 | height: 17px; 383 | width: 24px; 384 | position: absolute; 385 | top: 3px; 386 | } 387 | 388 | #rh-bar-group { 389 | background: url('../images/group-toggle.png') no-repeat left center; 390 | right: 62px; 391 | } 392 | 393 | #rh-bar-orderby { 394 | background: url('../images/orderby-toggle.png') no-repeat left center; 395 | right: 33px; 396 | } 397 | 398 | #rh-bar-order { 399 | background: url('../images/order-toggle.png') no-repeat left center; 400 | right: 4px; 401 | } 402 | 403 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { 404 | #rh-bar-group { 405 | background: url('../images/group-toggle-@2x.png') no-repeat left center; 406 | background-size: 200%; 407 | } 408 | #rh-bar-orderby { 409 | background: url('../images/orderby-toggle-@2x.png') no-repeat left center; 410 | background-size: 200%; 411 | } 412 | #rh-bar-order { 413 | background: url('../images/order-toggle-@2x.png') no-repeat left center; 414 | background-size: 200%; 415 | } 416 | } 417 | 418 | #rh-clear-search { 419 | padding-right: 5px; 420 | cursor: pointer; 421 | font-size: 16px; 422 | color: #bfbfbf; 423 | } 424 | 425 | #rh-clear-search:hover { 426 | color: #fc615c; 427 | } 428 | 429 | #rh-views-tube { 430 | display: block; 431 | margin: 10px 0 30px 0; 432 | } 433 | 434 | #rh-views-insert { 435 | display: inline; 436 | } 437 | 438 | #rh-views-search-insert { 439 | display: none; 440 | } 441 | 442 | #calendar { 443 | -webkit-box-shadow: 0 0 5px #ccc; 444 | background-color: #fff; 445 | text-align: center; 446 | border: 1px solid #bfbfbf; 447 | font-size: 12px; 448 | padding: 6px 6px 10px 6px; 449 | overflow: hidden; 450 | position: absolute; 451 | display: block; 452 | width: 170px; 453 | right: 15px; 454 | top: 129px; 455 | z-index: 2; 456 | } 457 | 458 | #history-container .calendar2 { 459 | position: fixed; 460 | top: 59px; 461 | } 462 | 463 | #calendar #delete-range-one, #calendar #delete-range-two { 464 | margin-bottom: 5px; 465 | width: 142px; 466 | text-align: center; 467 | } 468 | 469 | #calendar #delete-range-button { 470 | margin-top: 6px; 471 | } 472 | 473 | #calendar #delete-range-toggle-button { 474 | display: block; 475 | position: absolute; 476 | background: url('../images/drtb.png') no-repeat left top; 477 | width: 17px; 478 | height: 35px; 479 | left: -1px; 480 | bottom: 10px; 481 | } 482 | 483 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { 484 | #calendar #delete-range-toggle-button { 485 | background: url('../images/drtb-@2x.png') no-repeat left center; 486 | background-size: 200%; 487 | } 488 | } 489 | 490 | #calendar #calendar-table { 491 | border-spacing: 0; 492 | padding: 0; 493 | width: 336px; 494 | float: right; 495 | } 496 | 497 | #calendar #calendar-table td { 498 | vertical-align: top; 499 | width: 168px; 500 | } 501 | 502 | #calendar #calendar-nav { 503 | display: block; 504 | margin-bottom: 6px; 505 | text-align: center; 506 | width: 168px; 507 | clear: both; 508 | } 509 | 510 | #calendar-nav .select { 511 | padding: 3px 17px 3px 7px; 512 | } 513 | 514 | #calendar #calendar-freq { 515 | border-top: 1px solid #bfbfbf; 516 | border-bottom: 1px solid #eee; 517 | padding: 8px 0 6px 0; 518 | display: block; 519 | margin-top: 6px; 520 | clear: both; 521 | } 522 | 523 | .retina { 524 | display: none; 525 | } 526 | 527 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { 528 | .retina { 529 | display: inline-block; 530 | height: auto; 531 | width: 100%; 532 | } 533 | .non-retina { 534 | display: none; 535 | } 536 | } 537 | 538 | #calendar #calendar-total { 539 | display: block; 540 | margin-top: 6px; 541 | clear: both; 542 | } 543 | 544 | #calendar .day { 545 | border-top: 1px solid #eee; 546 | line-height: 26px; 547 | display: block; 548 | height: 25px; 549 | width: 24px; 550 | float: left; 551 | } 552 | 553 | #calendar a.day:hover { 554 | background-color: #f3f3f3 !important; 555 | color: #000 !important; 556 | } 557 | 558 | #calendar #selected { 559 | font-weight: bold; 560 | text-decoration: underline; 561 | color: #000; 562 | } 563 | 564 | #calendar-delete { 565 | display: block; 566 | border-top: 1px solid #eee; 567 | padding-top: 6px; 568 | margin-top: 6px; 569 | } 570 | 571 | /***** Date Picker *****/ 572 | 573 | .dp_container { 574 | position: absolute; 575 | margin: -1px 0 0 5px; 576 | padding: 0; 577 | z-index: 500; 578 | } 579 | 580 | .dp_container select { 581 | width: auto !important; 582 | } 583 | 584 | .dp_cal { 585 | background-color: #fff; 586 | border: 1px solid #bfbfbf; 587 | position: absolute; 588 | width: 177px; 589 | top: 24px; 590 | left: 0; 591 | margin: 0px 0px 3px 0px; 592 | } 593 | 594 | .dp_cal table { 595 | width: 100%; 596 | border-collapse: collapse; 597 | border-spacing: 0; 598 | } 599 | 600 | .dp_cal select { 601 | margin: 2px 3px; 602 | font-size: 11px; 603 | } 604 | 605 | .dp_cal select option { 606 | padding: 1px 3px; 607 | } 608 | 609 | .dp_cal th, .dp_cal td { 610 | width: 14.2857%; 611 | text-align: center; 612 | font-size: 11px; 613 | padding: 2px 0; 614 | } 615 | 616 | .dp_cal th { 617 | border: 1px solid #f3f3f3; 618 | border-width: 1px 0; 619 | color: #999999; 620 | font-weight: bold; 621 | } 622 | 623 | .dp_cal td { 624 | cursor: pointer; 625 | } 626 | 627 | .dp_cal td.dp_roll { 628 | color: #000; 629 | background: #f3f3f3; 630 | } 631 | 632 | /* must have this for the IE6 select box hiding */ 633 | 634 | .dp_hide { 635 | visibility: hidden; 636 | } 637 | 638 | .dp_empty { 639 | background: #eee; 640 | } 641 | 642 | .dp_today { 643 | background: rgb(17, 85, 204); 644 | } 645 | 646 | .dp_selected { 647 | color: #fff; 648 | background: rgb(17, 85, 204); 649 | } 650 | 651 | ul.ztree { 652 | margin-top: 10px; 653 | max-width: calc(100vw - 170px); 654 | overflow-x: auto; 655 | } 656 | 657 | #history-container .ztree li { 658 | padding-top: 5px; 659 | } 660 | 661 | #history-container .ztree * { 662 | box-shadow: none; 663 | } 664 | 665 | #header-text { 666 | height: 26px; 667 | } 668 | 669 | div[rel="white"] { 670 | background-color: #fff; 671 | } 672 | 673 | div[rel="grey"] { 674 | background-color: #fafafa; 675 | } 676 | 677 | 678 | /* .closed_list a.level0 span:first-child,.closed_list a.level1 span:first-child */ 679 | .closed_list a > span.ico_open , .closed_list a > span.ico_close 680 | { 681 | display: none !important; 682 | } 683 | 684 | 685 | @media (prefers-color-scheme: dark) { 686 | div[rel="white"] { 687 | background-color: #555; 688 | } 689 | div[rel="grey"] { 690 | background-color: #444; 691 | } 692 | body { 693 | background: none; 694 | background-color: rgb(74, 74, 74); 695 | color: #fafafa; 696 | } 697 | img { 698 | filter: brightness(0.8); 699 | } 700 | #main-table .ztree li a { 701 | color: #e9e9e9; 702 | padding: 3px 0px; 703 | } 704 | h2, #navigation-menu h1, #main-table h1 { 705 | color: #fff; 706 | border-bottom: 1px solid #999; 707 | } 708 | #navigation-menu ul li a { 709 | border-left: 6px solid rgb(74, 74, 74); 710 | color: #aaa; 711 | } 712 | #navigation-menu ul li a.selected { 713 | border-color: #999; 714 | color: #fff; 715 | } 716 | #options, #options-tabs .tab, #calendar { 717 | background-color: #666; 718 | border-top: 1px solid #999; 719 | border: 1px solid #aaa; 720 | color: #fff; 721 | } 722 | #tab-options-content label, a, .group-title-host, #popup-footer-right a { 723 | color: burlywood; 724 | } 725 | hr { 726 | background-color: #999; 727 | } 728 | #popup input, #options input, #history-container input, .slider, select, #calendar select, #main-table select, #rhlistorder li, .dp_cal { 729 | background-color: rgb(128, 128, 128); 730 | background-image: none; 731 | color: #fff; 732 | } 733 | #rh-bar { 734 | border-top: 1px solid #666; 735 | border-bottom: 1px solid #666; 736 | } 737 | #rh-views-insert .item-holder { 738 | background-color: rgb(74, 74, 74) !important; 739 | } 740 | .item .title { 741 | color: #fff !important; 742 | } 743 | .group-title-toggle { 744 | background: url(../images/toggle2.png) no-repeat left center; 745 | } 746 | #calendar #selected { 747 | color: #fff; 748 | } 749 | #alert-holder { 750 | background: #222; 751 | } 752 | .item:hover { 753 | background-color: #666 !important; 754 | } 755 | #rh-views .ztree li a.curSelectedNode { 756 | background-color: #000; 757 | } 758 | } 759 | 760 | #showCalendar{ 761 | display: none; 762 | } 763 | 764 | @media screen and (max-width:500px) 765 | { 766 | 767 | #history-container, #options{ 768 | margin-left: 20px !important; 769 | /* margin-top: 180px; */ 770 | } 771 | 772 | #navigation-menu { 773 | position: relative; 774 | } 775 | 776 | #showCalendar{ 777 | display: inline; 778 | } 779 | 780 | #history-container #calendar { 781 | /* position: absolute !important; */ 782 | top: 19px !important; 783 | /* /* left: 130px; */ 784 | } 785 | 786 | ul.ztree { 787 | max-width: 100%; 788 | } 789 | 790 | 791 | 792 | } -------------------------------------------------------------------------------- /chrome/css/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/1_close.png -------------------------------------------------------------------------------- /chrome/css/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/1_open.png -------------------------------------------------------------------------------- /chrome/css/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/2.png -------------------------------------------------------------------------------- /chrome/css/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/3.png -------------------------------------------------------------------------------- /chrome/css/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/4.png -------------------------------------------------------------------------------- /chrome/css/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/5.png -------------------------------------------------------------------------------- /chrome/css/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/6.png -------------------------------------------------------------------------------- /chrome/css/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/7.png -------------------------------------------------------------------------------- /chrome/css/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/8.png -------------------------------------------------------------------------------- /chrome/css/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/diy/9.png -------------------------------------------------------------------------------- /chrome/css/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/line_conn.gif -------------------------------------------------------------------------------- /chrome/css/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/loading.gif -------------------------------------------------------------------------------- /chrome/css/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/zTreeStandard.gif -------------------------------------------------------------------------------- /chrome/css/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/css/img/zTreeStandard.png -------------------------------------------------------------------------------- /chrome/css/options-rtl.css: -------------------------------------------------------------------------------- 1 | 2 | h2 { 3 | direction: rtl; 4 | text-align: right; 5 | } 6 | 7 | .cell-left, #navigation-menu ul li { 8 | text-align: right; 9 | } 10 | 11 | .help-tip { 12 | margin-right: 3px; 13 | } 14 | 15 | #rhlistorder li { 16 | background-position: 6px 6px; 17 | text-align: right; 18 | } 19 | 20 | #rhitemstyle-title { 21 | text-align: left; 22 | } 23 | 24 | #tab-translations-content { 25 | text-align: right; 26 | direction: rtl; 27 | } 28 | 29 | #tab-about-content #rh-about-extension, #tab-about-content ol { 30 | text-align: right; 31 | direction: rtl; 32 | } 33 | 34 | #options { 35 | float: right; 36 | margin: 52px 180px 20px 0; 37 | } 38 | 39 | #options-tabs { 40 | right: auto; 41 | left: 12px; 42 | } 43 | 44 | #options-tabs .tab { 45 | float: right; 46 | margin-left: 0; 47 | margin-right: 5px; 48 | } 49 | 50 | #navigation-menu { 51 | left: auto; 52 | right: 0; 53 | } 54 | 55 | #navigation-menu h1 { 56 | text-align: right; 57 | direction: rtl; 58 | margin-left: 0; 59 | margin-right: 23px; 60 | } 61 | 62 | #navigation-menu ul li a { 63 | border-right: 6px solid #FFF; 64 | border-left: 0 none; 65 | padding-left: 0; 66 | padding-right: 18px; 67 | } 68 | 69 | #save-holder { 70 | text-align: right; 71 | } 72 | -------------------------------------------------------------------------------- /chrome/css/options.css: -------------------------------------------------------------------------------- 1 | 2 | * { 3 | outline: none; 4 | } 5 | 6 | body { 7 | font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; 8 | font-size: 13px; 9 | color: #5C6166; 10 | margin: 0; 11 | padding: 0; 12 | } 13 | 14 | a { 15 | -webkit-transition: all 0.2s linear; 16 | transition: all 0.2s linear; 17 | color: rgb(17, 85, 204); 18 | } 19 | 20 | a img { 21 | border: 0 none; 22 | } 23 | 24 | h2 { 25 | border-bottom: 1px solid #eee; 26 | padding: 8px 0; 27 | font-size: 16px; 28 | color: #5C6166; 29 | font-weight: normal; 30 | margin-bottom: 20px; 31 | } 32 | 33 | hr { 34 | color: #eee; 35 | background-color: #eee; 36 | margin: 20px auto; 37 | border: 0 none; 38 | height: 1px; 39 | display: block; 40 | } 41 | 42 | input[type="text"] { 43 | -webkit-border-radius: 2px; 44 | border: 1px solid #bfbfbf; 45 | padding: 5px; 46 | } 47 | 48 | input[type="text"]:focus { 49 | border-color: rgb(17, 85, 204); 50 | } 51 | 52 | select { 53 | -webkit-appearance: button; 54 | -webkit-border-radius: 2px; 55 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 56 | -webkit-user-select: none; 57 | background-image: linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5); 58 | background-position: center right; 59 | background-repeat: no-repeat; 60 | border: 1px solid #aaa; 61 | color: #555; 62 | font-size: 12px; 63 | margin: 0; 64 | overflow: hidden; 65 | padding: 3px 20px 3px 10px; 66 | text-overflow: ellipsis; 67 | white-space: nowrap; 68 | } 69 | 70 | select:hover { 71 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); 72 | background-image: linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9); 73 | color: #333; 74 | } 75 | 76 | select:active { 77 | -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2); 78 | background-image: linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc); 79 | color: #444; 80 | } 81 | 82 | input[type="button"] { 83 | -webkit-border-radius: 2px; 84 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 85 | -webkit-user-select: none; 86 | background: -webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5); 87 | border: 1px solid #aaa; 88 | color: #555; 89 | font-size: inherit; 90 | margin-bottom: 0px; 91 | padding: 3px 7px; 92 | } 93 | 94 | input[type="button"]:hover { 95 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); 96 | background: #ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9); 97 | border-color: #999; 98 | color: #222; 99 | } 100 | 101 | input[type="button"]:active { 102 | -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2); 103 | background: #ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc); 104 | color: #333; 105 | } 106 | 107 | #navigation-menu { 108 | position: fixed; 109 | top: 0; 110 | left: 0; 111 | width: 170px; 112 | } 113 | 114 | #navigation-menu h1, #main-table h1 { 115 | color: #5C6166; 116 | font-weight: normal; 117 | font-size: 18px; 118 | margin: 20px 0 10px 23px; 119 | } 120 | 121 | #main-table h1 { 122 | margin-top: 5px; 123 | margin-left: 0; 124 | } 125 | 126 | #navigation-menu ul { 127 | margin: 15px 0 0 0; 128 | padding: 0; 129 | } 130 | 131 | #navigation-menu ul li { 132 | list-style-type: none; 133 | } 134 | 135 | #navigation-menu ul li a { 136 | border-left: 6px solid #fff; 137 | height: 29px; 138 | display: block; 139 | font-size: 12px; 140 | line-height: 30px; 141 | padding-left: 18px; 142 | text-decoration: none; 143 | color: #999; 144 | } 145 | 146 | #navigation-menu ul li a.selected { 147 | border-color: #4E5764; 148 | color: #5C6166; 149 | } 150 | 151 | .retina { 152 | display: none; 153 | } 154 | 155 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi){ 156 | .retina { 157 | display: inline-block; 158 | height: auto; 159 | width: 48px; 160 | } 161 | .non-retina { 162 | display: none; 163 | } 164 | } 165 | 166 | #options { 167 | display: block; 168 | background-color: #fff; 169 | border-top: 1px solid #eee; 170 | width: 800px; 171 | margin: 52px 0 20px 180px; 172 | position: relative; 173 | float: left; 174 | } 175 | 176 | #options-tabs { 177 | display: block; 178 | position: absolute; 179 | top: -44px; 180 | right: 12px; 181 | } 182 | 183 | #options-tabs .tab { 184 | border: 1px solid #eee; 185 | display: block; 186 | font-size: 18px; 187 | text-decoration: none; 188 | padding: 10px 15px; 189 | margin-left: 5px; 190 | float: left; 191 | color: #999; 192 | height: 22px; 193 | } 194 | 195 | #options-tabs .tab:hover { 196 | color: rgb(48, 57, 66); 197 | } 198 | 199 | .tab-current { 200 | border-bottom: 2px solid #fff !important; 201 | background: #fff !important; 202 | color: #5C6166 !important; 203 | } 204 | 205 | .tab-content { 206 | display: none; 207 | padding: 20px 0; 208 | } 209 | 210 | 211 | /***** Changelog Tab *****/ 212 | 213 | #tab-changelog-content p:first-child { 214 | font-size: large; 215 | } 216 | 217 | 218 | /***** Options Tab *****/ 219 | 220 | .help-tip { 221 | background: url('../images/help.png') no-repeat center center; 222 | vertical-align: top; 223 | margin-left: 5px; 224 | display: inline-block; 225 | width: 16px; 226 | height: 16px; 227 | } 228 | 229 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi){ 230 | .help-tip { 231 | background: url('../images/help-@2x.png') no-repeat center center; 232 | background-size: 100%; 233 | } 234 | } 235 | 236 | .tip-title { 237 | -webkit-border-radius: 5px; 238 | -webkit-box-shadow: 0 0 4px #ddd; 239 | background-color: #fff; 240 | border: 1px solid #ccc; 241 | font-size: 12px; 242 | width: 200px; 243 | display: block; 244 | padding: 7px 9px; 245 | } 246 | 247 | #tab-options-content label { 248 | font-size: 13px; 249 | color: rgb(17, 85, 204); 250 | } 251 | 252 | #tab-options-content table { 253 | margin: 0; 254 | width: 740px; 255 | } 256 | 257 | .cell-left, .cell-right { 258 | width: 50%; 259 | vertical-align: top; 260 | } 261 | 262 | #rhlistorder { 263 | margin: 0; 264 | padding: 0; 265 | } 266 | 267 | #rhlistorder li { 268 | -webkit-border-radius: 3px; 269 | margin-bottom: 3px; 270 | list-style-type: none; 271 | background: url('../images/move.png') no-repeat right center #eee; 272 | padding: 10px 12px; 273 | font-size: small; 274 | cursor: move; 275 | } 276 | 277 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi){ 278 | #rhlistorder li { 279 | background: url('../images/move-@2x.png') no-repeat right center #eee; 280 | background-size: 21px 14px; 281 | } 282 | } 283 | 284 | #rhitemstyle { 285 | display: block; 286 | width: 337px; 287 | border-bottom: 1px solid #ccc; 288 | margin-left: 28px; 289 | font-size: small; 290 | white-space: nowrap; 291 | position: relative; 292 | padding: 2px 0; 293 | text-decoration: none; 294 | } 295 | 296 | #rhitemstyle:hover { 297 | -webkit-border-radius: 2px; 298 | background-color: #ebeff9; 299 | } 300 | 301 | #rhitemstyle-icon { 302 | position: absolute; 303 | display: block; 304 | top: 2px; 305 | left: -26px; 306 | } 307 | 308 | #rhitemstyle-title { 309 | display: block; 310 | margin-left: 2px; 311 | color: rgb(17, 85, 204); 312 | } 313 | 314 | #rhitemstyle-info, #rhitemstyle-url { 315 | font-size: x-small; 316 | color: #888; 317 | } 318 | 319 | #rhitemstyle-infourl { 320 | display: block; 321 | margin-left: 2px; 322 | overflow: hidden; 323 | } 324 | 325 | #mvlist, #flist { 326 | -webkit-border-radius: 2px; 327 | border: 1px solid #abadb3; 328 | overflow-x: hidden; 329 | display: block; 330 | padding-bottom: 20px; 331 | margin-bottom: 5px; 332 | width: 363px; 333 | } 334 | 335 | #mvlist-table, #flist-table { 336 | width: 100% !important; 337 | margin: 0 !important; 338 | border-spacing: 0; 339 | padding: 0; 340 | } 341 | 342 | #flist-add-i { 343 | margin-right: 5px; 344 | } 345 | 346 | #save-holder { 347 | display: block; 348 | margin: 20px 0 0 0; 349 | text-align: left; 350 | } 351 | 352 | #save,#save-holder input { 353 | -webkit-border-radius: 2px; 354 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 355 | -webkit-user-select: none; 356 | background: -webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5); 357 | border: 1px solid #aaa; 358 | color: #555; 359 | padding: 10px 14px; 360 | font-size: 14px; 361 | cursor: pointer; 362 | margin-left:3px; 363 | } 364 | 365 | #save:hover,,#save-holder input:hover { 366 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); 367 | background: #ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9); 368 | border-color: #999; 369 | color: #222; 370 | } 371 | 372 | #save:active,,#save-holder input:active { 373 | -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2); 374 | background: #ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc); 375 | color: #333; 376 | } 377 | 378 | .op-item { 379 | background-color: #fafafa; 380 | } 381 | 382 | .op-item td { 383 | border-bottom: 1px solid #ccc; 384 | font-size: 14px; 385 | padding: 3px 5px; 386 | } 387 | 388 | .op-item td div { 389 | display: block; 390 | width: 320px; 391 | overflow-x: hidden; 392 | } 393 | 394 | .slider { 395 | background-color: #eee; 396 | display: inline-block; 397 | margin-left: 20px; 398 | cursor: pointer; 399 | width: 293px; 400 | height: 10px; 401 | } 402 | 403 | .handle { 404 | background: url('../images/handle-bg.png') no-repeat center center; 405 | cursor: inherit; 406 | display: block; 407 | margin-top: -5px; 408 | width: 10px; 409 | height: 20px; 410 | } 411 | 412 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi){ 413 | .handle { 414 | background: url('../images/handle-bg-@2x.png') no-repeat center center; 415 | background-size: 100%; 416 | } 417 | } 418 | 419 | 420 | 421 | 422 | @media (prefers-color-scheme: dark) { 423 | body { 424 | background:none; 425 | background-color: rgb(74, 74, 74); 426 | color:#fafafa; 427 | } 428 | 429 | img { 430 | filter: brightness(0.8); 431 | } 432 | 433 | #main-table .ztree li a{ 434 | color: #e9e9e9; 435 | padding: 3px 0px ; 436 | } 437 | h2,#navigation-menu h1, #main-table h1{ 438 | color: #fff; 439 | border-bottom: 1px solid #999; 440 | } 441 | #navigation-menu ul li a { 442 | border-left: 6px solid rgb(74, 74, 74); 443 | color: #aaa; 444 | } 445 | #navigation-menu ul li a.selected { 446 | border-color: #999; 447 | color: #fff; 448 | } 449 | 450 | #options,#options-tabs .tab, #calendar { 451 | background-color: #666; 452 | border-top: 1px solid #999; 453 | border: 1px solid #aaa; 454 | color: #fff; 455 | } 456 | 457 | 458 | #tab-options-content label,a , .group-title-host,#popup-footer-right a { 459 | color: burlywood; 460 | } 461 | 462 | hr{ 463 | 464 | background-color: #999; 465 | } 466 | .custom_tip .tip-title { 467 | 468 | background: none; 469 | background-image: none; 470 | background-color: #333; 471 | -webkit-box-shadow: 0 0 4px #666; 472 | } 473 | 474 | #popup input, #options input,#history-container input,.slider,select,#calendar select,#main-table select,#rhlistorder li, .dp_cal,.op-item { 475 | background-color: rgb(128, 128, 128); 476 | background-image:none; 477 | color: #fff; 478 | } 479 | 480 | #rh-bar { 481 | border-top: 1px solid #666; 482 | border-bottom: 1px solid #666; 483 | } 484 | 485 | #rh-views-insert .item-holder { 486 | background-color: rgb(74, 74, 74) !important; 487 | } 488 | 489 | .item .title,#rhitemstyle #rhitemstyle-title{ 490 | color: #fff !important; 491 | } 492 | 493 | .group-title-toggle { 494 | background: url(../images/toggle2.png) no-repeat left center; 495 | } 496 | 497 | #calendar #selected{ 498 | color: #fff; 499 | } 500 | 501 | #alert-holder { 502 | background: #222; 503 | } 504 | 505 | .item:hover { 506 | background-color: #666 !important; 507 | } 508 | 509 | } 510 | 511 | 512 | @media screen and (max-width:500px) 513 | { 514 | 515 | #history-container, #options{ 516 | margin-left: 20px !important; 517 | /* margin-top: 180px; */ 518 | } 519 | 520 | #navigation-menu { 521 | position: relative; 522 | } 523 | 524 | #showCalendar{ 525 | display: inline; 526 | } 527 | 528 | #history-container #calendar { 529 | /* position: absolute !important; */ 530 | top: 19px !important; 531 | /* /* left: 130px; */ 532 | } 533 | 534 | } -------------------------------------------------------------------------------- /chrome/css/popup-rtl.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | text-align: right; 4 | } 5 | 6 | #popup-search-input { 7 | background-position: 3px 3px; 8 | } 9 | 10 | .popup-title span { 11 | padding: 0 0 0 5px; 12 | } 13 | 14 | .popup-title a { 15 | left: -5px; 16 | right: auto; 17 | } 18 | 19 | .item { 20 | text-align: left; 21 | direction: ltr; 22 | } 23 | -------------------------------------------------------------------------------- /chrome/css/popup.css: -------------------------------------------------------------------------------- 1 | 2 | * { 3 | outline: none; 4 | } 5 | 6 | body { 7 | background: url('../images/bg.gif') repeat-y left #fff; 8 | font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; 9 | font-size: small; 10 | overflow-x: hidden; 11 | overflow-y: auto; 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | a { 17 | -webkit-transition: all 0.2s linear; 18 | transition: all 0.2s linear; 19 | } 20 | 21 | a img { 22 | border: 0 none; 23 | } 24 | 25 | input[type="text"] { 26 | -webkit-border-radius: 2px; 27 | border: 1px solid #aaa; 28 | padding: 2px; 29 | } 30 | 31 | #alert-holder { 32 | background: url('../images/alert-bg.png'); 33 | position: absolute; 34 | display: none; 35 | top: 0; 36 | right: 0; 37 | bottom: 0; 38 | left: 0; 39 | } 40 | 41 | #alert { 42 | -webkit-border-radius: 10px; 43 | -webkit-box-shadow: 0 0 4px #ddd; 44 | border: 1px solid #ccc; 45 | position: absolute; 46 | background-color: #fff; 47 | text-align: center; 48 | display: block; 49 | margin: -63px 0 0 -100px; 50 | width: 200px; 51 | top: 50%; 52 | left: 50%; 53 | } 54 | 55 | #alert #alert-text { 56 | display: block; 57 | padding: 20px 20px 15px 20px; 58 | font-weight: bold; 59 | } 60 | 61 | #alert #alert-text span { 62 | font-size: 18px; 63 | display: block; 64 | margin-top: 5px; 65 | color: #15C; 66 | } 67 | 68 | #alert #alert-yes, #alert #alert-no { 69 | -webkit-border-radius: 2px; 70 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); 71 | -webkit-user-select: none; 72 | background: -webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5); 73 | border: 1px solid #aaa; 74 | color: #444; 75 | font-size: inherit; 76 | margin-bottom: 0px; 77 | padding: 2px 7px; 78 | } 79 | 80 | #alert #alert-yes:hover, #alert #alert-no:hover { 81 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2); 82 | background: #ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9); 83 | border-color: #999; 84 | color: #222; 85 | } 86 | 87 | #alert #alert-yes:active, #alert #alert-no:active { 88 | -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.2); 89 | background: #ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc); 90 | color: #333; 91 | } 92 | 93 | #alert #alert-no { 94 | margin-left: 10px; 95 | } 96 | 97 | .item { 98 | -webkit-border-radius: 2px; 99 | display: block; 100 | position: relative; 101 | text-decoration: none; 102 | padding: 2px 0; 103 | white-space: nowrap; 104 | } 105 | 106 | .item:hover { 107 | background-color: #f3f3f3 !important; 108 | } 109 | 110 | .item .favicon { 111 | position: absolute; 112 | left: -20px; 113 | top: 3px; 114 | height: 16px; 115 | width: 16px; 116 | } 117 | 118 | .item .title { 119 | display: block; 120 | overflow: hidden; 121 | white-space: inherit; 122 | padding: 0 0 0 3px; 123 | color: rgb(17, 85, 204) !important; 124 | } 125 | 126 | .item .extra-url { 127 | display: block; 128 | overflow: hidden; 129 | padding: 0 0 1px 2px; 130 | } 131 | 132 | .item .extra, .item .url { 133 | font-size: x-small; 134 | color: #888; 135 | } 136 | 137 | .item .ui-pin, .item .ui-delete, .item .ui-share { 138 | display: inline-block; 139 | vertical-align: top; 140 | margin-right: 5px; 141 | height: 16px; 142 | width: 17px; 143 | } 144 | 145 | .item .ui-pin { 146 | background: url('../images/ui-pin.png') no-repeat left center; 147 | } 148 | 149 | .item .ui-delete { 150 | background: url('../images/ui-delete.png') no-repeat left center; 151 | } 152 | 153 | .item .ui-share { 154 | background: url('../images/ui-share.png') no-repeat left center; 155 | } 156 | 157 | .item .ui-pin:hover, .item .ui-delete:hover, .item .ui-share:hover { 158 | background-position: right center; 159 | } 160 | 161 | .edit-items-ui { 162 | display: none; 163 | } 164 | 165 | .no-results { 166 | display: block; 167 | padding: 5px 0 5px 5px; 168 | } 169 | 170 | .no-results span { 171 | background: url('../images/remove.png') no-repeat left center; 172 | padding-left: 20px; 173 | } 174 | 175 | .popup-title { 176 | background: url('../images/rhtitle-bg.gif') repeat-x 1px 8px; 177 | padding-bottom: 5px; 178 | position: relative; 179 | margin-left: 3px; 180 | display: block; 181 | } 182 | 183 | .popup-title span { 184 | background-color: #fff; 185 | padding-right: 5px; 186 | color: #5C6166; 187 | } 188 | /* 189 | .popup-title a { 190 | background: url('../images/edit-items.gif') no-repeat left center; 191 | position: absolute; 192 | display: block; 193 | height: 21px; 194 | width: 21px; 195 | right: -5px; 196 | top: 5px; 197 | } 198 | */ 199 | 200 | .popup-title a { 201 | color:chocolate; 202 | text-decoration: none; 203 | } 204 | 205 | .popup-title a:hover { 206 | background-position: right center; 207 | } 208 | 209 | #popup { 210 | display: block; 211 | margin: 5px; 212 | } 213 | 214 | #popup-header, #popup-insert, #popup-footer { 215 | position: relative; 216 | display: block; 217 | } 218 | 219 | #popup-header { 220 | height: 35px; 221 | } 222 | 223 | #popup-search { 224 | position: absolute; 225 | margin: 0; 226 | padding: 0; 227 | top: 0; 228 | left: 30px; 229 | right: 2px; 230 | } 231 | 232 | #popup-search-input { 233 | border: 1px solid #bfbfbf; 234 | padding: 5px; 235 | width: calc(100% - 40px); 236 | height: 14px; 237 | } 238 | 239 | #popup-search-input:focus { 240 | border-color: rgb(17, 85, 204); 241 | } 242 | 243 | #popup-search-clear { 244 | font-family: Arial, Helvetica, sans-serif; 245 | /* display: block; 246 | position: absolute; 247 | left: -29px; 248 | width: 16px; 249 | height: 16px; 250 | line-height: 16px;*/ 251 | position: relative; 252 | left: -25px; 253 | top: 5px; 254 | text-decoration: none; 255 | font-size: 24px; 256 | text-align: center; 257 | color: #bfbfbf; 258 | } 259 | 260 | #popup-open-tree { 261 | position: absolute; 262 | right:1px; 263 | top:8px; 264 | } 265 | #popup-open-tree img { 266 | height: 20px; 267 | width: 20px; 268 | } 269 | 270 | 271 | #popup-search-clear:hover { 272 | color: #fc615c; 273 | } 274 | 275 | #popup-insert, #popup-search-insert { 276 | margin-left: 26px; 277 | } 278 | 279 | #popup-search-insert { 280 | display: none; 281 | } 282 | 283 | #popup-footer { 284 | border-top: 1px solid #eee; 285 | margin: 10px 0 0 24px; 286 | padding: 4px 0 0 4px; 287 | } 288 | 289 | #popup-footer-left a { 290 | position: absolute; 291 | /* display: block; */ 292 | height: 16px; 293 | width: 16px; 294 | left: -30px; 295 | top: 10px; 296 | } 297 | 298 | #popup-footer-left a img { 299 | height: auto; 300 | width: 100%; 301 | } 302 | 303 | #popup-footer-left a:hover { 304 | opacity: 0.75; 305 | } 306 | 307 | .retina { 308 | display: none; 309 | } 310 | 311 | @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi){ 312 | .non-retina { 313 | display: none; 314 | } 315 | .retina { 316 | display: inline-block; 317 | } 318 | } 319 | 320 | #popup-footer-right a { 321 | text-decoration: none; 322 | font-weight: bold; 323 | display: inline-block; 324 | padding: 1px 0 0 1px; 325 | color: #5C6166; 326 | } 327 | 328 | 329 | 330 | @media (prefers-color-scheme: dark) { 331 | body { 332 | background:none; 333 | background-color: rgb(74, 74, 74); 334 | color:#fafafa; 335 | } 336 | 337 | img { 338 | filter: brightness(0.8); 339 | } 340 | 341 | #main-table .ztree li a{ 342 | color: #e9e9e9; 343 | padding: 3px 0px ; 344 | } 345 | h2,#navigation-menu h1, #main-table h1{ 346 | color: #fff; 347 | border-bottom: 1px solid #999; 348 | } 349 | #navigation-menu ul li a { 350 | border-left: 6px solid rgb(74, 74, 74); 351 | color: #aaa; 352 | } 353 | #navigation-menu ul li a.selected { 354 | border-color: #999; 355 | color: #fff; 356 | } 357 | 358 | #options,#options-tabs .tab, #calendar { 359 | background-color: #666; 360 | border-top: 1px solid #999; 361 | border: 1px solid #aaa; 362 | color: #fff; 363 | } 364 | 365 | 366 | #tab-options-content label,a , .group-title-host,#popup-footer-right a { 367 | color: burlywood; 368 | } 369 | 370 | hr{ 371 | 372 | background-color: #999; 373 | } 374 | 375 | #popup input, #options input,#history-container input,.slider,select,#calendar select,#main-table select,#rhlistorder li, .dp_cal{ 376 | background-color: rgb(128, 128, 128); 377 | background-image:none; 378 | color: #fff; 379 | } 380 | 381 | #rh-bar { 382 | border-top: 1px solid #666; 383 | border-bottom: 1px solid #666; 384 | } 385 | 386 | #rh-views-insert .item-holder { 387 | background-color: rgb(74, 74, 74) !important; 388 | } 389 | 390 | .item .title{ 391 | color: #fff !important; 392 | } 393 | 394 | .group-title-toggle { 395 | background: url(../images/toggle2.png) no-repeat left center; 396 | } 397 | 398 | #calendar #selected{ 399 | color: #fff; 400 | } 401 | 402 | #alert-holder { 403 | background: #222; 404 | } 405 | 406 | .item:hover { 407 | background-color: #666 !important; 408 | } 409 | 410 | } 411 | -------------------------------------------------------------------------------- /chrome/css/zTreeStyle.css: -------------------------------------------------------------------------------- 1 | /*------------------------------------- 2 | zTree Style 3 | 4 | version: 3.5.19 5 | author: Hunter.z 6 | email: hunter.z@263.net 7 | website: http://code.google.com/p/jquerytree/ 8 | 9 | -------------------------------------*/ 10 | 11 | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif} 12 | .ztree {margin:0; padding:5px; color:#333} 13 | .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0} 14 | .ztree li ul{ margin:0; padding:0 0 0 18px} 15 | .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;} 16 | 17 | .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent; 18 | text-decoration:none; vertical-align:top; display: inline-block} 19 | .ztree li a:hover {text-decoration:underline} 20 | .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} 21 | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} 22 | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; 23 | opacity:0.8; filter:alpha(opacity=80)} 24 | .ztree li a.tmpTargetNode_prev {} 25 | .ztree li a.tmpTargetNode_next {} 26 | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0; 27 | font-size:12px; border:1px #7EC4CC solid; *border:0px} 28 | .ztree li span {line-height:16px; margin-right:2px} 29 | .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle; 30 | border:0 none; cursor: pointer;outline:none; 31 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 32 | background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 33 | 34 | .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto} 35 | .ztree li span.button.chk.checkbox_false_full {background-position:0 0} 36 | .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px} 37 | .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px} 38 | .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px} 39 | .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px} 40 | .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0} 41 | .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px} 42 | .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px} 43 | .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px} 44 | .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px} 45 | .ztree li span.button.chk.radio_false_full {background-position:-28px 0} 46 | .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px} 47 | .ztree li span.button.chk.radio_false_part {background-position:-28px -28px} 48 | .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px} 49 | .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px} 50 | .ztree li span.button.chk.radio_true_full {background-position:-42px 0} 51 | .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px} 52 | .ztree li span.button.chk.radio_true_part {background-position:-42px -28px} 53 | .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px} 54 | .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px} 55 | 56 | .ztree li span.button.switch {width:18px; height:18px} 57 | .ztree li span.button.root_open{background-position:-92px -54px} 58 | .ztree li span.button.root_close{background-position:-74px -54px} 59 | .ztree li span.button.roots_open{background-position:-92px 0} 60 | .ztree li span.button.roots_close{background-position:-74px 0} 61 | .ztree li span.button.center_open{background-position:-92px -18px} 62 | .ztree li span.button.center_close{background-position:-74px -18px} 63 | .ztree li span.button.bottom_open{background-position:-92px -36px} 64 | .ztree li span.button.bottom_close{background-position:-74px -36px} 65 | .ztree li span.button.noline_open{background-position:-92px -72px} 66 | .ztree li span.button.noline_close{background-position:-74px -72px} 67 | .ztree li span.button.root_docu{ background:none;} 68 | .ztree li span.button.roots_docu{background-position:-56px 0} 69 | .ztree li span.button.center_docu{background-position:-56px -18px} 70 | .ztree li span.button.bottom_docu{background-position:-56px -36px} 71 | .ztree li span.button.noline_docu{ background:none;} 72 | 73 | .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle} 74 | .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle} 75 | .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle} 76 | .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle} 77 | .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle} 78 | 79 | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} 80 | 81 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} 82 | 83 | span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; 84 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 85 | background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 86 | 87 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} 88 | .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} 89 | 90 | /* level style*/ 91 | /*.ztree li span.button.level0 { 92 | display:none; 93 | } 94 | .ztree li ul.level0 { 95 | padding:0; 96 | background:none; 97 | }*/ -------------------------------------------------------------------------------- /chrome/history.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Liner History | Tree Style History 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 27 | 28 |
    29 | 30 | 31 | 32 | 43 | 44 | 45 | 61 | 62 |

    46 | 47 |
    48 | 49 | 50 | 51 | 52 |   53 |
    54 |
    55 |
    56 |
    57 |
    58 |
    59 |
    60 |
    63 |
    64 | 65 | 66 | 67 | 72 | 92 | 93 |
    68 |
    69 |
    70 | 71 |
    73 |
    74 | 75 | 76 | 77 |
    78 |
    79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
    87 |
    88 |
    FrequencyFrequency
    89 |
    0
    90 |
    91 |
    94 |
    95 |
    96 |
    97 | Loading 98 |
    99 | 100 | 101 | -------------------------------------------------------------------------------- /chrome/history2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Tree Style History 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 35 | 36 |
    37 | 38 | 39 | 42 | 45 | 46 | 47 | 48 | 49 | 73 | 74 |
    40 |

    41 |
    50 | 51 |
    52 |
      53 | 57 |
      58 | 59 | 72 |
      75 |
      76 | 77 | 78 | 79 | 84 | 130 | 131 |
      80 |
      81 |
      82 | 83 |
      85 |
      86 | 87 | 88 | 89 |
      90 |
      91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 |
      99 |
      100 | 102 |
      0 104 | 105 |
      106 | 107 | 108 |

      109 |

      110 | 🔗 111 | 112 | 113 | 🧭 114 | 🏠 115 | 116 | 🔄 117 | 🔍 118 |
      119 |

      120 | 125 |
      126 | 127 |
      128 | 129 |
      132 |
      133 |
      134 |
      135 | Loading 136 |
      137 | 138 | 139 | -------------------------------------------------------------------------------- /chrome/images/alert-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/alert-bg.png -------------------------------------------------------------------------------- /chrome/images/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/bg.gif -------------------------------------------------------------------------------- /chrome/images/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/blank.png -------------------------------------------------------------------------------- /chrome/images/btn_donate_LG.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/btn_donate_LG.gif -------------------------------------------------------------------------------- /chrome/images/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/check.png -------------------------------------------------------------------------------- /chrome/images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/close.gif -------------------------------------------------------------------------------- /chrome/images/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/cog.png -------------------------------------------------------------------------------- /chrome/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/cross.png -------------------------------------------------------------------------------- /chrome/images/deleting.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/deleting.gif -------------------------------------------------------------------------------- /chrome/images/drtb-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/drtb-@2x.png -------------------------------------------------------------------------------- /chrome/images/drtb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/drtb.png -------------------------------------------------------------------------------- /chrome/images/edit-items.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/edit-items.gif -------------------------------------------------------------------------------- /chrome/images/group-toggle-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/group-toggle-@2x.png -------------------------------------------------------------------------------- /chrome/images/group-toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/group-toggle.png -------------------------------------------------------------------------------- /chrome/images/handle-bg-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/handle-bg-@2x.png -------------------------------------------------------------------------------- /chrome/images/handle-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/handle-bg.png -------------------------------------------------------------------------------- /chrome/images/help-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/help-@2x.png -------------------------------------------------------------------------------- /chrome/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/help.png -------------------------------------------------------------------------------- /chrome/images/icon128-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon128-blank.png -------------------------------------------------------------------------------- /chrome/images/icon16-other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon16-other.png -------------------------------------------------------------------------------- /chrome/images/icon19-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-arrow.png -------------------------------------------------------------------------------- /chrome/images/icon19-arrowbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-arrowbox.png -------------------------------------------------------------------------------- /chrome/images/icon19-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-blank.png -------------------------------------------------------------------------------- /chrome/images/icon19-circle-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-circle-@2x.png -------------------------------------------------------------------------------- /chrome/images/icon19-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-circle.png -------------------------------------------------------------------------------- /chrome/images/icon19-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-down.png -------------------------------------------------------------------------------- /chrome/images/icon19-edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-edge.png -------------------------------------------------------------------------------- /chrome/images/icon19-neat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-neat.png -------------------------------------------------------------------------------- /chrome/images/icon19-other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-other.png -------------------------------------------------------------------------------- /chrome/images/icon19-pink-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-pink-@2x.png -------------------------------------------------------------------------------- /chrome/images/icon19-pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19-pink.png -------------------------------------------------------------------------------- /chrome/images/icon19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon19.png -------------------------------------------------------------------------------- /chrome/images/icon32-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon32-blank.png -------------------------------------------------------------------------------- /chrome/images/icon38-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon38-blank.png -------------------------------------------------------------------------------- /chrome/images/icon48-blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/icon48-blank.png -------------------------------------------------------------------------------- /chrome/images/legend-@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/legend-@2x.gif -------------------------------------------------------------------------------- /chrome/images/legend.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/legend.gif -------------------------------------------------------------------------------- /chrome/images/loading-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/loading-bg.png -------------------------------------------------------------------------------- /chrome/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/loading.gif -------------------------------------------------------------------------------- /chrome/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/logo.png -------------------------------------------------------------------------------- /chrome/images/main-icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/main-icon128.png -------------------------------------------------------------------------------- /chrome/images/main-icon19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/main-icon19.png -------------------------------------------------------------------------------- /chrome/images/main-icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/main-icon32.png -------------------------------------------------------------------------------- /chrome/images/main-icon38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/main-icon38.png -------------------------------------------------------------------------------- /chrome/images/main-icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/main-icon48.png -------------------------------------------------------------------------------- /chrome/images/move-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/move-@2x.png -------------------------------------------------------------------------------- /chrome/images/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/move.png -------------------------------------------------------------------------------- /chrome/images/options-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/options-bg.gif -------------------------------------------------------------------------------- /chrome/images/order-toggle-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/order-toggle-@2x.png -------------------------------------------------------------------------------- /chrome/images/order-toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/order-toggle.png -------------------------------------------------------------------------------- /chrome/images/orderby-toggle-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/orderby-toggle-@2x.png -------------------------------------------------------------------------------- /chrome/images/orderby-toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/orderby-toggle.png -------------------------------------------------------------------------------- /chrome/images/pin-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/pin-grey.png -------------------------------------------------------------------------------- /chrome/images/pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/pin.png -------------------------------------------------------------------------------- /chrome/images/preview-icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/preview-icon.gif -------------------------------------------------------------------------------- /chrome/images/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/remove.png -------------------------------------------------------------------------------- /chrome/images/rh-popup-options-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/rh-popup-options-@2x.png -------------------------------------------------------------------------------- /chrome/images/rh-popup-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/rh-popup-options.png -------------------------------------------------------------------------------- /chrome/images/rhtitle-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/rhtitle-bg.gif -------------------------------------------------------------------------------- /chrome/images/save-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/save-bg.gif -------------------------------------------------------------------------------- /chrome/images/scrollbar-down-active.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/scrollbar-down-active.gif -------------------------------------------------------------------------------- /chrome/images/scrollbar-down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/scrollbar-down.gif -------------------------------------------------------------------------------- /chrome/images/scrollbar-handle-active.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/scrollbar-handle-active.gif -------------------------------------------------------------------------------- /chrome/images/scrollbar-handle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/scrollbar-handle.gif -------------------------------------------------------------------------------- /chrome/images/scrollbar-up-active.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/scrollbar-up-active.gif -------------------------------------------------------------------------------- /chrome/images/scrollbar-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/scrollbar-up.gif -------------------------------------------------------------------------------- /chrome/images/search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/search.gif -------------------------------------------------------------------------------- /chrome/images/seperator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/seperator.gif -------------------------------------------------------------------------------- /chrome/images/share-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/share-bg.png -------------------------------------------------------------------------------- /chrome/images/slider-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/slider-bg.gif -------------------------------------------------------------------------------- /chrome/images/star-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/star-grey.png -------------------------------------------------------------------------------- /chrome/images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/star.png -------------------------------------------------------------------------------- /chrome/images/tab-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tab-about.png -------------------------------------------------------------------------------- /chrome/images/tab-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tab-bg.gif -------------------------------------------------------------------------------- /chrome/images/tab-changelog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tab-changelog.png -------------------------------------------------------------------------------- /chrome/images/tab-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tab-options.png -------------------------------------------------------------------------------- /chrome/images/tab-translations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tab-translations.png -------------------------------------------------------------------------------- /chrome/images/tab-twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tab-twitter.png -------------------------------------------------------------------------------- /chrome/images/toggle-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/toggle-@2x.png -------------------------------------------------------------------------------- /chrome/images/toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/toggle.png -------------------------------------------------------------------------------- /chrome/images/toggle2-@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/toggle2-@2x.png -------------------------------------------------------------------------------- /chrome/images/toggle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/toggle2.png -------------------------------------------------------------------------------- /chrome/images/tree-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree-128.png -------------------------------------------------------------------------------- /chrome/images/tree-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree-16.png -------------------------------------------------------------------------------- /chrome/images/tree-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree-19.png -------------------------------------------------------------------------------- /chrome/images/tree-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree-32.png -------------------------------------------------------------------------------- /chrome/images/tree-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree-38.png -------------------------------------------------------------------------------- /chrome/images/tree-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree-48.png -------------------------------------------------------------------------------- /chrome/images/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/tree.png -------------------------------------------------------------------------------- /chrome/images/ui-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/ui-delete.png -------------------------------------------------------------------------------- /chrome/images/ui-pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/ui-pin.png -------------------------------------------------------------------------------- /chrome/images/ui-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/chrome/images/ui-share.png -------------------------------------------------------------------------------- /chrome/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "__MSG_name__", 3 | "short_name": "__MSG_nameShort__", 4 | "author": "Tumuyan", 5 | "version": "3.1.13", 6 | "update_url": "https://edge.microsoft.com/extensionwebstorebase/v1/crx", 7 | "manifest_version": 2, 8 | "minimum_chrome_version": "22.0", 9 | "default_locale": "en", 10 | "description": "__MSG_aboutText__", 11 | "options_page": "options.html", 12 | "background": { 13 | "page": "background.html" 14 | }, 15 | "permissions": [ 16 | "storage", 17 | "tabs", 18 | "history", 19 | "bookmarks", 20 | "sessions", 21 | "chrome://favicon/", 22 | "contextMenus" 23 | ], 24 | "icons": { 25 | "16": "images/tree-16.png", 26 | "32": "images/tree-32.png", 27 | "48": "images/tree-48.png", 28 | "128": "images/tree-128.png" 29 | }, 30 | "browser_action": { 31 | "default_icon": { 32 | "19": "images/tree-19.png", 33 | "38": "images/tree-38.png", 34 | "32": "images/tree-32.png", 35 | "48": "images/tree-48.png", 36 | "128": "images/tree-128.png" 37 | }, 38 | "default_popup": "popup.html" 39 | }, 40 | "commands": { 41 | "open_history2": { 42 | "suggested_key": { 43 | "default": "Ctrl+Shift+H", 44 | "windows": "Ctrl+Shift+H", 45 | "mac": "Command+Shift+H" 46 | }, 47 | "description":"__MSG_treeOpen__" 48 | }, 49 | "open_history1": { 50 | "suggested_key": { 51 | "default": "Alt+Shift+H", 52 | "windows": "Alt+Shift+H", 53 | "mac": "Alt+Shift+H" 54 | }, 55 | "description": "__MSG_showAllHistory__" 56 | }, 57 | "open_closed": { 58 | "suggested_key": { 59 | "default": "Alt+Shift+G", 60 | "windows": "Alt+Shift+G", 61 | "mac": "Alt+Shift+G" 62 | }, 63 | "description": "__MSG_OpenClosedHistory__" 64 | }, 65 | "open_bookmark": { 66 | "suggested_key": { 67 | "default": "Alt+Shift+O", 68 | "windows": "Alt+Shift+O", 69 | "mac": "Alt+Shift+O" 70 | }, 71 | "description": "__MSG_OpenBookMark__" 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /chrome/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Popup | Recent History 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 41 | 42 | 43 | 44 | 57 |
      58 |
      59 |
      60 |
      61 |
      62 | 63 | 64 | -------------------------------------------------------------------------------- /chrome/scripts/bookmark.js: -------------------------------------------------------------------------------- 1 | document.addEvent('domready', function () { 2 | 3 | // Fade in 4 | 5 | var historyFx = new Fx.Morph('history-container', { duration: 250 }); 6 | if (chrome.i18n.getMessage("@@bidi_dir") == 'rtl' && chrome.i18n.getMessage("@@ui_locale") !== 'en') { 7 | var ho = { 8 | 'margin-right': [150, 180], 9 | 'opacity': [0, 1] 10 | }; 11 | } else { 12 | var ho = { 13 | 'margin-left': [150, 180], 14 | 'opacity': [0, 1] 15 | }; 16 | } 17 | historyFx.start(ho); 18 | 19 | // Language 20 | 21 | // Toggle history 22 | 23 | if (localStorage['rh-group'] == 'no') { 24 | $('rh-bar-group').setStyle('background-position', 'right center'); 25 | } 26 | if (localStorage['rh-orderby'] == 'title') { 27 | $('rh-bar-orderby').setStyle('background-position', 'right center'); 28 | $('rh-bar-orderby').set('title', returnLang('orderByTime') ); 29 | } else { 30 | $('rh-bar-orderby').set('title', returnLang('orderByTitle') ); 31 | } 32 | $('rh-bar-order').set('title', returnLang('order') ); 33 | if (localStorage['rh-order'] == 'asc') { 34 | $('rh-bar-order').setStyle('background-position', 'right center'); 35 | } 36 | $('rh-bar-group').set('title', returnLang('group') ); 37 | $('rh-bar-group').addEvent('click', function () { 38 | var rhgv = localStorage['rh-group']; 39 | if (rhgv == 'yes') { 40 | $('rh-bar-group').setStyle('background-position', 'right center'); 41 | localStorage['rh-group'] = 'no'; 42 | } else if (rhgv == 'no') { 43 | $('rh-bar-group').setStyle('background-position', 'left center'); 44 | localStorage['rh-group'] = 'yes'; 45 | } 46 | var gahv = getActiveHistory(); 47 | if (gahv == 'history') { 48 | bookmark('yes', ''); 49 | } else if (gahv == 'search') { 50 | var gahviv = $('rh-search').get('value'); 51 | if (gahviv.length > 0) { 52 | bookmark('search', gahviv); 53 | } else { 54 | bookmark('yes', ''); 55 | } 56 | } 57 | }); 58 | $('rh-bar-orderby').addEvent('click', function () { 59 | var rhgv = localStorage['rh-orderby']; 60 | if (rhgv == 'date') { 61 | $('rh-bar-orderby').setStyle('background-position', 'right center'); 62 | $('rh-bar-orderby').set('title', returnLang('orderByTime') ); 63 | localStorage['rh-orderby'] = 'title'; 64 | } else if (rhgv == 'title') { 65 | $('rh-bar-orderby').setStyle('background-position', 'left center'); 66 | $('rh-bar-orderby').set('title', returnLang('orderByTitle') ); 67 | localStorage['rh-orderby'] = 'date'; 68 | } 69 | var gahv = getActiveHistory(); 70 | if (gahv == 'history') { 71 | bookmark('yes', ''); 72 | } else if (gahv == 'search') { 73 | var gahviv = $('rh-search').get('value'); 74 | if (gahviv.length > 0) { 75 | bookmark('search', gahviv); 76 | } else { 77 | bookmark('yes', ''); 78 | } 79 | } 80 | }); 81 | $('rh-bar-order').addEvent('click', function () { 82 | var rhgv = localStorage['rh-order']; 83 | if (rhgv == 'desc') { 84 | $('rh-bar-order').setStyle('background-position', 'right center'); 85 | localStorage['rh-order'] = 'asc'; 86 | } else if (rhgv == 'asc') { 87 | $('rh-bar-order').setStyle('background-position', 'left center'); 88 | localStorage['rh-order'] = 'desc'; 89 | } 90 | var gahv = getActiveHistory(); 91 | if (gahv == 'history') { 92 | bookmark('yes', ''); 93 | } else if (gahv == 'search') { 94 | var gahviv = $('rh-search').get('value'); 95 | if (gahviv.length > 0) { 96 | bookmark('search', gahviv); 97 | } else { 98 | bookmark('yes', ''); 99 | } 100 | } 101 | }); 102 | 103 | 104 | // Shift listener 105 | 106 | $(document.body).addEvent('keydown', function (e) { 107 | if (e.event.keyCode == 16 && shiftState == 'false') { 108 | shiftState = 'true'; 109 | } 110 | }); 111 | $(document.body).addEvent('keyup', function (e) { 112 | if (e.event.keyCode == 16) { 113 | shiftState = 'false'; 114 | } 115 | }); 116 | 117 | 118 | 119 | //获取Location对象的search属性值 120 | var searchStr = location.search; 121 | 122 | if (searchStr.length > 1) { 123 | $("rh-search").set('value', searchStr); 124 | bookmark('search', searchStr); 125 | } else { 126 | searchStr - ''; 127 | } 128 | 129 | if (searchStr == '') 130 | bookmark('current', ''); 131 | 132 | 133 | // Search events 134 | 135 | 136 | $('rh-search').addEvent('keyup', function () { 137 | var sv = this.get('value'); 138 | if (sv.length + sv.replace(/[0-9a-zA-Z]+/g, '').length >= 2) { 139 | if (sv != searchStr) { 140 | sv == searchStr; 141 | bookmark('search', sv); 142 | } 143 | $('rh-views-insert').setStyle('display', 'none'); 144 | $('rh-views-search-insert').setStyle('display', 'block'); 145 | 146 | } else { 147 | $('rh-views-insert').setStyle('display', 'block'); 148 | $('rh-views-search-insert').setStyle('display', 'none'); 149 | } 150 | }); 151 | $('rh-search').focus(); 152 | 153 | 154 | 155 | // Assign events 156 | 157 | // $('master-check-all').addEvent('click', function () { selectHistoryItem(this, 'all'); }); 158 | 159 | 160 | 161 | function bmtree2array(path, tree) { 162 | 163 | path = path + '🗁'; 164 | 165 | let list = []; 166 | for (let i = 0; i < tree.length; i++) { 167 | if (tree[i].children == undefined) { 168 | let title = tree[i].title; 169 | if (title == '') { 170 | title = tree[i].url; 171 | } 172 | if (localStorage['rm-path'] == 'yes') 173 | tree[i].title = (path).replace(/[🗁]+/, '🗁') + ' - ' + title; 174 | list.push(tree[i]); 175 | } else { 176 | // 使用全角字符/,避免解析html发生错误 177 | list = list.concat(bmtree2array(path + tree[i].title, tree[i].children)); 178 | } 179 | } 180 | return list; 181 | } 182 | 183 | 184 | function bookmark(w, q) { 185 | 186 | if (w != 'search') 187 | w = 'yes'; 188 | 189 | if (prh) { 190 | clearInterval(prh); 191 | } 192 | 193 | if (w == 'search') { 194 | var into = 'rh-views-search-insert'; 195 | $('rh-views-search-insert').setStyle('display', 'block'); 196 | $('rh-views-insert').setStyle('display', 'none'); 197 | } else { 198 | var into = 'rh-views-insert'; 199 | $('rh-views-search-insert').setStyle('display', 'none'); 200 | $('rh-views-insert').setStyle('display', 'block'); 201 | $('rh-search').set('value', ''); 202 | } 203 | 204 | $(into).set('text', returnLang('loading')); 205 | 206 | /* 可以进行排序的内容有: 207 | 按照网站分组 208 | 添加顺序 209 | 访问顺序 210 | 访问时间 211 | */ 212 | 213 | if (q == '') { 214 | 215 | chrome.bookmarks.getTree((hi) => { 216 | 217 | 218 | if (hi.length > 0) { 219 | showData(bmtree2array('', hi), into); 220 | // alertLoadingHistory(true); 221 | } else { 222 | // $('calendar-total-value').set('text', '0'); 223 | $(into).set('html', '
      ' + returnLang('noResults') + '
      '); 224 | } 225 | }) 226 | 227 | /* 228 | chrome.bookmarks.getRecent(10000, function (hi) { 229 | // console.log(hi); 230 | 231 | if (hi.length > 0) { 232 | showData(hi,into); 233 | // alertLoadingHistory(true); 234 | } else { 235 | // $('calendar-total-value').set('text', '0'); 236 | $(into).set('html', '
      ' + returnLang('noResults') + '
      '); 237 | } 238 | 239 | }); */ 240 | 241 | } else { 242 | chrome.bookmarks.search(q, (hi) => { 243 | // console.log(res); 244 | 245 | if (hi.length > 0) { 246 | showData(hi, into); 247 | } else { 248 | $(into).set('html', '
      ' + returnLang('noResults') + '
      '); 249 | } 250 | 251 | }) 252 | } 253 | 254 | } 255 | 256 | 257 | function showData(hi, into) { 258 | 259 | alertLoadingHistory(false); 260 | var rha = []; 261 | var grp = localStorage['rh-group']; 262 | var oby = localStorage['rh-orderby']; 263 | var ord = localStorage['rh-order']; 264 | 265 | for (i = 0; i <= hi.length; i++) { 266 | 267 | if (hi[i] !== undefined) { 268 | 269 | if (filtUrl(hi[i].url) == false) { 270 | 271 | var title = hi[i].title; 272 | var url = hi[i].url; 273 | var host = get_host(url); 274 | var visits = hi[i].visitCount; 275 | var furl = 'chrome://favicon/' + hi[i].url; 276 | if (host == "#") { 277 | url = encodeURI(url); 278 | furl = 'chrome://favicon/'; 279 | } 280 | 281 | 282 | if (title == '') { 283 | title = url; 284 | } 285 | 286 | // if (hi[i].dateAdded >= obj['startTime'] && hi[i].dateAdded <= obj['endTime']) 287 | { 288 | // rha.push({epoch: hi[i].dateAdded, url: url, host: (new URI(url).get('host')), time: timeNow(hi[i].dateAdded), date: formatDate(hi[i].dateAdded), favicon: furl, title: truncate(title_fix(title), 0, 100), visits: visits}); 289 | rha.push({ epoch: hi[i].dateAdded, url: url, host: host, time: TimeToStr(hi[i].dateAdded, true, true, true), date: formatDate(hi[i].dateAdded), favicon: furl, title: truncate(title_fix(title), 0, 100), visits: visits }); 290 | 291 | } 292 | 293 | } 294 | 295 | } 296 | 297 | } 298 | 299 | if (rha.length > 0) { 300 | 301 | $('master-check-all').set('disabled', 'disabled'); 302 | 303 | if (into == 'rh-views-insert') { 304 | var rhat = rha.length; 305 | } 306 | 307 | if (oby == 'title') { 308 | rha.sort(function (a, b) { 309 | if (grp == 'yes') { 310 | var nameA = a.host.replace('www.', ''); 311 | var nameB = b.host.replace('www.', ''); 312 | } else if (grp == 'no') { 313 | var nameA = a.title; 314 | var nameB = b.title; 315 | } 316 | if (nameA < nameB) { 317 | return -1; 318 | } else if (nameA > nameB) { 319 | return 1; 320 | } else { 321 | return 0; 322 | } 323 | }); 324 | } else { 325 | rha.sort(function (a, b) { 326 | return a.epoch - b.epoch; 327 | }); 328 | rha.reverse(); 329 | } 330 | 331 | if (ord == 'asc') { 332 | rha.reverse(); 333 | } 334 | 335 | $(into).set('text', ''); 336 | 337 | var ibcv = 'grey'; 338 | var Counter = { counter: 0 }; 339 | 340 | if (grp == 'yes') { // 注意此处回调耗时操作 341 | prh = (function () { 342 | var thisc = this; 343 | if (thisc.counter == rha.length) { 344 | clearInterval(prh); 345 | //isBookmarked('#rh-views .item .link'); 346 | alertLoadingHistory(true); 347 | $(document.body).getElement('#rh-bar-uione input').set('checked', false); 348 | selectedItem = undefined; 349 | new Tips('.title', { className: 'tip-holder' }); 350 | if ($$('#' + into + ' div.group-title').length > 0) { toggleGroup($$('#' + into + ' div.group-title')[0].get('title')); } 351 | $('master-check-all').removeProperty('disabled'); 352 | } else { 353 | 354 | var host = rha[thisc.counter].host; 355 | if (host !== undefined) { 356 | if (!$(into).getElement('div[rel="' + host + '"]')) { 357 | var toggleid = 'toggle-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 358 | var moreid = 'more-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 359 | var errorid = 'error-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 360 | var groupid = 'group-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 361 | var faviconSrc =rha[thisc.counter].favicon ? 'src="' + rha[thisc.counter].favicon + '"' : ''; 362 | new Element('div', { 363 | title: host, 364 | rel: ibcv, 365 | 'class': 'item-holder group-title ', 366 | html: 'Favicon' + host.replace('www.', '') + '' 367 | }).inject(into); 368 | $(toggleid).addEvent('click', function () { 369 | var host = this.getProperty('data-host'); 370 | toggleGroup(host); 371 | }); 372 | $(moreid).addEvent('click', function () { 373 | getMoreItems(this); 374 | }); 375 | $(errorid).addEvent('error', function () { 376 | this.setProperty('src', 'images/blank.png'); 377 | }); 378 | $(groupid).addEvent('click', function () { 379 | var host = this.getProperty('data-host'); 380 | toggleGroup(host); 381 | }) 382 | new Element('div', { 'class': 'group-holder', rel: host, styles: { 'display': 'none' } }).inject(into); 383 | if (ibcv == 'white') { 384 | ibcv = 'grey'; 385 | } else { 386 | ibcv = 'white'; 387 | } 388 | } 389 | 390 | var selectid = 'select-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 391 | var item; 392 | item = '
      '; 393 | item += '' + rha[thisc.counter].time + ''; 394 | item += ''; 395 | item += '' + rha[thisc.counter].title + ''; 396 | item += ''; 397 | item += '
      '; 398 | new Element('div', { 399 | 'rel': $(into).getElement('div.item-holder[title="' + host + '"]').get('rel'), 400 | 'class': 'item-holder', 401 | styles: { 402 | 'background-color': $(into).getElement('div.item-holder[title="' + host + '"]').getStyle('background-color') 403 | } 404 | }).set('html', item + '
      ').inject($(into).getElement('div[rel="' + host + '"]')); 405 | // $(selectid).addEvent('click', function () { 406 | // selectHistoryItem(this, 'single'); 407 | // }); 408 | 409 | var size = $(into).getElement('div[rel="' + host + '"]').childNodes.length; 410 | var label = $(into).getElement('label[rel="' + host + '"]'); 411 | if (label != undefined) 412 | label.set("text", size); 413 | } 414 | } 415 | thisc.counter++; 416 | }).periodical(5, Counter); 417 | } else if (grp == 'no') { 418 | prh = (function () { 419 | var thisc = this; 420 | if (thisc.counter == rha.length) { 421 | clearInterval(prh); 422 | //isBookmarked('#rh-views .item .link'); 423 | alertLoadingHistory(true); 424 | $(document.body).getElement('#rh-bar-uione input').set('checked', false); 425 | selectedItem = undefined; 426 | new Tips('.title', { className: 'tip-holder' }); 427 | if ($$('#' + into + ' div.group-title').length > 0) { toggleGroup($$('#' + into + ' div.group-title')[0].get('title')); } 428 | $('master-check-all').removeProperty('disabled'); 429 | } else { 430 | if (rha[thisc.counter] !== undefined) { 431 | 432 | var selectid = 'select-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 433 | var errorid = 'error-' + Math.floor((Math.random() * 999999999999999999) + 100000000000000000); 434 | var faviconSrc =rha[thisc.counter].favicon ? 'src="' + rha[thisc.counter].favicon + '"' : ''; 435 | var item; 436 | item = '
      '; 437 | item += '' + rha[thisc.counter].time + ''; 438 | item += ''; 439 | item += 'Favicon'; 440 | item += '' + rha[thisc.counter].title + ''; 441 | item += ''; 442 | item += '
      '; 443 | new Element('div', { 'rel': ibcv, 'class': 'item-holder ' }).set('html', item + '
      ').inject(into); 444 | 445 | if (ibcv == 'white') { 446 | ibcv = 'grey'; 447 | } else { 448 | ibcv = 'white'; 449 | } 450 | // $(selectid).addEvent('click', function () { 451 | // selectHistoryItem(this, 'single'); 452 | // }); 453 | $(errorid).addEvent('error', function () { 454 | this.setProperty('src', 'images/blank.png'); 455 | }); 456 | } 457 | } 458 | thisc.counter++; 459 | }).periodical(5, Counter); 460 | } 461 | alertLoadingHistory(true); 462 | } else { 463 | alertLoadingHistory(true); 464 | // $('calendar-total-value').set('text', '0'); 465 | $(into).set('html', '
      ' + returnLang('noResults') + '
      '); 466 | } 467 | 468 | } 469 | 470 | }); 471 | -------------------------------------------------------------------------------- /chrome/scripts/fuzzysearch.js: -------------------------------------------------------------------------------- 1 | /* 2 | * email: bigablecat@hotmail.com 3 | * Date: 2018-04-14 4 | */ 5 | 6 | /** 7 | * @param zTreeId the ztree id used to get the ztree object 8 | * @param searchField selector of your input for fuzzy search 9 | * @param isHighLight whether highlight the match words, default true 10 | * @param isExpand whether to expand the node, default false 11 | * 12 | * @returns 13 | */ 14 | function fuzzySearch(zTreeId, searchField, isHighLight, isExpand, tagId) { 15 | var $jq = jQuery.noConflict();//释放jquery中$定义,并直接使用jQuery代替平时的$ 16 | var zTreeObj = $jq.fn.zTree.getZTreeObj(zTreeId);//get the ztree object by ztree id 17 | if (!zTreeObj) { 18 | alert("fail to get ztree object"); 19 | } 20 | var nameKey = zTreeObj.setting.data.key.name; //get the key of the node name 21 | var urlKey = zTreeObj.setting.data.key.url; 22 | isHighLight = isHighLight === false ? false : true;//default true, only use false to disable highlight 23 | isExpand = isExpand ? true : false; // not to expand in default 24 | zTreeObj.setting.view.nameIsHTML = isHighLight; //allow use html in node name for highlight use 25 | 26 | var metaChar = '[\\[\\]\\\\\^\\$\\.\\|\\?\\*\\+\\(\\)]'; //js meta characters 27 | var rexMeta = new RegExp(metaChar, 'gi');//regular expression to match meta characters 28 | 29 | // keywords filter function 30 | function ztreeFilter(zTreeObj, _keywords, callBackFunc) { 31 | if (!_keywords) { 32 | _keywords = ''; //default blank for _keywords 33 | } 34 | 35 | let h = $jq(document).scrollTop(); 36 | 37 | 38 | // function to find the matching node 39 | function filterFunc(node) { 40 | if (node && node.oldname && node.oldname.length > 0) { 41 | node[nameKey] = node.oldname; //recover oldname of the node if exist 42 | } 43 | zTreeObj.updateNode(node); //update node to for modifications take effect 44 | if (_keywords.length == 0) { 45 | //return true to show all nodes if the keyword is blank 46 | zTreeObj.showNode(node); 47 | zTreeObj.expandNode(node, true); 48 | // zTreeObj.expandNode(node, isExpand); 49 | return true; 50 | } 51 | //transform node name and keywords to lowercase 52 | if (node[nameKey] && node[nameKey].toLowerCase().indexOf(_keywords.toLowerCase()) != -1 53 | || node[urlKey] && node[urlKey].toLowerCase().indexOf(_keywords.toLowerCase()) != -1 54 | ) { 55 | if (isHighLight) { //highlight process 56 | //a new variable 'newKeywords' created to store the keywords information 57 | //keep the parameter '_keywords' as initial and it will be used in next node 58 | //process the meta characters in _keywords thus the RegExp can be correctly used in str.replace 59 | var newKeywords = _keywords.replace(rexMeta, function (matchStr) { 60 | //add escape character before meta characters 61 | return '\\' + matchStr; 62 | }); 63 | node.oldname = node[nameKey]; //store the old name 64 | var rexGlobal = new RegExp(newKeywords, 'gi');//'g' for global,'i' for ignore case 65 | //use replace(RegExp,replacement) since replace(/substr/g,replacement) cannot be used here 66 | node[nameKey] = node.oldname.replace(rexGlobal, function (originalText) { 67 | //highlight the matching words in node name 68 | var highLightText = 69 | '' 70 | + originalText 71 | + ''; 72 | return highLightText; 73 | }); 74 | zTreeObj.updateNode(node); //update node for modifications take effect 75 | } 76 | zTreeObj.showNode(node);//show node with matching keywords 77 | return true; //return true and show this node 78 | } 79 | 80 | zTreeObj.hideNode(node); // hide node that not matched 81 | return false; //return false for node not matched 82 | } 83 | 84 | 85 | var nodesShow = zTreeObj.getNodesByFilter(filterFunc); //get all nodes that would be shown 86 | processShowNodes(nodesShow, _keywords);//nodes should be reprocessed to show correctly 87 | if(_keywords.length<=0){ 88 | zTreeObj.expandAll(true); 89 | } 90 | $jq(document).scrollTop(h); 91 | alertLoadingHistory(true); 92 | } 93 | 94 | /** 95 | * reprocess of nodes before showing 96 | */ 97 | function processShowNodes(nodesShow, _keywords) { 98 | if (nodesShow && nodesShow.length > 0) { 99 | //process the ancient nodes if _keywords is not blank 100 | if (_keywords.length > 0) { 101 | $jq.each(nodesShow, function (n, obj) { 102 | var pathOfOne = obj.getPath();//get all the ancient nodes including current node 103 | if (pathOfOne && pathOfOne.length > 0) { 104 | //i < pathOfOne.length-1 process every node in path except self 105 | for (var i = 0; i < pathOfOne.length - 1; i++) { 106 | zTreeObj.showNode(pathOfOne[i]); //show node 107 | zTreeObj.expandNode(pathOfOne[i], true); //expand node 108 | } 109 | } 110 | }); 111 | } else { //show all nodes when _keywords is blank and expand the root nodes 112 | var rootNodes = zTreeObj.getNodesByParam('level', '0');//get all root nodes 113 | $jq.each(rootNodes, function (n, obj) { 114 | zTreeObj.expandNode(obj, true); //expand all root nodes 115 | }); 116 | } 117 | } 118 | // alertUserHistory(true); 119 | } 120 | 121 | //listen to change in input element 122 | $jq(searchField).bind('input propertychange', function () { 123 | alertLoadingHistory(false); 124 | var _keywords = $jq(this).val(); 125 | searchNodeLazy(_keywords); //call lazy load 126 | }); 127 | 128 | $jq(tagId).click(function () { 129 | alertUserHistory(false); 130 | // searchTag(this.textContent); 131 | var _keywords = this.textContent; 132 | if (lastKeyword.indexOf(_keywords) >= 0) { 133 | _keywords = ''; 134 | } 135 | $jq(searchField)[0].value = _keywords; 136 | searchNodeLazy(_keywords); 137 | }); 138 | 139 | 140 | // $jq("body").on("propertychange input", searchField, function () { alert("i m change"); }); 141 | 142 | 143 | var timeoutId = null; 144 | var lastKeyword = ''; 145 | // excute lazy load once after input change, the last pending task will be cancled 146 | function searchNodeLazy(_keywords) { 147 | if (timeoutId) { 148 | //clear pending task 149 | clearTimeout(timeoutId); 150 | alertLoadingHistory(true); 151 | } 152 | timeoutId = setTimeout(function () { 153 | if (lastKeyword === _keywords) { 154 | return; 155 | } 156 | ztreeFilter(zTreeObj, _keywords); //lazy load ztreeFilter function 157 | // $(searchField).focus();//focus input field again after filtering 158 | lastKeyword = _keywords; 159 | }, 500); 160 | } 161 | 162 | /* 163 | // searchNodeLazy(keyword); 164 | // excute lazy load once after input change, the last pending task will be cancled 165 | function searchTag(key) { 166 | // let lastkey = $jq(searchField).val(); 167 | // if (lastkey == undefined) 168 | // lastkey == ''; 169 | 170 | if (timeoutId) { 171 | //clear pending task 172 | clearTimeout(timeoutId); 173 | } 174 | timeoutId = setTimeout(function () { 175 | if (lastKeyword.indexOf(key) < 0) { 176 | lastKeyword=key; 177 | $jq(searchField)[0].value = key; 178 | ztreeFilter(zTreeObj, key); 179 | // let nodes = zTreeObj.getNodesByParamFuzzy("name", key, null); 180 | // processShowNodes(nodes, key); 181 | 182 | } else { 183 | lastKeyword=""; 184 | $jq(searchField)[0].value = ""; 185 | ztreeFilter(zTreeObj, ''); 186 | // let nodes = zTreeObj.getNodes(); 187 | // processShowNodes(nodes, ''); 188 | } 189 | 190 | 191 | }, 500); 192 | } 193 | 194 | */ 195 | } 196 | 197 | 198 | -------------------------------------------------------------------------------- /chrome/scripts/history-rtl.js: -------------------------------------------------------------------------------- 1 | if(chrome.i18n.getMessage("@@bidi_dir") == 'rtl' && chrome.i18n.getMessage("@@ui_locale") !== 'en'){ 2 | document.write(''); 3 | } -------------------------------------------------------------------------------- /chrome/scripts/history.js: -------------------------------------------------------------------------------- 1 | document.addEvent('domready', function(){ 2 | 3 | // Fade in 4 | 5 | var historyFx = new Fx.Morph('history-container', {duration: 250}); 6 | if(chrome.i18n.getMessage("@@bidi_dir") == 'rtl' && chrome.i18n.getMessage("@@ui_locale") !== 'en'){ 7 | var ho = { 8 | 'margin-right': [150, 180], 9 | 'opacity': [0, 1] 10 | }; 11 | }else{ 12 | var ho = { 13 | 'margin-left': [150, 180], 14 | 'opacity': [0, 1] 15 | }; 16 | } 17 | historyFx.start(ho); 18 | 19 | // Language 20 | 21 | $('delete-button').set('value', returnLang('deleteItems')); 22 | $('delete-range-button').set('value', returnLang('deleteItems')); 23 | 24 | // Toggle history 25 | 26 | if(localStorage['rh-group'] == 'no'){ 27 | $('rh-bar-group').setStyle('background-position', 'right center'); 28 | } 29 | if(localStorage['rh-orderby'] == 'title'){ 30 | $('rh-bar-orderby').setStyle('background-position', 'right center'); 31 | $('rh-bar-orderby').set('title', returnLang('orderByTime') ); 32 | } else { 33 | $('rh-bar-orderby').set('title', returnLang('orderByTitle') ); 34 | } 35 | $('rh-bar-order').set('title', returnLang('order') ); 36 | if(localStorage['rh-order'] == 'asc'){ 37 | $('rh-bar-order').setStyle('background-position', 'right center'); 38 | } 39 | $('rh-bar-group').set('title', returnLang('group') ); 40 | $('rh-bar-group').addEvent('click', function(){ 41 | var rhgv = localStorage['rh-group']; 42 | if(rhgv == 'yes'){ 43 | $('rh-bar-group').setStyle('background-position', 'right center'); 44 | localStorage['rh-group'] = 'no'; 45 | }else if(rhgv == 'no'){ 46 | $('rh-bar-group').setStyle('background-position', 'left center'); 47 | localStorage['rh-group'] = 'yes'; 48 | } 49 | var gahv = getActiveHistory(); 50 | if(gahv == 'history'){ 51 | history('yes', ''); 52 | }else if(gahv == 'search'){ 53 | var gahviv = $('rh-search').get('value'); 54 | if(gahviv.length > 0){ 55 | history('search', gahviv); 56 | }else{ 57 | history('yes', ''); 58 | } 59 | } 60 | }); 61 | $('rh-bar-orderby').addEvent('click', function(){ 62 | var rhgv = localStorage['rh-orderby']; 63 | if(rhgv == 'date'){ 64 | $('rh-bar-orderby').setStyle('background-position', 'right center'); 65 | $('rh-bar-orderby').set('title', returnLang('orderByTime') ); 66 | localStorage['rh-orderby'] = 'title'; 67 | }else if(rhgv == 'title'){ 68 | $('rh-bar-orderby').setStyle('background-position', 'left center'); 69 | $('rh-bar-orderby').set('title', returnLang('orderByTitle') ); 70 | localStorage['rh-orderby'] = 'date'; 71 | } 72 | var gahv = getActiveHistory(); 73 | if(gahv == 'history'){ 74 | history('yes', ''); 75 | }else if(gahv == 'search'){ 76 | var gahviv = $('rh-search').get('value'); 77 | if(gahviv.length > 0){ 78 | history('search', gahviv); 79 | }else{ 80 | history('yes', ''); 81 | } 82 | } 83 | }); 84 | $('rh-bar-order').addEvent('click', function(){ 85 | var rhgv = localStorage['rh-order']; 86 | if(rhgv == 'desc'){ 87 | $('rh-bar-order').setStyle('background-position', 'right center'); 88 | localStorage['rh-order'] = 'asc'; 89 | }else if(rhgv == 'asc'){ 90 | $('rh-bar-order').setStyle('background-position', 'left center'); 91 | localStorage['rh-order'] = 'desc'; 92 | } 93 | var gahv = getActiveHistory(); 94 | if(gahv == 'history'){ 95 | history('yes', ''); 96 | }else if(gahv == 'search'){ 97 | var gahviv = $('rh-search').get('value'); 98 | if(gahviv.length > 0){ 99 | history('search', gahviv); 100 | }else{ 101 | history('yes', ''); 102 | } 103 | } 104 | }); 105 | 106 | // Scroll events 107 | 108 | window.addEvent('scroll', function(){ 109 | var wcv = (this.getScroll().y)*1; 110 | if(wcv > 115){ 111 | $('calendar').setStyles({ 112 | 'position': 'fixed', 113 | 'top': '15px' 114 | }); 115 | }else{ 116 | $('calendar').setStyles({ 117 | 'position': 'absolute', 118 | 'top': '129px' 119 | }); 120 | } 121 | }); 122 | 123 | // Shift listener 124 | 125 | $(document.body).addEvent('keydown', function(e){ 126 | if(e.event.keyCode == 16 && shiftState == 'false'){ 127 | shiftState = 'true'; 128 | } 129 | }); 130 | $(document.body).addEvent('keyup', function(e){ 131 | if(e.event.keyCode == 16){ 132 | shiftState = 'false'; 133 | } 134 | }); 135 | 136 | $$('#showCalendar').addEvent('click', function (e) { 137 | showCalendar(); 138 | }); 139 | 140 | // Date events 141 | 142 | var derhdf = localStorage['rh-date']; 143 | derhdf = derhdf.replace('dd', 'dsdi').replace('mm', 'dsmi').replace('yyyy', 'dsyi'); 144 | derhdf = derhdf.split('/'); 145 | $(derhdf[0]).set('html', ''); 146 | $(derhdf[1]).set('html', ''); 147 | $(derhdf[2]).set('html', ''); 148 | 149 | $('date-select-day').addEvent('change', function(){ 150 | calendar('selected', ''); 151 | history('yes', ''); 152 | }); 153 | $('date-select-month').addEvent('change', function(){ 154 | calendar('selected', ''); 155 | history('yes', ''); 156 | }); 157 | $('date-select-year').addEvent('change', function(){ 158 | calendar('selected', ''); 159 | history('yes', ''); 160 | }); 161 | 162 | // Calendar init 163 | 164 | calendar('current', ''); 165 | 166 | 167 | //获取Location对象的search属性值 168 | var searchStr = location.search; 169 | 170 | if(searchStr.length>1){ 171 | //由于searchStr属性值包括“?”,所以除去该字符 172 | console.log("searchStr"+searchStr); 173 | let site=new URI(searchStr.substr(1)).get('host'); 174 | if(site != undefined ){ 175 | searchStr = site.split('?')[0]; 176 | if(searchStr.length>0){ 177 | $('rh-what').set('value',"all"); 178 | // $('rh-what').getSelected().get('value'); 179 | // $jq('#rh-what').val("current"); 180 | $("rh-search").set('value',searchStr); 181 | history('search', searchStr); 182 | } 183 | }else{ 184 | searchStr=''; 185 | } 186 | }else{ 187 | searchStr-''; 188 | } 189 | 190 | if(searchStr=='') 191 | history('current', ''); 192 | 193 | // Calendar range toggle 194 | 195 | $('delete-range-toggle-button').addEvent('click', function(){ 196 | var drtb = this; 197 | var drtbcs = $('calendar').getStyle('width').toInt(); 198 | var drtbfx = new Fx.Morph('calendar', {duration: 350, transition: Fx.Transitions.Linear}); 199 | if(drtbcs == 336){ 200 | drtbfx.start({ 201 | 'width': '170px' 202 | }); 203 | (function(){ 204 | drtb.setStyle('background-position', 'left top'); 205 | }).delay(350); 206 | }else if(drtbcs == 170){ 207 | drtbfx.start({ 208 | 'width': '336px' 209 | }); 210 | (function(){ 211 | drtb.setStyle('background-position', 'right top'); 212 | }).delay(350); 213 | } 214 | }); 215 | 216 | // Search events 217 | 218 | $('rh-what').addEvent('change', function(){ 219 | var sv = $('rh-search').get('value'); 220 | if(sv.length + sv.replace(/[0-9a-zA-Z]+/g,'').length >= 2){ 221 | history('search', sv); 222 | } 223 | }); 224 | $('rh-search').addEvent('keyup', function(){ 225 | var sv = this.get('value'); 226 | if(sv.length + sv.replace(/[0-9a-zA-Z]+/g,'').length >= 2){ 227 | if(sv!=searchStr){ 228 | sv==searchStr; 229 | history('search', sv); 230 | } 231 | $('rh-views-insert').setStyle('display', 'none'); 232 | $('rh-views-search-insert').setStyle('display', 'block'); 233 | 234 | }else{ 235 | $('rh-views-insert').setStyle('display', 'block'); 236 | $('rh-views-search-insert').setStyle('display', 'none'); 237 | } 238 | }); 239 | $('rh-clear-search').addEvent('click', function(){ 240 | $('rh-search').set('value', ''); 241 | $('rh-search').focus(); 242 | $('rh-views-insert').setStyle('display', 'block'); 243 | $('rh-views-search-insert').setStyle('display', 'none'); 244 | $('rh-views-search-insert').set('text', ''); 245 | $(document.body).getElement('#rh-bar-uione input').set('checked', false); 246 | }); 247 | $('rh-search').focus(); 248 | 249 | // Range date 250 | 251 | var rdp = [$('delete-range-one'), $('delete-range-two')]; 252 | for(r=0;r'); 44 | $(derhdf[1]).set('html', ''); 45 | $(derhdf[2]).set('html', ''); 46 | 47 | $('date-select-day').addEvent('change', function () { 48 | calendar2('selected', ''); 49 | // history('yes', ''); 50 | loadHistory('yes', ''); 51 | }); 52 | $('date-select-month').addEvent('change', function () { 53 | calendar2('selected', ''); 54 | // history('yes', ''); 55 | loadHistory('yes', ''); 56 | }); 57 | $('date-select-year').addEvent('change', function () { 58 | calendar2('selected', ''); 59 | // history('yes', ''); 60 | loadHistory('yes', ''); 61 | }); 62 | 63 | // Calendar init 64 | 65 | calendar2('current', ''); 66 | 67 | 68 | 69 | function calendar2(w, e) { 70 | 71 | if (isLeapYear()) { 72 | var dayarray = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 73 | } else { 74 | var dayarray = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 75 | } 76 | 77 | if (w == 'current') { 78 | var cdateo = new Date(); 79 | } else if ('selected') { 80 | var mcheck = dayarray[($('date-select-month').getSelected().get('value') * 1 - 1)]; 81 | var dcheck = ($('date-select-day').getSelected().get('value') * 1); 82 | if (mcheck < dcheck) { 83 | var cdateo = new Date(($('date-select-year').getSelected().get('value') * 1), ($('date-select-month').getSelected().get('value') * 1 - 1), mcheck, 23, 59, 59, 999); 84 | } else { 85 | var cdateo = new Date(($('date-select-year').getSelected().get('value') * 1), ($('date-select-month').getSelected().get('value') * 1 - 1), ($('date-select-day').getSelected().get('value') * 1), 23, 59, 59, 999); 86 | } 87 | } 88 | 89 | if (e == 'prev') { 90 | cdateo.setDate(cdateo.getDate() - 1); 91 | } else if (e == 'next') { 92 | cdateo.setDate(cdateo.getDate() + 1); 93 | } 94 | 95 | $('date-select-day').set('html', ''); 96 | var ydatec = new Date().getFullYear(); 97 | var mdatec = cdateo.getMonth(); 98 | var ddatec = cdateo.getDate(); 99 | var yeararray = [ydatec, (ydatec - 1)]; 100 | 101 | if (w == 'current') { 102 | for (i = 0; i < yeararray.length; i++) { 103 | if (i == 0) { 104 | new Element('option', { 'value': yeararray[i], 'selected': 'selected', 'text': yeararray[i] }).inject('date-select-year'); 105 | } else { 106 | new Element('option', { 'value': yeararray[i], 'text': yeararray[i] }).inject('date-select-year'); 107 | } 108 | } 109 | } 110 | 111 | $$('#date-select-month option').each(function (el) { 112 | if ((mdatec) + 1 == (el.get('value') * 1)) { 113 | el.set('selected', 'selected'); 114 | } 115 | }); 116 | 117 | for (i = 0; i <= dayarray.length; i++) { 118 | if (mdatec == i) { 119 | for (ia = 1; ia <= dayarray[i]; ia++) { 120 | if (ia == ddatec) { 121 | ia = ia + ''; 122 | if (ia.length == 1) { 123 | ia = '0' + ia; 124 | } 125 | new Element('option', { 'value': ia, 'selected': 'selected', 'text': ia }).inject('date-select-day'); 126 | } else { 127 | ia = ia + ''; 128 | if (ia.length == 1) { 129 | ia = '0' + ia; 130 | } 131 | new Element('option', { 'value': ia, 'text': ia }).inject('date-select-day'); 132 | } 133 | } 134 | } 135 | } 136 | 137 | var fday = new Date(ydatec, mdatec, 1, 23, 59, 59, 999).getDay(); 138 | var lday = new Date(ydatec, mdatec, dayarray[mdatec], 23, 59, 59, 999).getDay(); 139 | 140 | $('calendar-days').set('text', ''); 141 | 142 | for (ii = 0; ii < dayarray[mdatec]; ii++) { 143 | if (ii == 0) { 144 | for (d = 0; d < fday; d++) { 145 | new Element('span', { html: ' ', 'class': 'day' }).inject('calendar-days'); 146 | } 147 | } 148 | if ((ii + 1) == ddatec) { 149 | new Element('a', { 150 | id: 'selected', 151 | href: '#', 152 | rel: (ii + 1) + '|' + (mdatec + 1) + '|' + ydatec, 153 | text: (ii + 1), 154 | 'class': 'day', 155 | events: { 156 | click: function () { 157 | var cel = this; 158 | $$('#date-select-day option').each(function (el) { 159 | if (el.get('value').toInt() == cel.get('text').toInt()) { 160 | el.set('selected', 'selected'); 161 | } else { 162 | el.set('selected', ''); 163 | } 164 | }); 165 | $$('#calendar-days a#selected').removeProperty('id'); 166 | cel.set('id', 'selected'); 167 | // history('yes', ''); 168 | loadHistory('yes', ''); 169 | } 170 | } 171 | }).inject('calendar-days'); 172 | } else { 173 | new Element('a', { 174 | href: '#', 175 | text: (ii + 1), 176 | 'class': 'day', 177 | events: { 178 | click: function () { 179 | var cel = this; 180 | $$('#date-select-day option').each(function (el) { 181 | if (el.get('value').toInt() == cel.get('text').toInt()) { 182 | el.set('selected', 'selected'); 183 | } else { 184 | el.set('selected', ''); 185 | } 186 | }); 187 | $$('#calendar-days a#selected').removeProperty('id'); 188 | cel.set('id', 'selected'); 189 | // history('yes', ''); 190 | loadHistory('yes', ''); 191 | } 192 | } 193 | }).inject('calendar-days'); 194 | } 195 | if ((ii + 1) == dayarray[mdatec]) { 196 | for (d = 0; d < (6 - lday); d++) { 197 | new Element('span', { html: ' ', 'class': 'day' }).inject('calendar-days'); 198 | } 199 | } 200 | } 201 | 202 | } 203 | 204 | 205 | 206 | function loadHistory(w, q) { 207 | if (w == 'yes') { 208 | var day = ($('date-select-day').getSelected().get('value') * 1); 209 | var month = ($('date-select-month').getSelected().get('value') * 1 - 1); 210 | var year = ($('date-select-year').getSelected().get('value') * 1); 211 | var today = new Date(year, month, day, 23, 59, 59, 999); 212 | var today0 = new Date(year, month, day, 0, 0, 0, 0); 213 | 214 | pre_History(today0.getTime(), today.getTime()); 215 | } else if (w == 'current') { 216 | var ndc = new Date(); 217 | var today = new Date(ndc.getFullYear(), ndc.getMonth(), ndc.getDate(), 23, 59, 59, 999); 218 | pre_History(0, 0); 219 | } 220 | } 221 | 222 | 223 | function zTreeOnClickUrl(event, treeId, treeNode) { 224 | chrome.tabs.query({ url: treeNode.t }, function (tabs) { 225 | if (tabs.length > 0) { 226 | chrome.windows.update(tabs[0].windowId, { focused: true }, function () { 227 | chrome.tabs.update(tabs[0].id, { active: true } ); 228 | }); 229 | } else { 230 | window.open(treeNode.t, "_blank"); 231 | } 232 | }); 233 | }; 234 | 235 | // ztree 236 | var setting = { 237 | 238 | view: { 239 | nameIsHTML: true, //允许name支持html 240 | selectedMulti: false 241 | }, 242 | edit: { 243 | enable: false, 244 | editNameSelectAll: false 245 | }, 246 | 247 | data: { 248 | key: { 249 | title: "t" 250 | }, 251 | simpleData: { 252 | enable: true, 253 | pIdKey: "pId" 254 | } 255 | }, 256 | callback: { 257 | onClick: zTreeOnClickUrl 258 | } 259 | }; 260 | 261 | // 待插入的全部数据 262 | var zNodes = []; 263 | // 待插入的部分数据 264 | var yNodes = []; 265 | 266 | var nNodes = [ 267 | { id: 1, pId: 0, name: "正在解析数据中", t: "😴", open: true }, 268 | { id: 2, pId: 1, name: "请稍后再试...", t: "🤣", open: true } 269 | ]; 270 | 271 | var mNodes = [ 272 | { id: 3, pId: 1, name: "没有找到浏览历史", t: "😴", open: true } 273 | ]; 274 | 275 | var tag = {}; 276 | 277 | var pIDs = {}; 278 | 279 | var showLessItem = localStorage['less-item']; 280 | 281 | var loadzNode = false; 282 | 283 | $jq.fn.zTree.init($jq("#treeDemo"), setting, nNodes); 284 | var treeObj = $jq.fn.zTree.getZTreeObj("treeDemo"); 285 | fuzzySearch('treeDemo', '#rh-search', null, false, '#search-tag a'); 286 | 287 | // var Filter = fuzzySearchNow('treeDemo','#rh-search',null,false); 288 | 289 | var transition_value = { 290 | link: "🔗", 291 | typed: "⌨", 292 | auto_toplevel: "☆", 293 | auto_bookmark: "☆", 294 | auto_subframe: "🧭", 295 | manual_subframe: "🧭", 296 | generated: "⌨", 297 | start_page: "🏠", 298 | form_submit: "⏫", 299 | reload: "🔄", 300 | keyword: "🔍", 301 | keyword_generated: "🔍" 302 | 303 | // “link” 用户通过点击页面中的链接,跳转至本URL。 304 | // “typed” 用户通过地址栏输入网址,来访问本URL。这种类型也适用于显式的导航动作。与之相反,你可以参阅generated,它适用于用户没看到(不知道)网址URL的情况。 305 | // “auto_bookmark” 用户通过界面的推荐到达本URL。例如,通过点击菜单项打开的页面。 306 | // auto_toplevel: 页面在命令行中指定或是浏览器的起始页面。 307 | // “auto_subframe” 子框架导航。这种类型是指那些非顶层框架自动加载的内容。例如,如果一个页面由许多包含广告的子框架构成,那些广告链就拥有这种过渡类型。用户可能没有意识到页面中的这些内容是个单独的框架,所以他们也可能根本没有在意这些URL(请查阅 manual_subframe)。 308 | // “manual_subframe” 此种类型是为用户显式请求的子框架导航以及在前进/后退列表中的生成导航入口的子框架导航所设置。由于用户更关心所请求框架被加载的效果,因此显式请求的框架可能会比自动载入的框架更为重要。 309 | // “generated” 用户通过在地址栏输入,而选择一个不像网址的入口到达的URL页面。例如,匹配结果中可能包含Google搜索结果页的URL, 但是它可能以“用Google搜索……”的形式展现。这类导航和 typed 导航是有差异的,因为用户没有输入或者看到最终的URL。请参阅 keyword。 310 | // “start_page” 页面是在命令行中被指定(打开),或者其本身就是起始页。 311 | // “form_submit” 312 | // 用户提交的表单。请注意,某些情况,诸如表单运用脚本来提交,不属于此种类型。 313 | 314 | // “reload” 用户通过点击刷新按钮或者在地址栏输入回车键来刷新页面属于此种类型。会话重置,重开标签页都属于此种类型。 315 | // “keyword” URL通过可替代的关键字,而不是默认的搜索引擎产生。请查阅keyword_generated。 316 | // “keyword_generated” 相应由关键字生成的访问。请查阅keyword。 317 | 318 | }; 319 | 320 | console.log("loading..."); 321 | var DAY = 24 * 3600 * 1000; 322 | var date_e = new Date(); 323 | date_e.setHours(23); date_e.setMinutes(59); date_e.setSeconds(59); date_e.setMilliseconds(999); 324 | 325 | 326 | var date = new Date(); 327 | // date.setHours(23); date.setMinutes(59); date.setSeconds(59); date.setMilliseconds(999); 328 | 329 | date.setHours(0); date.setMinutes(0); date.setSeconds(0); date.setMilliseconds(0); 330 | var DAY = 24 * 3600 * 1000; 331 | 332 | function timeStr2(time, wait_space) { 333 | var datestr = localStorage['rh-date'].replace('yyyy/', '').replace('/yyyy', ''); 334 | 335 | if (time >= date && wait_space) 336 | return ''; 337 | 338 | if (new Date() - date > DAY) 339 | date = date + DAY; 340 | 341 | var currentTime = new Date(time); 342 | var hours = currentTime.getHours(); 343 | var minutes = currentTime.getMinutes(); 344 | 345 | if (hours < 10) { hours = '0' + hours; } 346 | if (minutes < 10) { minutes = '0' + minutes; } 347 | var timeStr = hours + ':' + minutes; 348 | 349 | if (hours == 0 && minutes == 0) { 350 | timeStr = ""; 351 | } else if (hours == 23 && minutes == 59) { 352 | timeStr = ""; 353 | } 354 | 355 | 356 | // var month = currentTime.getMonth()+1; 357 | // if(month<10) {month='0'+month;} 358 | 359 | // var days = currentTime.getDate(); 360 | // if(days<10) {days='0'+days;} 361 | 362 | 363 | return datestr.replace('dd', currentTime.getDate()) 364 | .replace('mm', currentTime.getMonth() + 1) 365 | + ' ' + timeStr; 366 | } 367 | 368 | 369 | var db = chrome.extension.getBackgroundPage().db; 370 | if (db != undefined) 371 | pre_History(0, 0); 372 | 373 | function pre_History(loadfrom, loadto) { 374 | alertLoadingHistory(false); 375 | 376 | zNodes = []; 377 | tag = {}; 378 | pIDs = {}; 379 | 380 | if (loadfrom > 0 && loadto > 0) { 381 | console.log("loadHistory time from " + loadfrom.toString() + " to " + loadto.toString()); 382 | feach_History(loadfrom, loadto, 0); 383 | } else { 384 | let time = (date).getTime() - DAY * (localStorage["load-range2"]); 385 | console.log("loadHistory time from " + new Date(time).toString()); 386 | feach_History(time, (date_e).getTime(), 0); 387 | } 388 | 389 | 390 | } 391 | 392 | 393 | 394 | 395 | function feach_History(loadfrom, loadto, t) { 396 | 397 | var transaction = db.transaction(["VisitItem"], "readwrite"); 398 | var objectStore = transaction.objectStore("VisitItem"); 399 | // 索引,最后的访问时间大于日期上限 400 | let result = objectStore.index('visitTime'); 401 | yNodes = []; 402 | let c; 403 | 404 | if (t == 0) { 405 | console.log("feach_History " + t + " from " + loadfrom.toString() + " to " + loadto.toString()); 406 | c = result.openCursor(IDBKeyRange.bound(loadfrom, loadto), "prev"); //倒序条件查询 407 | } else { 408 | console.log("feach_History " + t + " from " + loadfrom.toString() + " to " + loadto.toString()); 409 | c = result.openCursor(IDBKeyRange.bound(loadfrom - DAY * t, loadfrom - DAY * (t - 1)), "prev"); //倒序条件查询 410 | } 411 | 412 | c.onsuccess = function (e) { 413 | var cursor = e.target.result; 414 | if (cursor != undefined) { 415 | let v = cursor.value; 416 | let t = transition_value[v.transition]; 417 | 418 | if (filtUrl(v.url) == false) { 419 | let node = { 420 | id: v.visitId, 421 | pId: parseInt(v.referringVisitId), 422 | name: TimeToStr(v.visitTime, true, true) + " - " + v.title.replace(/[<>]/g, ' ') + ' ' + t, 423 | // url: v.url, 424 | icon: 'chrome://favicon/' + v.url.replace(/(?"+v.visitId 428 | }; 429 | 430 | tag[t] = true; 431 | 432 | pIDs[v.referringVisitId] = true; 433 | 434 | yNodes.push(node); 435 | } 436 | 437 | cursor.continue(); 438 | } else { 439 | 440 | zNodes = zNodes.concat(yNodes); 441 | 442 | if (zNodes.length < localStorage['load-range4'] && loadfrom - DAY * t > date - localStorage['load-range3'] * DAY) { 443 | feach_History(loadfrom, loadto, t + 1); 444 | } else { 445 | let nodes = treeObj.getNodes(); 446 | while (nodes && nodes.length > 0) { 447 | treeObj.removeNode(nodes[0], false); 448 | // treeObj.removeNode(nodes,false); 449 | } 450 | 451 | if (zNodes.length > 0 && showLessItem == 'yes') { 452 | 453 | let urls = {}; 454 | 455 | for (let s = 0; s < zNodes.length; s++) { 456 | let ss = zNodes[s]; 457 | while (pIDs[ss.id] != true) { 458 | if (ss.transition == 'reload' || urls[ss.url] == true) { 459 | zNodes.splice(s, 1); 460 | } else { 461 | urls[ss.url] = true; 462 | break; 463 | } 464 | 465 | if (s < zNodes.length) 466 | ss = zNodes[s]; 467 | else 468 | break; 469 | } 470 | } 471 | } 472 | 473 | if (zNodes.length > 0) { 474 | treeObj.addNodes(null, zNodes, false); 475 | // $('calendar-total-value').set('text',zNodes.length); 476 | } else { 477 | treeObj.addNodes(null, mNodes, false); 478 | // $('search-tag').set('text',''); 479 | // $('calendar-total-value').set('text', '0'); 480 | } 481 | $('calendar-total-value').set('text', zNodes.length); 482 | 483 | // $('header-text').set('text',new Date(loadfrom-DAY*t).toLocaleString()+' - '+new Date(loadto).toLocaleString()); 484 | $('header-text').set('text', timeStr2(new Date(loadfrom - DAY * t), false) + ' ~ ' + timeStr2(new Date(loadto), true)); 485 | refreshSearchTags(); 486 | // 487 | alertLoadingHistory(true); 488 | console.log(" pre_History() finish :( "); 489 | } 490 | 491 | 492 | 493 | } 494 | 495 | } 496 | 497 | c.onerror = function (event) { 498 | console.log(" loadHistory() Error :( " + event); 499 | alertLoadingHistory(true); 500 | }; 501 | 502 | 503 | } 504 | 505 | 506 | function refreshSearchTags() { 507 | /* for() 508 | 509 | let 510 | name: timeStr(v.visitTime)+" - "+ v.title +' '+transition_value[v.transition] , 511 | url: v.url, 512 | icon: 'chrome://favicon/' + v.url, 513 | open: true, 514 | t:v.url + " "+v.referringVisitId + ">"+v.visitId 515 | }; 516 | 517 | tag[v.transition]=true; 518 | */ 519 | 520 | 521 | 522 | 523 | $$('#search-tag a').each(function (e) { 524 | 525 | if (tag[e.get('text')]) { 526 | e.set('style', ''); 527 | // e1.set('style','display:show'); 528 | } else { 529 | e.set('style', 'display:none'); 530 | } 531 | }); 532 | 533 | } 534 | 535 | 536 | 537 | 538 | 539 | }); 540 | -------------------------------------------------------------------------------- /chrome/scripts/jquery.ztree.exhide.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree exHideNodes 3 | * v3.5.46 4 | * http://treejs.cn/ 5 | * 6 | * Copyright (c) 2010 Hunter.z 7 | * 8 | * Licensed same as jquery - MIT License 9 | * http://www.opensource.org/licenses/mit-license.php 10 | * 11 | * Date: 2020-11-21 12 | */ 13 | 14 | (function ($) { 15 | var _setting = { 16 | data: { 17 | key: { 18 | isHidden: "isHidden" 19 | } 20 | } 21 | }; 22 | //default init node of exLib 23 | var _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { 24 | var isHidden = data.isHidden(setting, n); 25 | data.isHidden(setting, n, isHidden); 26 | data.initHideForExCheck(setting, n); 27 | }, 28 | //add dom for check 29 | _beforeA = function (setting, node, html) { 30 | }, 31 | //update zTreeObj, add method of exLib 32 | _zTreeTools = function (setting, zTreeTools) { 33 | zTreeTools.showNodes = function (nodes, options) { 34 | view.showNodes(setting, nodes, options); 35 | } 36 | zTreeTools.showNode = function (node, options) { 37 | if (!node) { 38 | return; 39 | } 40 | view.showNodes(setting, [node], options); 41 | } 42 | zTreeTools.hideNodes = function (nodes, options) { 43 | view.hideNodes(setting, nodes, options); 44 | } 45 | zTreeTools.hideNode = function (node, options) { 46 | if (!node) { 47 | return; 48 | } 49 | view.hideNodes(setting, [node], options); 50 | } 51 | 52 | var _checkNode = zTreeTools.checkNode; 53 | if (_checkNode) { 54 | zTreeTools.checkNode = function (node, checked, checkTypeFlag, callbackFlag) { 55 | if (!!node && !!data.isHidden(setting, node)) { 56 | return; 57 | } 58 | _checkNode.apply(zTreeTools, arguments); 59 | } 60 | } 61 | }, 62 | //method of operate data 63 | _data = { 64 | initHideForExCheck: function (setting, n) { 65 | var isHidden = data.isHidden(setting, n); 66 | if (isHidden && setting.check && setting.check.enable) { 67 | if (typeof n._nocheck == "undefined") { 68 | n._nocheck = !!n.nocheck 69 | n.nocheck = true; 70 | } 71 | n.check_Child_State = -1; 72 | if (view.repairParentChkClassWithSelf) { 73 | view.repairParentChkClassWithSelf(setting, n); 74 | } 75 | } 76 | }, 77 | initShowForExCheck: function (setting, n) { 78 | var isHidden = data.isHidden(setting, n); 79 | if (!isHidden && setting.check && setting.check.enable) { 80 | if (typeof n._nocheck != "undefined") { 81 | n.nocheck = n._nocheck; 82 | delete n._nocheck; 83 | } 84 | if (view.setChkClass) { 85 | var checkObj = $$(n, consts.id.CHECK, setting); 86 | view.setChkClass(setting, checkObj, n); 87 | } 88 | if (view.repairParentChkClassWithSelf) { 89 | view.repairParentChkClassWithSelf(setting, n); 90 | } 91 | } 92 | } 93 | }, 94 | //method of operate ztree dom 95 | _view = { 96 | clearOldFirstNode: function (setting, node) { 97 | var n = node.getNextNode(); 98 | while (!!n) { 99 | if (n.isFirstNode) { 100 | n.isFirstNode = false; 101 | view.setNodeLineIcos(setting, n); 102 | break; 103 | } 104 | if (n.isLastNode) { 105 | break; 106 | } 107 | n = n.getNextNode(); 108 | } 109 | }, 110 | clearOldLastNode: function (setting, node, openFlag) { 111 | var n = node.getPreNode(); 112 | while (!!n) { 113 | if (n.isLastNode) { 114 | n.isLastNode = false; 115 | if (openFlag) { 116 | view.setNodeLineIcos(setting, n); 117 | } 118 | break; 119 | } 120 | if (n.isFirstNode) { 121 | break; 122 | } 123 | n = n.getPreNode(); 124 | } 125 | }, 126 | makeDOMNodeMainBefore: function (html, setting, node) { 127 | var isHidden = data.isHidden(setting, node); 128 | html.push("
    • "); 129 | }, 130 | showNode: function (setting, node, options) { 131 | data.isHidden(setting, node, false); 132 | data.initShowForExCheck(setting, node); 133 | $$(node, setting).show(); 134 | }, 135 | showNodes: function (setting, nodes, options) { 136 | if (!nodes || nodes.length == 0) { 137 | return; 138 | } 139 | var pList = {}, i, j; 140 | for (i = 0, j = nodes.length; i < j; i++) { 141 | var n = nodes[i]; 142 | if (!pList[n.parentTId]) { 143 | var pn = n.getParentNode(); 144 | pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode(); 145 | } 146 | view.showNode(setting, n, options); 147 | } 148 | for (var tId in pList) { 149 | var children = data.nodeChildren(setting, pList[tId]); 150 | view.setFirstNodeForShow(setting, children); 151 | view.setLastNodeForShow(setting, children); 152 | } 153 | }, 154 | hideNode: function (setting, node, options) { 155 | data.isHidden(setting, node, true); 156 | node.isFirstNode = false; 157 | node.isLastNode = false; 158 | data.initHideForExCheck(setting, node); 159 | view.cancelPreSelectedNode(setting, node); 160 | $$(node, setting).hide(); 161 | }, 162 | hideNodes: function (setting, nodes, options) { 163 | if (!nodes || nodes.length == 0) { 164 | return; 165 | } 166 | var pList = {}, i, j; 167 | for (i = 0, j = nodes.length; i < j; i++) { 168 | var n = nodes[i]; 169 | if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) { 170 | var pn = n.getParentNode(); 171 | pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode(); 172 | } 173 | view.hideNode(setting, n, options); 174 | } 175 | for (var tId in pList) { 176 | var children = data.nodeChildren(setting, pList[tId]); 177 | view.setFirstNodeForHide(setting, children); 178 | view.setLastNodeForHide(setting, children); 179 | } 180 | }, 181 | setFirstNode: function (setting, parentNode) { 182 | var children = data.nodeChildren(setting, parentNode); 183 | var isHidden = data.isHidden(setting, children[0], false); 184 | if (children.length > 0 && !isHidden) { 185 | children[0].isFirstNode = true; 186 | } else if (children.length > 0) { 187 | view.setFirstNodeForHide(setting, children); 188 | } 189 | }, 190 | setLastNode: function (setting, parentNode) { 191 | var children = data.nodeChildren(setting, parentNode); 192 | var isHidden = data.isHidden(setting, children[0]); 193 | if (children.length > 0 && !isHidden) { 194 | children[children.length - 1].isLastNode = true; 195 | } else if (children.length > 0) { 196 | view.setLastNodeForHide(setting, children); 197 | } 198 | }, 199 | setFirstNodeForHide: function (setting, nodes) { 200 | var n, i, j; 201 | for (i = 0, j = nodes.length; i < j; i++) { 202 | n = nodes[i]; 203 | if (n.isFirstNode) { 204 | break; 205 | } 206 | var isHidden = data.isHidden(setting, n); 207 | if (!isHidden && !n.isFirstNode) { 208 | n.isFirstNode = true; 209 | view.setNodeLineIcos(setting, n); 210 | break; 211 | } else { 212 | n = null; 213 | } 214 | } 215 | return n; 216 | }, 217 | setFirstNodeForShow: function (setting, nodes) { 218 | var n, i, j, first, old; 219 | for (i = 0, j = nodes.length; i < j; i++) { 220 | n = nodes[i]; 221 | var isHidden = data.isHidden(setting, n); 222 | if (!first && !isHidden && n.isFirstNode) { 223 | first = n; 224 | break; 225 | } else if (!first && !isHidden && !n.isFirstNode) { 226 | n.isFirstNode = true; 227 | first = n; 228 | view.setNodeLineIcos(setting, n); 229 | } else if (first && n.isFirstNode) { 230 | n.isFirstNode = false; 231 | old = n; 232 | view.setNodeLineIcos(setting, n); 233 | break; 234 | } else { 235 | n = null; 236 | } 237 | } 238 | return {"new": first, "old": old}; 239 | }, 240 | setLastNodeForHide: function (setting, nodes) { 241 | var n, i; 242 | for (i = nodes.length - 1; i >= 0; i--) { 243 | n = nodes[i]; 244 | if (n.isLastNode) { 245 | break; 246 | } 247 | var isHidden = data.isHidden(setting, n); 248 | if (!isHidden && !n.isLastNode) { 249 | n.isLastNode = true; 250 | view.setNodeLineIcos(setting, n); 251 | break; 252 | } else { 253 | n = null; 254 | } 255 | } 256 | return n; 257 | }, 258 | setLastNodeForShow: function (setting, nodes) { 259 | var n, i, j, last, old; 260 | for (i = nodes.length - 1; i >= 0; i--) { 261 | n = nodes[i]; 262 | var isHidden = data.isHidden(setting, n); 263 | if (!last && !isHidden && n.isLastNode) { 264 | last = n; 265 | break; 266 | } else if (!last && !isHidden && !n.isLastNode) { 267 | n.isLastNode = true; 268 | last = n; 269 | view.setNodeLineIcos(setting, n); 270 | } else if (last && n.isLastNode) { 271 | n.isLastNode = false; 272 | old = n; 273 | view.setNodeLineIcos(setting, n); 274 | break; 275 | } else { 276 | n = null; 277 | } 278 | } 279 | return {"new": last, "old": old}; 280 | } 281 | }, 282 | 283 | _z = { 284 | view: _view, 285 | data: _data 286 | }; 287 | $.extend(true, $.fn.zTree._z, _z); 288 | 289 | var zt = $.fn.zTree, 290 | tools = zt._z.tools, 291 | consts = zt.consts, 292 | view = zt._z.view, 293 | data = zt._z.data, 294 | event = zt._z.event, 295 | $$ = tools.$; 296 | 297 | data.isHidden = function (setting, node, newIsHidden) { 298 | if (!node) { 299 | return false; 300 | } 301 | var key = setting.data.key.isHidden; 302 | if (typeof newIsHidden !== 'undefined') { 303 | if (typeof newIsHidden === "string") { 304 | newIsHidden = tools.eqs(newIsHidden, "true"); 305 | } 306 | newIsHidden = !!newIsHidden; 307 | node[key] = newIsHidden; 308 | } else if (typeof node[key] == "string"){ 309 | node[key] = tools.eqs(node[key], "true"); 310 | } else { 311 | node[key] = !!node[key]; 312 | } 313 | return node[key]; 314 | }; 315 | 316 | data.exSetting(_setting); 317 | data.addInitNode(_initNode); 318 | data.addBeforeA(_beforeA); 319 | data.addZTreeTools(_zTreeTools); 320 | 321 | // Override method in core 322 | var _dInitNode = data.initNode; 323 | data.initNode = function (setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) { 324 | var tmpPNode = (parentNode) ? parentNode : data.getRoot(setting), 325 | children = tmpPNode[setting.data.key.children]; 326 | data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children); 327 | data.tmpHideLastNode = view.setLastNodeForHide(setting, children); 328 | if (openFlag) { 329 | view.setNodeLineIcos(setting, data.tmpHideFirstNode); 330 | view.setNodeLineIcos(setting, data.tmpHideLastNode); 331 | } 332 | isFirstNode = (data.tmpHideFirstNode === node); 333 | isLastNode = (data.tmpHideLastNode === node); 334 | if (_dInitNode) _dInitNode.apply(data, arguments); 335 | if (openFlag && isLastNode) { 336 | view.clearOldLastNode(setting, node, openFlag); 337 | } 338 | }; 339 | 340 | var _makeChkFlag = data.makeChkFlag; 341 | if (!!_makeChkFlag) { 342 | data.makeChkFlag = function (setting, node) { 343 | if (!!node && !!data.isHidden(setting, node)) { 344 | return; 345 | } 346 | _makeChkFlag.apply(data, arguments); 347 | } 348 | } 349 | 350 | var _getTreeCheckedNodes = data.getTreeCheckedNodes; 351 | if (!!_getTreeCheckedNodes) { 352 | data.getTreeCheckedNodes = function (setting, nodes, checked, results) { 353 | if (!!nodes && nodes.length > 0) { 354 | var p = nodes[0].getParentNode(); 355 | if (!!p && !!data.isHidden(setting, p)) { 356 | return []; 357 | } 358 | } 359 | return _getTreeCheckedNodes.apply(data, arguments); 360 | } 361 | } 362 | 363 | var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes; 364 | if (!!_getTreeChangeCheckedNodes) { 365 | data.getTreeChangeCheckedNodes = function (setting, nodes, results) { 366 | if (!!nodes && nodes.length > 0) { 367 | var p = nodes[0].getParentNode(); 368 | if (!!p && !!data.isHidden(setting, p)) { 369 | return []; 370 | } 371 | } 372 | return _getTreeChangeCheckedNodes.apply(data, arguments); 373 | } 374 | } 375 | 376 | var _expandCollapseSonNode = view.expandCollapseSonNode; 377 | if (!!_expandCollapseSonNode) { 378 | view.expandCollapseSonNode = function (setting, node, expandFlag, animateFlag, callback) { 379 | if (!!node && !!data.isHidden(setting, node)) { 380 | return; 381 | } 382 | _expandCollapseSonNode.apply(view, arguments); 383 | } 384 | } 385 | 386 | var _setSonNodeCheckBox = view.setSonNodeCheckBox; 387 | if (!!_setSonNodeCheckBox) { 388 | view.setSonNodeCheckBox = function (setting, node, value, srcNode) { 389 | if (!!node && !!data.isHidden(setting, node)) { 390 | return; 391 | } 392 | _setSonNodeCheckBox.apply(view, arguments); 393 | } 394 | } 395 | 396 | var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf; 397 | if (!!_repairParentChkClassWithSelf) { 398 | view.repairParentChkClassWithSelf = function (setting, node) { 399 | if (!!node && !!data.isHidden(setting, node)) { 400 | return; 401 | } 402 | _repairParentChkClassWithSelf.apply(view, arguments); 403 | } 404 | } 405 | })(jQuery); -------------------------------------------------------------------------------- /chrome/scripts/options-rtl.js: -------------------------------------------------------------------------------- 1 | if(chrome.i18n.getMessage("@@bidi_dir") == 'rtl' && chrome.i18n.getMessage("@@ui_locale") !== 'en'){ 2 | document.write(''); 3 | } -------------------------------------------------------------------------------- /chrome/scripts/options.js: -------------------------------------------------------------------------------- 1 | 2 | document.addEvent('domready', function () { 3 | 4 | // Fade in 5 | 6 | var optionsFx = new Fx.Morph('options', { duration: 250 }); 7 | if (chrome.i18n.getMessage("@@bidi_dir") == 'rtl' && chrome.i18n.getMessage("@@ui_locale") !== 'en') { 8 | var oo = { 9 | 'margin-right': [150, 180], 10 | 'opacity': [0, 1] 11 | }; 12 | } else { 13 | var oo = { 14 | 'margin-left': [150, 180], 15 | 'opacity': [0, 1] 16 | }; 17 | } 18 | optionsFx.start(oo); 19 | 20 | 21 | $("version").set('text',getVersion()); 22 | 23 | // URL Vars 24 | 25 | var vars = getUrlVars(); 26 | 27 | if (vars['p'] == undefined) { 28 | $('tab-options-content').setStyle('display', 'block'); 29 | $('tab-options').addClass('tab-current'); 30 | } else { 31 | $('tab-' + vars['p'] + '-content').setStyle('display', 'block'); 32 | $('tab-' + vars['p']).addClass('tab-current'); 33 | } 34 | 35 | // Options tabs 36 | 37 | $$('.tab').addEvent('click', function (e) { 38 | e.stop(); 39 | $$('.tab-content').setStyle('display', 'none'); 40 | $$('.tab').removeClass('tab-current'); 41 | $(this.get('id') + '-content').setStyle('display', 'block'); 42 | this.addClass('tab-current'); 43 | }); 44 | 45 | // Load translated text 46 | 47 | loadOptionsLang(); 48 | 49 | // Load saved options 50 | 51 | loadOptions(true); 52 | 53 | // Save options 54 | 55 | $('save').addEvent('click', function () { 56 | saveOptions(false); 57 | }); 58 | 59 | $('defaultConfig').set('value', returnLang('defaultConfig')); 60 | $('defaultConfig').addEvent('click', function () { 61 | defaultConfig(true); 62 | location.reload(); 63 | // loadOptions(); 64 | // localStorage.clear(); 65 | // window.open('options.html'); 66 | }); 67 | 68 | $('deleteCache').addEvent('click', function () { 69 | var bg = chrome.extension.getBackgroundPage(); 70 | bg.deleteDb(); 71 | }); 72 | 73 | 74 | // $('shortcuts').set('value', returnLang('shortcuts')); 75 | $('shortcuts').addEvent('click', function () { 76 | chromeURL('chrome://extensions/shortcuts'); 77 | }); 78 | 79 | $('saveUpload').set('value', returnLang('saveUpload')); 80 | $('saveUpload').addEvent('click', function () { 81 | saveOptions(true); 82 | }); 83 | 84 | $('downloadConfig').set('value', returnLang('downloadConfig')); 85 | $('downloadConfig').addEvent('click', function () { 86 | downloadOptions(); 87 | }); 88 | 89 | $('downloadConfig2').set('value', returnLang('downloadConfig2')); 90 | $('downloadConfig2').addEvent('click', function () { 91 | }); 92 | 93 | // Sliders 94 | // recent-history 95 | loadSlider('rhitemsno', 0, 100, 'rh-itemsno'); 96 | // recent-closed 97 | loadSlider('rctitemsno', 0, 100, 'rct-itemsno'); 98 | // recent-tab 99 | loadSlider('rtitemsno', 0, 100, 'rt-itemsno'); 100 | // most visited 101 | loadSlider('mvitemsno', 0, 100, 'mv-itemsno'); 102 | // recent-bookmark 103 | loadSlider('rbitemsno', 0, 100, 'rb-itemsno'); 104 | loadSlider('rhwidth', 225, 800, 'rh-width'); 105 | loadSlider('loadrange', 3, 300, 'load-range'); 106 | loadSlider('loadrange2', 1, 100, 'load-range2'); 107 | loadSlider('loadrange3', 0, 900, 'load-range3'); 108 | loadSlider('loadrange4', 0, 9000, 'load-range4'); 109 | // Load translations iframe 110 | //$('translations-iframe').set('html', ''); 111 | //$('translations-iframe').set('html', 'Click here to view form (opens external link in new window)'); 112 | 113 | // Assign events 114 | 115 | $('flist-add-b').addEvent('click', function () { addFilteredItem(); }); 116 | $('flist-add-i').addEvent('keyup', function (event) { if (event.keyCode == 13) { addFilteredItem(); } }); 117 | $('advance-options').addEvent('submit', function () { return false; }); 118 | 119 | $('deleteList').addEvent('click', function () { $('flist-table').set('html',''); }); 120 | 121 | $('mergeList').addEvent('click', function () {mergeList(); }); 122 | 123 | 124 | 125 | // var UserAgent = navigator.userAgent.toLowerCase(); 126 | // if(UserAgent.indexOf('edg')>0) 127 | { 128 | $('select_history_page').set('style','display:none'); 129 | } 130 | 131 | }); 132 | -------------------------------------------------------------------------------- /chrome/scripts/popup-rtl.js: -------------------------------------------------------------------------------- 1 | if(chrome.i18n.getMessage("@@bidi_dir") == 'rtl' && chrome.i18n.getMessage("@@ui_locale") !== 'en'){ 2 | document.write(''); 3 | } -------------------------------------------------------------------------------- /chrome/scripts/popup.js: -------------------------------------------------------------------------------- 1 | 2 | document.addEvent('domready', function () { 3 | 4 | // Updated/Installed 5 | 6 | if (localStorage['rh-version-' + getVersion()] !== 'true') { 7 | alertUser(returnLang('successfullyInstalled') + 'v' + getVersion() + '', 'open'); 8 | localStorage['rh-version-' + getVersion()] = 'true'; 9 | } 10 | 11 | // if (localStorage['show-popup'] != 'yes') { 12 | // window.open("history2.html"); 13 | // window.close(); 14 | // } 15 | 16 | switch (localStorage['show-popup']) { 17 | case 'history2': 18 | window.open("history2.html"); 19 | window.close(); 20 | break; 21 | case 'history': 22 | window.open("history.html"); 23 | window.close(); 24 | break; 25 | 26 | case 'closed': 27 | window.open("closed.html"); 28 | window.close(); 29 | break; 30 | 31 | case 'bookmark': 32 | window.open("bookmark.html"); 33 | window.close(); 34 | break; 35 | 36 | case 'options': 37 | window.open("options.html"); 38 | window.close(); 39 | break; 40 | 41 | } 42 | 43 | 44 | // Ctrl listener 45 | 46 | $(document.body).addEvent('keydown', function (e) { 47 | if (e.event.keyCode == 17 && ctrlState == 'false') { 48 | ctrlState = 'true'; 49 | } 50 | }); 51 | $(document.body).addEvent('keyup', function (e) { 52 | if (e.event.keyCode == 17) { 53 | ctrlState = 'false'; 54 | } 55 | }); 56 | 57 | // Popup structure 58 | 59 | var rhporder = localStorage['rh-list-order'].split(','); 60 | 61 | for (var o in rhporder) { 62 | if (rhporder[o] == 'rh-order') { 63 | if ((localStorage['rh-itemsno'] * 1) > 0) { 64 | new Element('div', { id: 'rh-inject', html: '' }).inject('popup-insert', 'bottom'); 65 | } 66 | } else if (rhporder[o] == 'rct-order') { 67 | if ((localStorage['rct-itemsno'] * 1) > 0 ) { 68 | if (navigator.userAgent.toLowerCase().indexOf('edg') > 0) { 69 | new Element('div', { id: 'rct-inject', html: '' }).inject('popup-insert', 'bottom'); 70 | } else { 71 | new Element('div', { id: 'rct-inject', html: '' }).inject('popup-insert', 'bottom'); 72 | } 73 | } 74 | } else if (rhporder[o] == 'rb-order') { 75 | if ((localStorage['rb-itemsno'] * 1) > 0) { 76 | new Element('div', { id: 'rb-inject', html: '' }).inject('popup-insert', 'bottom'); 77 | } 78 | } else if (rhporder[o] == 'mv-order') { 79 | if ((localStorage['mv-itemsno'] * 1) > 0) { 80 | new Element('div', { id: 'mv-inject', html: '' }).inject('popup-insert', 'bottom'); 81 | } 82 | } else if (rhporder[o] == 'rt-order') { 83 | // rt = recent tab 84 | if ((localStorage['rt-itemsno'] * 1) > 0 && chrome.extension.getBackgroundPage().recentTabs.length > 0) { 85 | new Element('div', { id: 'rt-inject', html: '' }).inject('popup-insert', 'bottom'); 86 | } 87 | } 88 | } 89 | 90 | // Assign events 91 | 92 | if ($('show-all-history') != undefined) 93 | $('show-all-history').addEvent('click', function () { 94 | if (localStorage['rm-click'] == 'this') 95 | chromeURL('/history2.html'); 96 | else 97 | chromeURL('chrome://history/'); 98 | }); 99 | 100 | if ($('show-all-bookmark') != undefined) 101 | $('show-all-bookmark').addEvent('click', function () { 102 | if (localStorage['rm-click'] == 'this') 103 | chromeURL('/bookmark.html'); 104 | else 105 | chromeURL('chrome://favorites/'); 106 | }); 107 | 108 | if ($('show-all-closed') != undefined) 109 | $('show-all-closed').addEvent('click', function () { 110 | if (localStorage['rm-click'] == 'this') 111 | chromeURL('/closed.html'); 112 | else 113 | chromeURL('chrome://history/recentlyClosed'); 114 | }); 115 | 116 | // Popup init 117 | 118 | // -- Insert 119 | if ($('rh-inject')) { recentHistory(); } 120 | if ($('rct-inject')) { recentlyClosedTabs(); } 121 | if ($('rt-inject')) { showRecentTabs(); } 122 | if ($('rb-inject')) { recentBookmarks(); } 123 | if ($('mv-inject')) { mostVisited(); } 124 | 125 | // $$("#rt-inject-title .item[target]").each(function (el, i) { 126 | // if (i !== 0) { 127 | // el.addEvent('click', function () { 128 | // openTab(el.tabId); 129 | // }); 130 | // } 131 | // }); 132 | 133 | 134 | 135 | // -- Functions 136 | $$('.favicon').addEvent('error', function () { 137 | this.setProperty('src', 'images/blank.png'); 138 | }); 139 | 140 | // -- Width 141 | $(document.body).setStyle('width', localStorage['rh-width']); 142 | 143 | // -- Titles 144 | $$('.popup-title').each(function (el, i) { 145 | if (i !== 0) { 146 | el.setStyle('margin-top', '6px'); 147 | } 148 | }); 149 | 150 | // -- Search 151 | if (localStorage['rh-search'] == 'yes') { 152 | $('popup-search-input').addEvent('keyup', function () { 153 | var sv = this.get('value'); 154 | if (sv.length + sv.replace(/[0-9a-zA-Z]+/g, '').length >= 2) { 155 | popupSearch(sv); 156 | $('popup-insert').setStyle('display', 'none'); 157 | $('popup-search-insert').setStyle('display', 'block'); 158 | } else { 159 | $('popup-insert').setStyle('display', 'block'); 160 | $('popup-search-insert').setStyle('display', 'none'); 161 | } 162 | }); 163 | $('popup-search-clear').addEvent('click', function () { 164 | $('popup-search-input').set('value', ''); 165 | $('popup-search-input').focus(); 166 | $('popup-insert').setStyle('display', 'block'); 167 | $('popup-search-insert').setStyle('display', 'none'); 168 | $('popup-search-insert').set('text', ''); 169 | }); 170 | $('popup-search-input').focus(); 171 | } else { 172 | $('popup-header').setStyle('display', 'none'); 173 | if ($$('.popup-title').length > 0) { 174 | $$('.popup-title')[0].setStyle('margin-top', '10px'); 175 | } 176 | } 177 | 178 | // -- Alert holder 179 | $('alert-holder').addEvent('click', function () { 180 | this.setStyle('display', 'none'); 181 | }); 182 | 183 | // -- Scrollbar fix 184 | //popup_scrollbar_fix.periodical(250); 185 | 186 | }); 187 | -------------------------------------------------------------------------------- /screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tumuyan/Tree-Style-History/10973ed0ab18661fff3fb93f24983a7106af6dff/screen.jpg --------------------------------------------------------------------------------