source: DASISH/t5.6/client/chrome/markingcollection/content/markingcollection/replacedURL.js @ 2709

Last change on this file since 2709 was 2709, checked in by sroth, 11 years ago

Wired-Marker initial source code with minor adjustments.

  • Property svn:executable set to *
File size: 6.5 KB
Line 
1var mcReplacedURL = {
2
3        get STRING()     { return document.getElementById("mcRepString"); },
4        get SEARCHLIST() { return document.getElementById("mcRepSearchMenulist"); },
5        get REPLACETEXT(){ return document.getElementById("mcRepReplaceTextbox"); },
6        get ACCEPTBTN()  { return document.getElementById("mcRepDialog").getButton("accept"); },
7        get REPLACEBTN() { return document.getElementById("mcRepReplaceButton"); },
8        get REPLACETAR() { return document.getElementById("mcRepTargetDirectory"); },
9
10        get DataSource() { return window.opener.top.bitsObjectMng.DataSource; },
11        get Common()     { return window.opener.top.bitsObjectMng.Common;     },
12        get XPath()      { return window.opener.top.bitsObjectMng.XPath;      },
13        get Database()   { return window.opener.top.bitsObjectMng.Database;   },
14        get XML()        { return window.opener.top.bitsObjectMng.XML;        },
15        get gBrowser()   { return window.opener.top.bitsObjectMng.getBrowser();},
16
17        item     : null,
18        resource : null,
19        property : "",
20        changed  : false,
21
22        init : function(){
23                this.item = window.arguments[0];
24                this.resource = this.item.res;
25                this.list = this.item.list;
26                this.objArr = [];
27                this.id2changed = [];
28                var dbtype = this.DataSource.getProperty(this.resource, "dbtype");
29                var i;
30                for(i=0;i<this.list.length;i++){
31                        this.objArr.push(this.list[i]);
32                        this.id2changed[this.list[i].oid] = false;
33                }
34                this.remakeList();
35                var title = this.STRING.getString("REPLACED_URL");
36                document.title = title + " [ " + this.DataSource.getProperty(this.resource, "title") + " ]";
37    window.sizeToContent();
38                var width = window.opener.top.innerWidth - 50;
39                window.resizeTo(width,window.outerHeight);
40                if(this.ACCEPTBTN)  this.ACCEPTBTN.setAttribute("disabled","true");
41                if(this.REPLACEBTN) this.REPLACEBTN.setAttribute("disabled","true");
42        },
43
44        remakeList : function(){
45                var i,key;
46                var hash = [];
47                var aURI;
48                var aURL;
49                for(i=0;i<this.objArr.length;i++){
50                        var uri = this.objArr[i].doc_url;
51                        if(this.REPLACETAR.selected){
52                                aURI = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI);
53                                aURI.spec = uri;
54                                aURL = aURI.QueryInterface(Components.interfaces.nsIURL);
55                                uri = aURL.prePath+aURL.directory;
56                        }
57                        hash[uri] = "";
58                }
59                var arr = [];
60                for(key in hash){
61                        if(typeof hash[key] == "function") continue;
62                        arr.push(key);
63                }
64                arr.sort();
65                this.SEARCHLIST.removeAllItems();
66                this.SEARCHLIST.value = "";
67                for(i=0;i<arr.length;i++){
68                        this.SEARCHLIST.appendItem(arr[i],"","");
69                }
70        },
71
72        changeTarget : function(){
73                this.remakeList();
74        },
75
76        change : function(){
77                var searched_text = this.SEARCHLIST.value;
78                var replaced_text = this.REPLACETEXT.value;
79                if(!searched_text || searched_text == "" || !replaced_text || replaced_text == ""){
80                        this.REPLACEBTN.setAttribute("disabled","true");
81                }else{
82                        this.REPLACEBTN.removeAttribute("disabled");
83                }
84        },
85
86        displayURL : function(){
87                var uri = this.gBrowser.contentDocument.location.href;
88                if(this.REPLACETAR.selected){
89                        var aURI = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURI);
90                        aURI.spec = uri;
91                        var aURL = aURI.QueryInterface(Components.interfaces.nsIURL);
92                        uri = aURL.prePath+aURL.directory;
93                }
94                this.REPLACETEXT.value = uri;
95                this.change();
96        },
97
98        folderURL : function(){
99                var folder = this.getFolder();
100                if(!folder) return;
101                this.REPLACETEXT.value = this.Common.convertFilePathToURL(folder.path);
102                this.change();
103        },
104
105        getFolder : function (){
106                var picker = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
107                var result = null;
108                try{
109                        picker.init(window, "Selected Folder", picker.modeGetFolder);
110                        var showResult = picker.show();
111                        if(showResult == picker.returnOK){
112                                result = picker.file;
113                        }else if(showResult == picker.returnReplace){
114                                if(picker.file.exists()) picker.file.remove(false);
115                                result = picker.file;
116                        }
117                }catch(e){
118                        result = null;
119                }
120                return result;
121        },
122
123        replaced : function(){
124                var searched_text = this.SEARCHLIST.value;
125                var replaced_text = this.REPLACETEXT.value;
126                if(!searched_text || searched_text == "") return;
127                var replacedNum = 0;
128                var i;
129                for(i=0;i<this.objArr.length;i++){
130                        if(this.objArr[i].doc_url.indexOf(searched_text)>=0){
131                                replacedNum++;
132                        }else if(this.objArr[i].con_url.indexOf(searched_text)>=0){
133                                replacedNum++;
134                        }
135                }
136                if(replacedNum==0){
137                        this.Common.alert(this.STRING.getString("ALERT_REPLACED_URL"),undefined,window);
138                        return;
139                }
140                var title = this.STRING.getString("CONFIRM_REPLACED_URL");
141                if(!this.Common.confirm("[ "+replacedNum + " ] " + title,undefined,undefined,undefined,undefined,window)) return;
142                var parser = new DOMParser();
143                var s = new XMLSerializer();
144                for(i=0;i<this.objArr.length;i++){
145                        if(this.objArr[i].doc_url.indexOf(searched_text)>=0){
146                                this.objArr[i].doc_url = this.objArr[i].doc_url.replace(searched_text, replaced_text);
147                                this.id2changed[this.objArr[i].oid] = true;
148                        }
149                        if(this.objArr[i].con_url.indexOf(searched_text)>=0){
150                                this.objArr[i].con_url = this.objArr[i].con_url.replace(searched_text, replaced_text);
151                                this.id2changed[this.objArr[i].oid] = true;
152                        }
153                        if(this.objArr[i].oid_property){
154                                try{ var xmldoc = parser.parseFromString(this.objArr[i].oid_property,"text/xml"); }catch(e){xmldoc = null; }
155                                if(xmldoc && xmldoc.documentElement){
156                                        var xmlnode = xmldoc.getElementsByTagName("HYPER_ANCHOR")[0];
157                                        if(xmlnode && xmlnode.textContent.indexOf(searched_text)>=0){
158                                                var hyperAnchor = xmlnode.textContent;
159                                                while(xmlnode.hasChildNodes()){
160                                                        xmlnode.removeChild(xmlnode.lastChild);
161                                                }
162                                                hyperAnchor = hyperAnchor.replace(searched_text, replaced_text);
163                                                xmlnode.appendChild(xmldoc.createTextNode(hyperAnchor));
164                                                this.objArr[i].oid_property = s.serializeToString(xmldoc);
165                                        }
166                                }
167                        }
168                        this.changed |= this.id2changed[this.objArr[i].oid];
169                }
170                s = undefined;
171                parser = undefined;
172                if(this.changed && this.ACCEPTBTN) this.ACCEPTBTN.removeAttribute("disabled");
173                this.remakeList();
174        },
175
176        accept : function(){
177                var rtnArr = [];
178                var i;
179                for(i=0;i<this.objArr.length;i++){
180                        if(!this.id2changed[this.objArr[i].oid]) continue;
181                        rtnArr.push(this.objArr[i]);
182                }
183                if(window.arguments[0]){
184                        if(rtnArr.length>0) window.arguments[0].objArr = rtnArr;
185                        window.arguments[0].accept = this.changed;
186                        if(window.arguments[0].callback) window.arguments[0].callback(window.arguments[0]);
187                }
188        },
189
190        cancel : function(){
191                if(window.arguments[0]) window.arguments[0].accept = false;
192        },
193};
194
195
196function _dump(aString){
197        window.opener.top.bitsMarkingCollection._dump(aString);
198}
199
Note: See TracBrowser for help on using the repository browser.