From e37417481e2573bae85534e51796969419d2a7d5 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Fri, 10 May 2013 13:43:58 -0700 Subject: [PATCH] Workaround for old sauce configurations. --- builds/appchan-x.js | 25 +++++++++++++++++++++---- builds/appchan-x.user.js | 25 +++++++++++++++++++++---- builds/crx/script.js | 25 +++++++++++++++++++++---- src/General/Globals.coffee | 6 ++++-- src/General/Settings.coffee | 14 +++++++++++++- src/Miscellaneous/Sauce.coffee | 12 ++++++------ 6 files changed, 86 insertions(+), 21 deletions(-) diff --git a/builds/appchan-x.js b/builds/appchan-x.js index 800554259..4d8dc39db 100644 --- a/builds/appchan-x.js +++ b/builds/appchan-x.js @@ -2579,7 +2579,7 @@ "Timestamps": "rgb(100,100,100)", "Warnings": "rgb(215,0,0)", "Shadow Color": "rgba(0,0,0,.1)", - "Custom CSS": ".thread {\npadding: 2px;\nbox-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3) inset, rgba(70,70,70,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) inset, rgba(70,70,70,.3) 1px 1px;\n}\n#qr .selectrice {\nbox-shadow: none;\n}\n#header-bar {\npadding: 1px 3px;\n}\n.dialog {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2);\n}\n.replyContainer {\npadding-left: 20px;\n}\n.threadContainer {\nborder: none;\nbox-shadow: 0px 0px 3px rgba(0, 0, 0, .3) inset, rgba(70,70,70,.3) 1px 1px;\npadding: 2px 0;\nmargin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\ntransition:background .2s,box-shadow .2s;\n}" + "Custom CSS": ".thread {\npadding: 2px;\nbox-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3) inset, rgba(70,70,70,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) inset, rgba(70,70,70,.3) 1px 1px;\n}\n#qr .selectrice {\nbox-shadow: none;\n}\n#header-bar {\npadding: 1px 3px;\n}\n.dialog {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2);\n}\n.thread > .replyContainer\n.threadContainer > .replyContainer {\npadding-left: 20px;\n}\n.threadContainer {\nborder: none;\nbox-shadow: 0px 0px 3px rgba(0, 0, 0, .3) inset, rgba(70,70,70,.3) 1px 1px;\npadding: 2px 0;\nmargin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\ntransition:background .2s,box-shadow .2s;\n}" }, "Frost": { "Author": "Zixaphir", @@ -2630,7 +2630,7 @@ "Timestamps": "rgb(100,100,100)", "Warnings": "rgb(215,0,0)", "Shadow Color": "rgba(0,0,0,.1)", - "Custom CSS": ".thread {\n padding: 2px;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.8) 1px 1px;\n}\n#qr .selectrice {\n box-shadow: none;\n}\n#header-bar {\n padding: 1px 3px;\n}\n.dialog {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n.replyContainer {\n padding-left: 20px;\n}\n.threadContainer {\n border: none;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n padding: 2px 0;\n margin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" + "Custom CSS": ".thread {\n padding: 2px;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.8) 1px 1px;\n}\n#qr .selectrice {\n box-shadow: none;\n}\n#header-bar {\n padding: 1px 3px;\n}\n.dialog {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n.thread > .replyContainer\n.threadContainer > .replyContainer {\n padding-left: 20px;\n}\n.threadContainer {\n border: none;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n padding: 2px 0;\n margin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" } }; @@ -13109,15 +13109,19 @@ createSauceLink: function(link) { var m, text; - link = link.replace(/%(T?URL|MD5|board)/ig, function(parameter) { + link = link.replace(/(%(T?URL|MD5|board)|\$[1-4])/ig, function(parameter) { switch (parameter) { case '%TURL': + case '$1': return "' + encodeURIComponent(post.file.thumbURL) + '"; case '%URL': + case '$2': return "' + encodeURIComponent(post.file.URL) + '"; case '%MD5': + case '$3': return "' + encodeURIComponent(post.file.MD5) + '"; case '%board': + case '$4': return "' + encodeURIComponent(post.board) + '"; default: return parameter; @@ -13688,7 +13692,20 @@ section.innerHTML = "
Sauce is disabled.
Lines starting with a # will be ignored.
You can specify a display text by appending ;text:[text] to the URL.
"; ta = $('textarea', section); $.get('sauces', Conf['sauces'], function(item) { - return ta.value = item['sauces']; + return ta.value = item['sauces'].replace(/\$\d/g, function(c) { + switch (c) { + case '$1': + return '%TURL'; + case '$2': + return '%URL'; + case '$3': + return '%MD5'; + case '$4': + return '%board'; + default: + return c; + } + }); }); return $.on(ta, 'change', $.cb.value); }, diff --git a/builds/appchan-x.user.js b/builds/appchan-x.user.js index a1a4fe6d5..b07c5b821 100644 --- a/builds/appchan-x.user.js +++ b/builds/appchan-x.user.js @@ -2576,7 +2576,7 @@ "Timestamps": "rgb(100,100,100)", "Warnings": "rgb(215,0,0)", "Shadow Color": "rgba(0,0,0,.1)", - "Custom CSS": ".thread {\npadding: 2px;\nbox-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3) inset, rgba(70,70,70,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) inset, rgba(70,70,70,.3) 1px 1px;\n}\n#qr .selectrice {\nbox-shadow: none;\n}\n#header-bar {\npadding: 1px 3px;\n}\n.dialog {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2);\n}\n.replyContainer {\npadding-left: 20px;\n}\n.threadContainer {\nborder: none;\nbox-shadow: 0px 0px 3px rgba(0, 0, 0, .3) inset, rgba(70,70,70,.3) 1px 1px;\npadding: 2px 0;\nmargin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\ntransition:background .2s,box-shadow .2s;\n}" + "Custom CSS": ".thread {\npadding: 2px;\nbox-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3) inset, rgba(70,70,70,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) inset, rgba(70,70,70,.3) 1px 1px;\n}\n#qr .selectrice {\nbox-shadow: none;\n}\n#header-bar {\npadding: 1px 3px;\n}\n.dialog {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2);\n}\n.thread > .replyContainer\n.threadContainer > .replyContainer {\npadding-left: 20px;\n}\n.threadContainer {\nborder: none;\nbox-shadow: 0px 0px 3px rgba(0, 0, 0, .3) inset, rgba(70,70,70,.3) 1px 1px;\npadding: 2px 0;\nmargin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\ntransition:background .2s,box-shadow .2s;\n}" }, "Frost": { "Author": "Zixaphir", @@ -2627,7 +2627,7 @@ "Timestamps": "rgb(100,100,100)", "Warnings": "rgb(215,0,0)", "Shadow Color": "rgba(0,0,0,.1)", - "Custom CSS": ".thread {\n padding: 2px;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.8) 1px 1px;\n}\n#qr .selectrice {\n box-shadow: none;\n}\n#header-bar {\n padding: 1px 3px;\n}\n.dialog {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n.replyContainer {\n padding-left: 20px;\n}\n.threadContainer {\n border: none;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n padding: 2px 0;\n margin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" + "Custom CSS": ".thread {\n padding: 2px;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.8) 1px 1px;\n}\n#qr .selectrice {\n box-shadow: none;\n}\n#header-bar {\n padding: 1px 3px;\n}\n.dialog {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n.thread > .replyContainer\n.threadContainer > .replyContainer {\n padding-left: 20px;\n}\n.threadContainer {\n border: none;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n padding: 2px 0;\n margin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" } }; @@ -13118,15 +13118,19 @@ createSauceLink: function(link) { var m, text; - link = link.replace(/%(T?URL|MD5|board)/ig, function(parameter) { + link = link.replace(/(%(T?URL|MD5|board)|\$[1-4])/ig, function(parameter) { switch (parameter) { case '%TURL': + case '$1': return "' + encodeURIComponent(post.file.thumbURL) + '"; case '%URL': + case '$2': return "' + encodeURIComponent(post.file.URL) + '"; case '%MD5': + case '$3': return "' + encodeURIComponent(post.file.MD5) + '"; case '%board': + case '$4': return "' + encodeURIComponent(post.board) + '"; default: return parameter; @@ -13695,7 +13699,20 @@ section.innerHTML = "
Sauce is disabled.
Lines starting with a # will be ignored.
You can specify a display text by appending ;text:[text] to the URL.
"; ta = $('textarea', section); $.get('sauces', Conf['sauces'], function(item) { - return ta.value = item['sauces']; + return ta.value = item['sauces'].replace(/\$\d/g, function(c) { + switch (c) { + case '$1': + return '%TURL'; + case '$2': + return '%URL'; + case '$3': + return '%MD5'; + case '$4': + return '%board'; + default: + return c; + } + }); }); return $.on(ta, 'change', $.cb.value); }, diff --git a/builds/crx/script.js b/builds/crx/script.js index ce3dc0864..f96a63337 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -2556,7 +2556,7 @@ "Timestamps": "rgb(100,100,100)", "Warnings": "rgb(215,0,0)", "Shadow Color": "rgba(0,0,0,.1)", - "Custom CSS": ".thread {\npadding: 2px;\nbox-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3) inset, rgba(70,70,70,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) inset, rgba(70,70,70,.3) 1px 1px;\n}\n#qr .selectrice {\nbox-shadow: none;\n}\n#header-bar {\npadding: 1px 3px;\n}\n.dialog {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2);\n}\n.replyContainer {\npadding-left: 20px;\n}\n.threadContainer {\nborder: none;\nbox-shadow: 0px 0px 3px rgba(0, 0, 0, .3) inset, rgba(70,70,70,.3) 1px 1px;\npadding: 2px 0;\nmargin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\ntransition:background .2s,box-shadow .2s;\n}" + "Custom CSS": ".thread {\npadding: 2px;\nbox-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3) inset, rgba(70,70,70,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2) inset, rgba(70,70,70,.3) 1px 1px;\n}\n#qr .selectrice {\nbox-shadow: none;\n}\n#header-bar {\npadding: 1px 3px;\n}\n.dialog {\nbox-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2);\n}\n.thread > .replyContainer\n.threadContainer > .replyContainer {\npadding-left: 20px;\n}\n.threadContainer {\nborder: none;\nbox-shadow: 0px 0px 3px rgba(0, 0, 0, .3) inset, rgba(70,70,70,.3) 1px 1px;\npadding: 2px 0;\nmargin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\nbox-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\ntransition:background .2s,box-shadow .2s;\n}" }, "Frost": { "Author": "Zixaphir", @@ -2607,7 +2607,7 @@ "Timestamps": "rgb(100,100,100)", "Warnings": "rgb(215,0,0)", "Shadow Color": "rgba(0,0,0,.1)", - "Custom CSS": ".thread {\n padding: 2px;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.8) 1px 1px;\n}\n#qr .selectrice {\n box-shadow: none;\n}\n#header-bar {\n padding: 1px 3px;\n}\n.dialog {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n.replyContainer {\n padding-left: 20px;\n}\n.threadContainer {\n border: none;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n padding: 2px 0;\n margin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" + "Custom CSS": ".thread {\n padding: 2px;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n#header-bar,\ninput,\ntextarea,\n.field,\n.inline .op,\n.pagelist,\n.prettyprint,\n.post.reply,\n.rice,\n.selectrice {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.8) 1px 1px;\n}\n#qr .selectrice {\n box-shadow: none;\n}\n#header-bar {\n padding: 1px 3px;\n}\n.dialog {\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n}\n.thread > .replyContainer\n.threadContainer > .replyContainer {\n padding-left: 20px;\n}\n.threadContainer {\n border: none;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px;\n padding: 2px 0;\n margin-left: 20px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#appchanx-settings input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#appchanx-settings input:focus {\n box-shadow: inset rgba(0,0,0,.1) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" } }; @@ -13100,15 +13100,19 @@ createSauceLink: function(link) { var m, text; - link = link.replace(/%(T?URL|MD5|board)/ig, function(parameter) { + link = link.replace(/(%(T?URL|MD5|board)|\$[1-4])/ig, function(parameter) { switch (parameter) { case '%TURL': + case '$1': return "' + encodeURIComponent(post.file.thumbURL) + '"; case '%URL': + case '$2': return "' + encodeURIComponent(post.file.URL) + '"; case '%MD5': + case '$3': return "' + encodeURIComponent(post.file.MD5) + '"; case '%board': + case '$4': return "' + encodeURIComponent(post.board) + '"; default: return parameter; @@ -13679,7 +13683,20 @@ section.innerHTML = "
Sauce is disabled.
Lines starting with a # will be ignored.
You can specify a display text by appending ;text:[text] to the URL.
"; ta = $('textarea', section); $.get('sauces', Conf['sauces'], function(item) { - return ta.value = item['sauces']; + return ta.value = item['sauces'].replace(/\$\d/g, function(c) { + switch (c) { + case '$1': + return '%TURL'; + case '$2': + return '%URL'; + case '$3': + return '%MD5'; + case '$4': + return '%board'; + default: + return c; + } + }); }); return $.on(ta, 'change', $.cb.value); }, diff --git a/src/General/Globals.coffee b/src/General/Globals.coffee index 87f918a75..20ce5fc9d 100644 --- a/src/General/Globals.coffee +++ b/src/General/Globals.coffee @@ -2884,7 +2884,8 @@ textarea, .dialog { box-shadow: 0px 0px 4px rgba(0, 0, 0, .3) inset, 1px 1px 5px rgba(0,0,0,0.2); } -.replyContainer { +.thread > .replyContainer +.threadContainer > .replyContainer { padding-left: 20px; } .threadContainer { @@ -2993,7 +2994,8 @@ textarea, .dialog { box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.1) inset, rgba(255,255,255,.5) 1px 1px; } -.replyContainer { +.thread > .replyContainer +.threadContainer > .replyContainer { padding-left: 20px; } .threadContainer { diff --git a/src/General/Settings.coffee b/src/General/Settings.coffee index c94bf726d..194fd411f 100644 --- a/src/General/Settings.coffee +++ b/src/General/Settings.coffee @@ -331,7 +331,19 @@ Settings = """ ta = $ 'textarea', section $.get 'sauces', Conf['sauces'], (item) -> - ta.value = item['sauces'] + # XXX remove .replace func after 31-7-2013 (v1 transitioning) + ta.value = item['sauces'].replace /\$\d/g, (c) -> + switch c + when '$1' + '%TURL' + when '$2' + '%URL' + when '$3' + '%MD5' + when '$4' + '%board' + else + c $.on ta, 'change', $.cb.value advanced: (section) -> diff --git a/src/Miscellaneous/Sauce.coffee b/src/Miscellaneous/Sauce.coffee index ad3e30182..fe57249d9 100644 --- a/src/Miscellaneous/Sauce.coffee +++ b/src/Miscellaneous/Sauce.coffee @@ -13,16 +13,16 @@ Sauce = name: 'Sauce' cb: @node createSauceLink: (link) -> - link = link.replace /%(T?URL|MD5|board)/ig, (parameter) -> + # XXX Remove $1-4 after 31-7-2013 (v1 transitioning) + link = link.replace /(%(T?URL|MD5|board)|\$[1-4])/ig, (parameter) -> switch parameter - - when '%TURL' + when '%TURL', '$1' "' + encodeURIComponent(post.file.thumbURL) + '" - when '%URL' + when '%URL', '$2' "' + encodeURIComponent(post.file.URL) + '" - when '%MD5' + when '%MD5', '$3' "' + encodeURIComponent(post.file.MD5) + '" - when '%board' + when '%board', '$4' "' + encodeURIComponent(post.board) + '" else parameter