Commits

Sulaiman Mustafa committed 1e67855

الوديعة الأولى للمشروع: ولأول مرة المشروع جاهز للإستخدام من أول وديعة!

Comments (0)

Files changed (6)

+var partials;
+
+chrome.omnibox.onInputChanged.addListener(function(text) {    
+    var disc;
+    partials = []
+    
+    if (!text) return;
+    
+    for (var i in localStorage) if ((i.length >= text.length) && (i.substring(0, text.length) == text)) partials.push(i);
+    if (partials.length>0) {
+        disc = "<dim>Matches: </dim> <match>"+partials[0]+"</match>";
+        if (partials.length>1){
+            disc += " <dim>";
+            disc += partials.slice(1).join(" ");
+            disc += "</dim>";
+        }
+    }
+    else disc = "<dim>No matchs found</dim>";
+    
+    chrome.omnibox.setDefaultSuggestion({"description":disc});
+});
+
+chrome.omnibox.onInputEntered.addListener(function(text) {
+    if (text == "+") add();
+    else if (text == "?" || text == "؟") chrome.tabs.create({'url': 'list.html'});
+    else if (text in localStorage) chrome.tabs.executeScript(null, {"code": localStorage[text]});
+    else if (text && partials.length>0) chrome.tabs.executeScript(null, {"code": localStorage[partials[0]]});
+    else alert("No bookmarklet regestered with '"+text+"'");
+    console.log(text, localStorage[partials[0]], localStorage[text]);
+});
+
+function add(){
+    var code = prompt("Add the bookmarklet:");
+    while (true) {
+        var name = prompt("Give it a name:");
+        if (!name) return;
+        if ((name in localStorage) && !confirm("'"+name+"' is alrady in use, do you want to overwrite it?")) continue;
+        if (name[0] == "-") {
+            alert("Names starting with a dash are reserved names.");
+            continue;
+        }
+        else break;
+    }
+    if (code.substring(0, "javascript:".length) == "javascript:") code = code.substring("javascript:".length);
+    localStorage[name]=code;
+    alert("Done. Have a nice day.");
+}
+
+if (localStorage["-oriented"] != "true") chrome.tabs.create({'url': 'list.html'});

icon-128.png

Added
New image

icon-16.png

Added
New image

icon-48.png

Added
New image
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <link rel="icon" type="image/png" href="icon-16.png">
+        <title>Omlet Bookmarklet Dictionary</title>
+        <script type="text/javascript">
+            function init(){
+                for (var i in localStorage) if(i[0] != "-") document.getElementById("list").value += i+":"+localStorage[i]+"\n";
+            }
+            function save(){
+                localStorage.clear();
+                localStorage["-oriented"] = "true";
+                var list = document.getElementById("list").value.split("\n");
+                for (var i = 0; i < list.length; ++i) {
+                    sep = list[i].indexOf(":");
+                    if(sep >= 0) {localStorage[list[i].substring(0, list[i].indexOf(":"))]=list[i].substring(list[i].indexOf(":")+1);
+                        console.log(list[i].substring(0, list[i].indexOf(":")), list[i].substring(list[i].indexOf(":")+1));
+                    }
+                }
+                
+            }
+            localStorage["-oriented"] = "true";
+        </script>
+        <style type="text/css">
+            #list{
+                position:fixed; top:0px; bottom:0px; border:none;
+                left:50%; right:0px; white-space: nowrap; outline:none;
+                line-height: 1.5em; resize: none; direction:ltr; 
+                text-align:left;
+                padding-top:3em;
+            }
+            #content{
+                position:fixed; top:0px; bottom:0px;
+                right:50%; left:0px; overflow: auto;
+            }
+            .key { 
+                border-radius: 3px; border: 1px solid rgb(204, 204, 204);
+                background-color: whiteSmoke; padding: .4em;
+                padding-bottom: 0px; padding-top: 0px; font-size: 0.8em;
+                color: rgb(102, 102, 102); border-bottom-width: 2px; 
+            }
+            #content > div{
+                width: 60%;
+                margin-right: auto;
+                margin-left: auto;
+            }
+        </style>
+    </head>
+    <body onload="init()" dir="RTL" lang="ar">
+        <textarea id="list" onkeyup="save()" dir="lrt" lang="en" spellcheck="false"></textarea>
+        <div id="content">
+            <img src="icon-128.png" alt="" style="display:block;width:128px;margin-left:auto;margin-right:auto">
+            <div>
+                <h3>استِخدَمُها</h3>
+                <p>
+                    إدخل النقطة <span class="key">.</span> في شريط العناوين أعلى 
+                    المتصفح، ثم اتبعه بمسافة. ستجد أن أيقونة الشريط تبدلت إلى شعار 
+                    هذه الإضافة.
+                </p>
+                <h3>مُدْخَلاتُها</h3>
+                <p>
+                    مرر أسم المرجعية (Bookmarklet) كي تنفذها، 
+                    والرمز <span class="key">+</span> لإضافة مرجعية جديدة، 
+                    و <span class="key">?</span> للاطلاع على هذه الصفحة. 
+                </p>
+                <h3>سَجِلُها</h3>
+                <p>
+                    أيمن الصفحة سجل يضم جميع المرجعيات هذه الإضافة، وأي تغيير يحدث 
+                    فيها يغيّر بالمرجعية المخزنة <b>مباشرة</b>. كل مرجعية تقع على
+                    سطر واحد وتنفرد به، ويبدأ السطر بإسم المرجعية ويليه العلامة 
+                    ":" ثم المرجعية نفسها.
+                </p>
+                <p>
+                    للإحتفاظ بجميع المرجعيات، ولنقلها إلى حاسب او متصفح آخر، أنقل 
+                    محتوى هذا السجل وضعه في السجل الآخر.
+                </p>
+            </div>
+        </div>
+    </body>
+</html>
+{
+  "name": "Omlet",
+  "description": "An omnibox-based bookmarklet dictionary",
+  "version": "1.0",
+  "omnibox": { "keyword" : "." },
+  "icons": {
+    "16": "icon-16.png",
+    "48": "icon-48.png",
+    "128": "icon-128.png"
+  },
+  "background": {
+    "scripts": ["background.js"]
+  },
+  "permissions": ["tabs", "http://*/*", "https://*/*"]
+}