8000 Added output tag spoilers · cpluspluscom/EnhancedCpp.com@d7b4d7b · GitHub
[go: up one dir, main page]

Skip to content

Commit d7b4d7b

Browse files
committed
Added output tag spoilers
1 parent 66f613a commit d7b4d7b

File tree

3 files changed

+68
-37
lines changed

3 files changed

+68
-37
lines changed

js/enumerate.js

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,18 @@ do {
7171
for(var i = 0; i != AllQuotes.length; ++i)
7272
{
7373
IsEditablePage = 1;
74-
forEachItem(AllQuotes[i],0,CanReply);
74+
75+
var ItemType = (AllQuotes[i].getElementsByClassName('qh').length != 0)?2:1;
76+
forEachItem(AllQuotes[i],ItemType,CanReply); // quote -> 1, named quote -> 2
7577
}
7678

7779
var AllCodes = document.getElementsByClassName('snippet');
7880
for(var i = 0; i != AllCodes.length; ++i)
7981
{
8082
IsEditablePage = 1;
81-
forEachItem(AllCodes[i],1,CanReply);
83+
84+
var ItemType = (AllCodes[i].getElementsByClassName('output').length != 0)?3:0;
85+
forEachItem(AllCodes[i],ItemType,CanReply); // code -> 0, output -> 3
8286
}
8387

8488
} while(0);
@@ -100,27 +104,6 @@ if(IsEditablePage != 0)
100104
forminfo.target = 'previewing';
101105
forminfo.name = 'prevthread';
102106
AddHiddenForm(inputs,forminfo);
103-
/*
104-
var formpreview = document.createElement('form');
105-
var forminput_w = document.createElement('input');
106-
var forminput_content = document.createElement('input');
107-
108-
forminput_w.type = 'hidden';
109-
forminput_w.name = 'w';
110-
forminput_w.value = 'preview';
111-
112-
forminput_content.type = 'hidden';
113-
forminput_content.name = 'content';
114-
forminput_content.id = 'show_as_code_id';
115-
116-
formpreview.appendChild(forminput_w);
117-
formpreview.appendChild(forminput_content);
118-
formpreview.id = 'run_show_as_code_id';
119-
formpreview.action = '/forum/post.cgi';
120-
formpreview.target = 'previewing';
121-
formpreview.method = 'post';
122-
formpreview.name = 'prevthread';
123-
document.documentElement.appendChild(formpreview);*/
124107

125108
var js_common_code = 'function getpostinternal(x){var result="";var Network=new XMLHttpRequest();Network.onreadystatechange=function(){if(Network.readyState==4&&Network.status==200){result=Network.responseText;}else result="error";};Network.open("GET","http://www.cplusplus.com/forum/post.cgi\?w=text\&p="+x,false);Network.send();return result;}';
126109
var js_quote_code = 'for_Post.prototype.quote = function(){var result=getpostinternal(this.postid);if(result!="error"){var reply=document.getElementById("CH_reply").getElementsByTagName("a");if(reply[0].href.indexOf("javascript:thread")==0){eval(reply[0].href.substr(11)+";")}reply=document.getElementById("CH_reply").getElementsByTagName("textarea");var replier=this.el.innerHTML;var begin=replier.indexOf("<b>");var end=replier.indexOf("</b>");if(begin>0&&end>0)replier="="+replier.substring(begin+3,end);else replier="";reply[0].value="[quote";reply[0].value+=replier;reply[0].value+="]"+result+"[/quote]";}};';

js/options.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,39 @@ var AllowQuoteButton=1;
22
var AllowCodeButton=1;
33
var AllowQuoteSpoilers=1;
44
var AllowCodeSpoilers=1;
5+
var AllowOutputSpoilers=1;
6+
var DefOutputOpen=0;
57
var DefQuoteOpen=0;
68
var DefCodeOpen=1;
9+
var DefOutputSize="20px";
710
var DefQuoteSize="20px";
811
var DefQuoteExtSize="35px";
912
var DefCodeSize="20px";
1013

1114
function DefQuoteState(){return DefQuoteOpen?"shownicon":"hiddenicon";}
1215
function DefCodeState(){return DefCodeOpen?"shownicon":"hiddenicon";}
16+
function DefOutpState(){return DefOutputOpen?"shownicon":"hiddenicon";}
17+
1318
function DefQuoteHeight(){return DefQuoteOpen?"auto":DefQuoteSize;}
1419
function DefQuoteExtendedHeight(){return DefQuoteOpen?"auto":DefQuoteExtSize;}
1520
function DefCodeHeight(){return DefCodeOpen?"auto":DefCodeSize;}
21+
function DefOutpHeight(){return DefOutputOpen?"auto":DefOutputSize;}
22+
1623
function DefQuoteClass(){return DefQuoteOpen?"ofshow":"ofhide";}
1724
function DefCodeClass(){return DefCodeOpen?"ofshow":"ofhide";}
25+
function DefOutpClass(){return DefOutputOpen?"ofshow":"ofhide";}
1826

1927
function QuoteButtonAllowed(){return AllowQuoteButton;}
2028
function CodeButtonAllowed(){return AllowCodeButton;}
2129
function QuoteSpoilerAllowed(){return AllowQuoteSpoilers;}
2230
function CodeSpoilerAllowed(){return AllowCodeSpoilers;}
31+
function OutputSpoilerAllowed(){return AllowOutputSpoilers;}
32+
2333
function IsQuoteOpenDefault(){return DefQuoteOpen;}
2434
function IsCodeOpenDefault(){return DefCodeOpen;}
35+
function IsOutpOpenDefault(){return DefOutputOpen;}
36+
2537
function ShortQuoteHeight(){return DefQuoteSize;}
2638
function ShortQuoteExtendedHeight(){return DefQuoteExtSize;}
27-
function ShortCodeHeight(){return DefCodeSize;}
39+
function ShortCodeHeight(){return DefCodeSize;}
40+
function ShortOutpHeight(){return DefOutputSize;}

js/transform.js

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
// These could be edited in the Options page.
22
// When it gets built.
33

4-
function forEachItem(Item, IsCode, IsReplyable)
4+
// Type:
5+
// 0 -> Code
6+
// 1 -> Quote
7+
// 2 -> Named Quote
8+
// 3 -> Output
9+
function forEachItem(Item, Type, IsReplyable)
510
{
6-
if(IsCode && CodeSpoilerAllowed())
11+
if(Type==0 && CodeSpoilerAllowed())
712
{
813
var newdiv = document.createElement('div');
914
newdiv.style.height = DefCodeHeight();
@@ -12,9 +17,7 @@ function forEachItem(Item, IsCode, IsReplyable)
1217
var newspan = document.createElement('span');
1318
newspan.className = 'C_ico '+DefCodeState();
1419
newa.appendChild(newspan);
15-
// Use a different var to be consistent with how the Quote spoiler works
16-
var targetShortSize = ShortCodeHeight();
17-
newa.onclick = function(){ToggleDisplay(this.parentNode,newspan,targetShortSize);return false;}
20+
newa.onclick = function(){ToggleDisplay(this.parentNode,newspan,ShortCodeHeight());return false;}
1821
newdiv.appendChild(newa);
1922

2023
//codeonly
@@ -27,25 +30,57 @@ function forEachItem(Item, IsCode, IsReplyable)
2730
newdiv.appendChild(Item.cloneNode(true));
2831
Item.parentNode.replaceChild(newdiv,Item);
2932
}
30-
if(!IsCode && QuoteSpoilerAllowed())
33+
if(Type==1 && QuoteSpoilerAllowed())
3134
{
3235
var newdiv = document.createElement('div');
33-
newdiv.style.height = (Item.getElementsByClassName('qh').length != 0) ?
34-
DefQuoteExtendedHeight() :
35-
DefQuoteHeight();
36+
newdiv.style.height = DefQuoteHeight();
37+
//Item.getElementsByClassName('qh').length != 0
3638
newdiv.className = DefQuoteClass();
3739
var newa = document.createElement('a');
3840
var newspan = document.createElement('span');
3941
newspan.className = 'C_ico '+DefQuoteState();
4042
newa.appendChild(newspan);
41-
var targetShortSize = (Item.getElementsByClassName('qh').length != 0) ?
42-
ShortQuoteExtendedHeight() :
43-
ShortQuoteHeight();
44-
newa.onclick = function(){ToggleDisplay(this.parentNode,newspan,targetShortSize);return false;}
43+
newa.onclick = function(){ToggleDisplay(this.parentNode,newspan,ShortQuoteHeight());return false;}
4544
newdiv.appendChild(newa);
4645
newdiv.appendChild(Item.cloneNode(true));
4746
Item.parentNode.replaceChild(newdiv,Item);
4847
}
48+
if(Type==2 && QuoteSpoilerAllowed())
49+
{
50+
var newdiv = document.createElement('div');
51+
newdiv.style.height = DefQuoteExtendedHeight();
52+
newdiv.className = DefQuoteClass();
53+
var newa = document.createElement('a');
54+
var newspan = document.createElement('span');
55+
newspan.className = 'C_ico '+DefQuoteState();
56+
newa.appendChild(newspan);
57+
newa.onclick = function(){ToggleDisplay(this.parentNode,newspan,ShortQuoteExtendedHeight());return false;}
58+
newdiv.appendChild(newa);
59+
newdiv.appendChild(Item.cloneNode(true));
60+
Item.parentNode.replaceChild(newdiv,Item);
61+
}
62+
if(Type==3 && OutputSpoilerAllowed())
63+
{
64+
var newdiv = document.createElement('div');
65+
newdiv.style.height = DefOutpHeight();
66+
newdiv.className = DefOutpClass();
67+
var newa = document.createElement('a');
68+
var newspan = document.createElement('span');
69+
newspan.className = 'C_ico '+DefOutpState();
70+
newa.appendChild(newspan);
71+
newa.onclick = function(){ToggleDisplay(this.parentNode,newspan,ShortOutpHeight());return false;}
72+
newdiv.appendChild(newa);
73+
74+
//Outponly
75+
var Outpspan = document.createElement('span');
76+
Outpspan.className='codeSpan';
77+
Outpspan.innerHTML='Output';
78+
newdiv.appendChild(Outpspan);
79+
//endOutponly
80+
81+
newdiv.appendChild(Item.cloneNode(true));
82+
Item.parentNode.replaceChild(newdiv,Item);
83+
}
4984
}
5085
function forEachPost_Buttons(ButtonStorage, PostID, IsReplyable)
5186
{

0 commit comments

Comments
 (0)
0