Enhanced the web browser speed dial page. 5_5_x

Sat, 20 Sep 2014 16:22:13 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 20 Sep 2014 16:22:13 +0200
branch
5_5_x
changeset 3796
242c02148f00
parent 3791
65dd3f34e0b2
child 3797
441fdafa2ef5

Enhanced the web browser speed dial page.

Helpviewer/Network/EricAccessHandler.py file | annotate | diff | comparison | revisions
Helpviewer/SpeedDial/SpeedDial.py file | annotate | diff | comparison | revisions
Helpviewer/data/html/speeddialPage.html file | annotate | diff | comparison | revisions
--- a/Helpviewer/Network/EricAccessHandler.py	Fri Sep 19 19:29:09 2014 +0200
+++ b/Helpviewer/Network/EricAccessHandler.py	Sat Sep 20 16:22:13 2014 +0200
@@ -92,17 +92,20 @@
                 .replace("@URL@", self.tr("URL"))
                 .replace("@TITLE@", self.tr("Title"))
                 .replace("@APPLY@", self.tr("Apply"))
+                .replace("@CLOSE@", self.tr("Close"))
                 .replace("@NEW-PAGE@", self.tr("New Page"))
                 .replace("@TITLE-EDIT@", self.tr("Edit"))
                 .replace("@TITLE-REMOVE@", self.tr("Remove"))
                 .replace("@TITLE-RELOAD@", self.tr("Reload"))
-                .replace(
-                "@TITLE-FETCHTITLE@", self.tr("Load title from page"))
-                .replace(
-                "@SETTINGS-TITLE@", self.tr("Speed Dial Settings"))
+                .replace("@TITLE-WARN@",
+                         self.tr("Are you sure to remove this speed dial?"))
+                .replace("@TITLE-FETCHTITLE@",
+                         self.tr("Load title from page"))
+                .replace("@SETTINGS-TITLE@",
+                         self.tr("Speed Dial Settings"))
                 .replace("@ADD-TITLE@", self.tr("Add New Page"))
-                .replace(
-                "@TXT_NRROWS@", self.tr("Maximum pages in a row:"))
+                .replace("@TXT_NRROWS@",
+                         self.tr("Maximum pages in a row:"))
                 .replace("@TXT_SDSIZE@", self.tr("Change size of pages:"))
             )
             
--- a/Helpviewer/SpeedDial/SpeedDial.py	Fri Sep 19 19:29:09 2014 +0200
+++ b/Helpviewer/SpeedDial/SpeedDial.py	Sat Sep 20 16:22:13 2014 +0200
@@ -138,7 +138,8 @@
                 
                 self.__initialScript += \
                     "addBox('{0}', '{1}', '{2}');\n".format(
-                        page.url, page.title, imgSource)
+                        page.url, Utilities.html_uencode(page.title),
+                        imgSource)
         
         return self.__initialScript
     
@@ -323,6 +324,16 @@
         @return sanitized URL (string)
         """
         return QUrl.fromUserInput(url).toString()
+    
+    @pyqtSlot(str, result=str)
+    def unescapeTitle(self, title):
+        """
+        Public slot to unescape the titel string.
+        
+        @param title escaped title (string)
+        @return un-escaped title (string)
+        """
+        return Utilities.html_udecode(title)
 
     @pyqtSlot(int)
     def setPagesInRow(self, count):
@@ -398,7 +409,7 @@
                                      url, fileName))
             if loadTitle:
                 frame.evaluateJavaScript("setTitleToUrl('{0}', '{1}');".format(
-                                         url, title))
+                                         url, Utilities.html_uencode(title)))
         
         thumbnailer.deleteLater()
         self.__thumbnailers.remove(thumbnailer)
--- a/Helpviewer/data/html/speeddialPage.html	Fri Sep 19 19:29:09 2014 +0200
+++ b/Helpviewer/data/html/speeddialPage.html	Sat Sep 20 16:22:13 2014 +0200
@@ -127,12 +127,9 @@
     margin-left: auto;
     margin-right: auto;
 }
-#overlay-edit input[type="submit"] {
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: 10px;
-    display: block;
-    width: 200px;
+#overlay-edit .buttonbox input {
+    margin-right: 3px;
+    margin-left: 3px;
 }
 
 
@@ -211,6 +208,12 @@
     display: inline-block;
     width: 25px;
 }
+
+.buttonbox {
+    margin-top: 5px;
+    margin-bottom: -5px;
+    text-align: right;
+}
 </style>
 
 <script type="text/javascript" src="@JQUERY@"></script>
@@ -230,6 +233,24 @@
 
     var editingId = -1;
 
+    function escapeTitle(title) {
+        title = title.replace(/"/g, '&quot;');
+        title = title.replace(/'/g, '&apos;');
+        return title;
+    }
+
+    function unescapeTitle(title) {
+        title = title.replace(/&quot;/g, '"');
+        title = title.replace(/&apos;/g, '\'');
+        return title;
+    }
+
+    function escapeUrl(url) {
+        url = url.replace(/"/g, '');
+        url = url.replace(/'/g, '');
+        return url;
+    }
+
     function onRemoveClick(box) {
         removeBox($(box).index());
     }
@@ -252,10 +273,14 @@
         $('#titleLine').css({'visibility' : displayStyle });
     }
 
+    function hideEditBox() {
+        $('#fadeOverlay').fadeOut("slow", function() {$("#fadeOverlay").remove();});
+    }
+
     function onEditClick(box) {
         editingId = $(box).index();
         var boxUrl = $(box).children('a').first().attr('href');
-        var boxTitle = $(box).children('span').first().text();
+        var boxTitle = escapeTitle($(box).children('span').first().text());
         if (boxUrl === '')
             boxUrl = 'http://';
 
@@ -269,11 +294,13 @@
                          '<input type="text" id="formTitle" value="' + boxTitle + '"></td></tr>' +
                          '<tr><td></td><td><input type="checkbox" id="fetchTitle" onclick="onFetchTitleClick(this)">' +
                          '<label for="fetchTitle">  ' + TITLE_FETCHTITLE + ' </label></td></tr>' +
-                         '</table><input type="submit" value="' + EDIT + '" onClick="boxEdited()">' +
+                         '</table><p class="buttonbox">' +
+                         '<input type="button" value=" @CLOSE@ " onClick="hideEditBox();">' +
+                         '<input type="button" value="   ' + EDIT + '   " onClick="boxEdited()"></p>' +
                          '</div></div>');
 
         $('#fadeOverlay').css({'filter' : 'alpha(opacity=90)'}).fadeIn();
-        $('#fadeOverlay').click(function() { $(this).fadeOut("slow", function() {$("#fadeOverlay").remove();}); });
+        $('#fadeOverlay').click(function() {hideEditBox()});
         $('#overlay-edit').click(function(event) { event.stopPropagation(); });
         $('#formUrl').focus();
     }
@@ -311,7 +338,7 @@
                 speeddial.removeImageForUrl(a.getAttribute('href'));
             });
         } else {
-            $('#fadeOverlay').fadeOut("slow", function() {$("#fadeOverlay").remove();});
+            hideEditBox();
         }
         speeddial.changed(allPages());
     }
@@ -321,10 +348,10 @@
         var titles = $('span[class="boxTitle"]');
         var value = "";
         $('div.entry').each(function(i) {
-            var url = $(this).children('a').first().attr('href').replace('"', '').replace(';','');
-            var title = $(this).children('span[class="boxTitle"]').first().text().replace('"', '').replace(';','');
-            var img = $(this).children('img').first().attr('src').replace('"', '').replace(';','');
-            value += 'url:"' + url + '"|title:"' + title + '"|img:"' + img + '";';
+            var url = $(this).children('a').first().attr('href');
+            var title = $(this).children('span[class="boxTitle"]').first().text();
+            var img = $(this).children('img').first().attr('src');
+            value += 'url:"' + escapeUrl(url) + '"|title:"' + escapeTitle(title) + '"|img:"' + escapeUrl(img) + '";';
         });
 
         return value;
@@ -340,7 +367,7 @@
         a.setAttribute('class', 'boxUrl');
         var span1 = document.createElement('span');
         span1.setAttribute('class', 'boxTitle');
-        span1.appendChild( document.createTextNode(title) );
+        span1.innerText = unescapeTitle(speeddial.unescapeTitle(title));
         var span2 = document.createElement('span');
         span2.setAttribute('class', 'edit');
         span2.setAttribute('onClick', 'onEditClick(parentNode)');
@@ -390,7 +417,7 @@
                         continue;
 
             var span = box.getElementsByTagName('span')[0];
-            span.innerText = title;
+            span.innerText = speeddial.unescapeTitle(title);
         }
 
         speeddial.changed(allPages());
@@ -423,10 +450,11 @@
             return;
 
         var span = box.getElementsByTagName('span')[0];
-        span.innerText = title;
+        span.innerText = speeddial.unescapeTitle(title);
     }
 
     function removeBox(id) {
+        if (confirm("@TITLE-WARN@"))
         var box = document.getElementById('quickdial').getElementsByTagName('div')[id];
         if (box === undefined)
             return;
@@ -535,8 +563,9 @@
           <input id="SdSize" type="range" min="145" max="360" value="@SD-SIZE@" step="1" onchange="$('#sliderValueSd').html(this.value);" />
         </div>
         <div class="content">
-          <p>
-            <input class="button" type="button" value="@APPLY@" onClick="saveSettings();$('#fadeOverlay2').fadeOut('slow');" />
+          <p class="buttonbox">
+            <input type="button" value=" @CLOSE@ " onClick="$('#fadeOverlay2').fadeOut('slow');" />
+            <input type="button" value="   @APPLY@   " onClick="saveSettings();$('#fadeOverlay2').fadeOut('slow');"/>
           </p>
         </div>
       </div>

eric ide

mercurial