]> git.openstreetmap.org Git - osqa.git/commitdiff
OSQA-465, be able to embed YouTube videos. Adding a new setting to the View Settings...
authorjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Sun, 3 Jul 2011 00:50:16 +0000 (00:50 +0000)
committerjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Sun, 3 Jul 2011 00:50:16 +0000 (00:50 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1098 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/settings/view.py
forum/skins/default/media/js/viewbox.css [new file with mode: 0644]
forum/skins/default/media/js/viewbox_min.js [new file with mode: 0644]
forum/skins/default/media/js/youtube.js [new file with mode: 0644]
forum/skins/default/templates/question.html
forum/views/readers.py

index 5ebd228f584e56c5691a00d86e60553a147b4776..14b3aad131898dfcf7b4ba7b9285264d85fdbbdc 100644 (file)
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
 """ view settings """
 VIEW_SET = SettingSet('view', _('View settings'), _("Set up how certain parts of the site are displayed."), 20)
 
+EMBED_YOUTUBE_VIDEOS = Setting('EMBED_YOUTUBE_VIDEOS', True, VIEW_SET, dict(
+label = _("Embed YouTube Videos"),
+help_text = _("If you check this YouTube videos will be embedded"),
+required=False))
+
 SUMMARY_LENGTH = Setting('SUMMARY_LENGTH', 300, VIEW_SET, dict(
 label = _("Summary Length"),
 help_text = _("The number of characters that are going to be displayed in order to get the content summary.")))
diff --git a/forum/skins/default/media/js/viewbox.css b/forum/skins/default/media/js/viewbox.css
new file mode 100644 (file)
index 0000000..dd39a14
--- /dev/null
@@ -0,0 +1,137 @@
+/* Miniatury */\r
+.thumbdiv {\r
+       float:left; \r
+       position:relative;\r
+}\r
+.thumbdiv .title {\r
+       position:absolute;\r
+       padding:2px;\r
+       font-size:1.0em;\r
+       color:#fff;\r
+       background:#000;\r
+       border-top:solid 1px #000;\r
+       opacity:0.8;\r
+       bottom:14px;\r
+       left:8px;\r
+       right:9px;\r
+}\r
+/* VIEWBOX */\r
+#viewbox {\r
+       position:fixed;\r
+       height:100%;\r
+       width:100%;   \r
+       top:0;\r
+       left:0;\r
+       background:#383739;\r
+       z-index:2190; \r
+       overflow:auto;\r
+} \r
+.vb_wrap {\r
+       position:absolute; \r
+       padding:10px;\r
+       height:20px;\r
+       width:20px; \r
+       background-image:url(img/ViewBox_bg.png);\r
+       background-color:#0f0e0e;\r
+       overflow:visible; \r
+       z-index:2200;\r
+       margin:0 auto;\r
+       top:0; \r
+       left:0;\r
+       border-radius:10px;\r
+       box-shadow: 4px 4px 7px #000;\r
+} \r
+.vb_wrap .content {\r
+       position:relative;\r
+       overflow:visible;\r
+}\r
+.vb_wrap .number {\r
+       position:absolute;\r
+       top:-32px;\r
+       left:1px;\r
+       font-size:0.9em;\r
+       color:#0c0c0c;\r
+} \r
+.vb_wrap .close {\r
+       position:absolute; \r
+       top:-40px;\r
+       right:-7px;\r
+       background:url(img/viewbox_close.png) top left no-repeat;\r
+       height:30px;\r
+       width:30px;\r
+}\r
+* html .vb_wrap .close {\r
+       top:-26px;\r
+       right:7px;\r
+}\r
+.vb_wrap .next {\r
+       position:absolute;   \r
+       right:-60px;\r
+       background:url(img/ViewBox_next.png) top left no-repeat;\r
+       height:50px;\r
+       width:50px;\r
+       z-index:2190;\r
+}\r
+.vb_wrap .prev {\r
+       position:absolute;   \r
+       left:-59px;\r
+       background:url(img/ViewBox_prev.png) top right no-repeat;\r
+       height:50px;\r
+       width:50px;\r
+       z-index:2190;\r
+}\r
+.vb_wrap .close a, .next a, .prev a {\r
+       display:block;\r
+       height:100%;\r
+       width:100%;\r
+       text-indent:-777em;\r
+       outline:none;\r
+}\r
+.vb_wrap h1 {\r
+       margin:5px 0px 8px;\r
+       padding-bottom:3px;\r
+       letter-spacing:1.3px; \r
+       font-family:Arial, Helvetica, sans-serif;\r
+       font-size:0.9em;\r
+       color:#cdcdcd;\r
+       border-bottom:solid 1px #7e7e7e;\r
+       \r
+}\r
+.vb_wrap p { \r
+       font-family:Arial, Helvetica, sans-serif;\r
+       font-size:0.8em;\r
+       text-align:justify;\r
+       color:#e5e5e5;\r
+}\r
+.vb_wrap .text {\r
+       position:absolute;\r
+       background: url(img/ViewBox_bg.png) top left repeat;\r
+       border-top:solid 1px #121212;\r
+       bottom:0; left:0;\r
+       padding:5px;\r
+       width:99%; \r
+       z-index:2110;\r
+}\r
+* html .vb_wrap .text {\r
+       background-image:none;\r
+       background-color:#0f0e0e;\r
+}\r
+.vb_wrap .image {\r
+       z-index:2220;\r
+}\r
+.vb_wrap .text h1 {\r
+       margin:2px; \r
+       padding:1px;\r
+       color:#919191;\r
+       z-index:2230;\r
+}\r
+.vb_wrap .text .description {\r
+       position:relative;\r
+       bottom:0px; \r
+       left:0px;\r
+       padding:2px 2px;\r
+       font-family:Arial, Helvetica, sans-serif;\r
+       font-size:0.8em;\r
+       z-index:2260;\r
+       color:#949494; \r
+}\r
diff --git a/forum/skins/default/media/js/viewbox_min.js b/forum/skins/default/media/js/viewbox_min.js
new file mode 100644 (file)
index 0000000..4916f87
--- /dev/null
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(k($){$.3y.Y=k(g){g=$.4l({G:4j,w:4h,C:4f,r:[],o:0,4d:1,2K:1,32:1,2j:0,2m:0,1W:"#4c",2t:5,2C:1,1T:0,1R:0,2J:0,1N:0,2Q:1,2W:1,2X:1,2Y:"c",34:"p",2b:"n",2k:1},g);B h=$(J);B j;k 2v(){2y(J,h);u 1g}k 2y(a,b){g.r.R=0;g.o=0;m(b.R==1){g.r.2M(1s 1E(a.19("V"),a.19("T"),$(a).13("14").1h("2e")))}M{45(B i=0;i<b.R;i++){g.r.2M(1s 1E(b[i].19("V"),b[i].19("T"),$(b[i]).13("14").1h("2e")))}}44(g.r[g.o][0]!=a.19("V")){g.o++}2r()}k 2r(){$("43").z("<q 2w=\'Y\'></q><q A=\'8\'><q A=\'l\'><q A=\'1V\'><a V=\'#\'>1V</a></q><q A=\'Z\'><a V=\'#\'> 1m</a></q><q A=\'12\'><a V=\'#\'>3Y</a></q></q>");$("#Y, .8, .8 .l, .8 .l .Z, .8 .l .12").O();m(g.2W){1l()}$(".8 .12").1x().1Q("1c",k(){1S();u 1g});$(".8 .Z").1x().1Q("1c",k(){1m();u 1g});36();$("#Y").Q("3U",0.7).17(g.G/1.6,k(){y=1w();m($(P).1r()==0){m(g.w>y[0]*1.3){j=y[0]/9}M{j=y[0]/2.2}}M{j=$(P).1r()+y[0]/2.3}$(".8").Q({U:j+(g.w/2),1k:y[1]});$(".8").17(g.G/1.2,k(){$(J).1J({s:g.w,t:g.C,U:j,1k:y[1]-g.C/2},g.G/1.2,k(){1u();$(".8 .l").11(3P).17(g.G/1.5)})})});$("#Y, .8 .l .1V a").1c(k(){20();u 1g})}k 1u(){m(1F(g.r[g.o][0])){2S(g.r[g.o][0])}m(1G(g.r[g.o][0])){1H(g.r[g.o][0])}m(1I(g.r[g.o][0])){2Z(g.r[g.o][0])}m(1K(g.r[g.o][0])){33(g.r[g.o][0])}m(1L(g.r[g.o][0])){35(g.r[g.o][0])}m(1M(g.r[g.o][0])){38(g.r[g.o][0])}m(3a(g.r[g.o][0])){3b(g.r[g.o][0])}m(3c(g.r[g.o][0])){3d(g.r[g.o][0])}}k 1F(a){u(a.H("3O",".")>0||a.H("3N",".")>0||a.H("3L",".")>0)&&a.H("2c",".")<0}k 1G(a){u a.H("2d",".")>0}k 1I(a){u a.H("1i",".")>0}k 1K(a){u a.H("2c",".")>0||a.H("3H",".")>0||a.H("3F",".")>0}k 1L(a){u a.H("3B","/")>0&&a.H("3A",".")>0}k 1M(a){u g.2j!=0||a.H("1X",".")>0}k 3a(a){u g.2m!=0||a.H("#")>=0}k 3c(a){u g.1T!=0||a.H("3z",".")>0||a.H("4m",".")>0}k 2S(b){$(".8 .l").z("<q A=\'S\'><14  /></q>");$(".8 .S").O();m(g.32){$(".8").z("<q A=\'2n\'></q>")}B c=1s 2o();c.2p=k(){$(".8 .S 14").1h("W",c.W);y=1w();B a,X;m(y[0]*1.4>c.s||y[1]*1.4>c.t){g.w=a=c.s;g.C=X=c.t}M{m(!g.2K){B d=c.t-(y[1]*1.6)-1t;g.w=a=(c.s-d);g.C=X=(c.t-d)}M{m(c.s<c.t){B d=c.t-(y[1]*1.6)-1t;m(c.s>y[0]){B d=c.s-(y[0]*1.6)-1t;g.w=a=(c.s-d);g.C=X=(c.t/(c.s/(c.s-d)))}M{g.w=a=(c.s/(c.t/(c.t-d)));g.C=X=(c.t-d)}}m(c.s>c.t){B d=c.s-(y[0]*1.6)-1t;g.w=a=(c.s-d);g.C=X=(c.t/(c.s/(c.s-d)))}}}2u(a,X);$(".8 .2n").18();c.2p=k(){}};c.W=b;B e=g.r[g.o][2];B f=g.r[g.o][1];2x(f,e)}k 2x(a,b){m(a){$(".8 .l .S").z("<q A=\'16\'><2z>"+a+"</2z></q>");$(".8 .l .16").O();$(".8").2A(k(){$(".8 .l .16").1v(I,I).11(1e).2E(1e)},k(){$(".8 .l .16").1v(I,I).11(1e).2F(3x)})}m(b){$(".8 .l .16").z("<q A=\'3w\'>"+b+"</q>")}u 1g}k 1H(a){$(".8 .l").z("<q A=\'E\'></q>");1O="1P://3v.2d.1d/v/"+a.2O(31,42)+"&3n=1&3m=1&3l=3k&3j=0";$(".8 .E").z("<E t=\'"+g.C+"\' s=\'"+g.w+"\'><F K=\'1z\' L=\'"+1O+"\'></F><F K=\'3i\' L=\'I\'></F><F K=\'1A\' L=\'1B\'></F><15 W=\'"+1O+"\' 1C=\'22/x-23-24\' 1A=\'1B\' 1b=\'I\' t=\'"+g.C+"\' s=\'"+g.w+"\'></15></E>")}k 2Z(a){$(".8 .l").z("<q A=\'E\'></q>");26=a.2O(21,29);$(".8 .E").z("<E t=\'"+g.C+"\' s=\'"+g.w+"\'><F K=\'1b\' L=\'I\' /><F K=\'1A\' L=\'1B\' /><F K=\'1z\' L=\'1P://1i.1d/3g.1a?3f="+26+"&D;30=1i.1d&D;2V=1&D;2U=1&D;2T=0&D;1y=&D;2R=1\' /><15 W=\'1P://1i.1d/3g.1a?3f="+26+"&D;30=1i.1d&D;2V=1&D;2U=1&D;2T=0&D;1y=&D;2R=1\' 1C=\'22/x-23-24\' 1b=\'I\' 1A=\'1B\' t=\'"+g.C+"\' s=\'"+g.w+"\'></15></E>")}k 33(a){$(".8 .l").z("<q A=\'E\'></q>");$(\'.8 .E\').z("<E 2w=\'N\' 3o=\'3p:3q-3r-3s-3t-3u\' K=\'N\' t=\'"+g.C+"\' s=\'"+g.w+"\'> <F K=\'1z\' L=\'N/N.1a\' /><F K=\'1b\' L=\'I\' /> <F K=\'2P\' L=\'2N="+a+"&D;2L=N/2H.2G\' /> <E 1C=\'22/x-23-24\' 2l=\'N/N.1a\' t=\'"+g.C+"\' s=\'"+g.w+"\'> <F K=\'1z\' L=\'N/N.1a\' /> <F K=\'1b\' L=\'I\' /> <F K=\'2P\' L=\'2N="+a+"&D;2L=N/2H.2G\' /></E>")}k 35(a){$(".8 .l").z("<1q t="+g.C+" s="+g.w+" 2i=\'0\' 2h=\'3C\' 3D=\'0\' 3E=\'0\' W=\'"+a+"&D;2g=15\'></1q><3G /><2f><a V=\'"+a+"&D;2g=15\' 3I=\'1y:#3J;16-3K:1k\' ></2f>")}k 38(a){$(".8 .l").z("<q A=\'l\'></q>");$(".8 .l .l").Q("1U",g.1W).O();$(".8 .l .l").z("<1q 3M=\'0\' W=\'"+a+"\' 2h=\'2a\' 2i=\'0\' s=\'"+g.w+"\' t=\'"+g.C+"\' ></1q>")}k 1l(){m(g.o!=0){$(".8 .12").Q("U",g.w/2).3h()}M{$(".8 .12").O()}m(g.o!=g.r.R-1){$(".8 .Z").Q("U",g.w/2).3h()}M{$(".8 .Z").O()}1o()}k 3b(a){25();$(".8 .l .l").z($(a).1X())}k 3d(b){25();$.1T({1C:(!g.1R)?"3Q":g.1R,3R:b,2l:g.2J,3S:(!g.1N)?(k(a){$("8 .l .l").1X(a)}):g.1N})}k 25(){$(".8").Q("1U-1y","3T");$(".8 .l .28").O();B a=(g.2C)?"2a":"3V";$(".8 .l").z("<q A=\'l\'></q>");$(".8 .l .l").Q({1U:g.1W,3W:g.2t,3X:a});$(".8 .l .l").s(g.w-10)}k 36(){m(g.2X){$(P.1n).1x().1Q("3Z",k(a){m($.40.41){1Y=a.1j}M{1Y=a.1j}1p=46.47(1Y).48();m(a.1j==37||1p==g.34){1S()}m(a.1j==39||1p==g.2b){1m()}m(a.1j==27||1p==g.2Y){20()}})}}k 1S(){m(g.o!=0){$(".8 .l").1f(g.G/1.4,k(){$(".8 .l .S, .l .E").18();g.o=g.o-1;1o();1u();$(J).17(g.G/1.2);1l()})}}k 1m(){m(g.o!=g.r.R-1){$(".8 .l").1f(g.G/1.4,k(){$(".8 .l .S, .8 .l .E").18();g.o=g.o+1;1o();1u();$(J).17(g.G/1.2);1l()})}}k 1o(){m(g.2k){$(".8 .l .28").18();m(g.r.R!=0){k 3e(){m(1F(g.r[g.o][0])){u"2o "}m(1G(g.r[g.o][0])||1I(g.r[g.o][0])){u"1H "}m(1K(g.r[g.o][0])){u"49 "}m(1L(g.r[g.o][0])){u"4a "}m(1M(g.r[g.o][0])){u"4b "}}$(".8 .l").z("<q A=\'28\'>"+3e()+(g.o+1)+" / "+g.r.R+"</q>")}}}k 2u(a,b,c){B d=$(".8").s();B e=$(".8").t();$(".8").1J({1k:P.1n.2s/2-b/2,U:2D(a,b),t:b,s:a},g.G/1.5);$(".8 14").1h({s:a,t:b});$(".8 .S").O().11(g.G/1.1).17(4e);$(".8 .Z, .8 .12").Q("U",a/2)}k 2D(a,b){m(a+y[0]/2.3>y[0]*2){u $(P).1r()+(y[0]/9)}M{u $(P).1r()+(y[0]/2)}}k 20(){B a=1w();g.r.R=0;g.o=0;$(".8 .l").1f(g.G/1.6,k(){$(".8").1J({1k:a[1],U:a[0]/2+j,s:2B,t:2B},g.G/1.3,k(){$(J).1f(g.G/1.2,k(){$(J).18();$("#Y").1f(g.G/1.5,k(){$("#Y").18()})})})})}k 1w(){B a=1s 1E;a[0]=P.1n.4g/2;a[1]=P.1n.2s/2;u a}m(g.2Q){2I.4i(h,k(){B a=$(J).1h("T");m(a!=""){$(J).13("14").1Z("a").4k("<q A=\'1D\'></q>");$(J).1Z(".1D").z("<q A=\'T\'>"+a+"</q>");$(J).1Z(".1D").13(".T").O()}});$(".1D").2A(k(){$(J).13(".T").1v(I,I).11(2q).2E(1e)},k(){$(J).13(".T").1v(I,I).11(2q).2F(1e)})}u J.1x(\'1c\').1c(2v)}})(2I);',62,271,'||||||||vb_wrap||||||||||||function|content|if||arrayActEl||div|arrayEl|height|width|return||heightWindow||arraySizeBrowser|append|class|var|widthWindow|amp|object|param|Speed|indexOf|true|this|name|value|else|player|hide|document|css|length|image|title|top|href|src|Width|viewbox|next||delay|prev|children|img|embed|text|fadeIn|remove|getAttribute|swf|allowfullscreen|click|com|200|fadeOut|false|attr|vimeo|keyCode|left|NextAndPrev|Next|documentElement|NumberElement|KeyCode|iframe|scrollTop|new|65|setElement|stop|sizeBrowser|unbind|color|movie|allowscriptaccess|always|type|thumbdiv|Array|nImg|nYT|Film|nV|animate|nPlayer|nMaps|nFrame|ajaxSuccess|hrefY|http|bind|ajaxType|Prev|ajax|background|close|inlineBg|html|codeAscii|parent|closeWindow||application|shockwave|flash|ChangeStyle|hrefV||number||auto|keyNext|mp3|youtube|alt|small|output|scrolling|frameborder|frame|numberEl|data|inline|preloader|Image|onload|150|createView|clientWidth|inlinePadding|resizeWindow|_clickEl|id|Description|_viewbox|h1|hover|50|inlineScroll|topToresize|slideDown|slideUp|zip|modieus|jQuery|ajaxData|visibleIMG|skin|push|file|substring|flashvars|titleThumb|fullscreen|Img|show_portrait|show_byline|show_title|navigation|keyboard|keyClose|Vimeo|server||preloaderIMG|Player|keyPrev|GoogleMaps|keyboardNav||FrameObj||nInline|Inline|nAjax|Ajax|Words|clip_id|moogaloop|show|allowFullScreen|showsearch|related|feature|loop|autoplay|classid|clsid|D27CDB6E|AE6D|11cf|96B8|444553540000|www|description|180|fn|txt|google|map|no|marginheight|marginwidth|avi|br|vmw|style|0000FF|align|gif|hspace|png|jpg|290|GET|url|success|transparent|opacity|hidden|padding|overflow|Previous|keyup|browser|msie||body|while|for|String|fromCharCode|toLowerCase|Item|Map|Page|fff|IMG|300|650|clientHeight|450|each|400|wrap|extend|js'.split('|'),0,{}))
\ No newline at end of file
diff --git a/forum/skins/default/media/js/youtube.js b/forum/skins/default/media/js/youtube.js
new file mode 100644 (file)
index 0000000..989b553
--- /dev/null
@@ -0,0 +1,6 @@
+$().ready(function(){
+    // Embed YouTube videos
+    $('a[href*="youtube.com"]').viewbox({
+        widthWindow: 900
+    });
+});
\ No newline at end of file
index 9eff07c435daf41104fdc3d2d80ec49711381960..4583518159f6053731476b76cb64a5ce4984408a 100644 (file)
         <script type='text/javascript' src='{% media  "/media/js/wmd/showdown.js" %}'></script>\r
         <script type='text/javascript' src='{% media  "/media/js/wmd/wmd.js" %}'></script>\r
         <link rel="stylesheet" type="text/css" href="{% media  "/media/js/wmd/wmd.css" %}" />\r
+\r
+        {% if embed_youtube_videos %}\r
+        <script type='text/javascript' src='{% media  "/media/js/viewbox_min.js" %}'></script>\r
+        <script type='text/javascript' src='{% media  "/media/js/youtube.js" %}'></script>\r
+        <link rel="stylesheet" type="text/css" href="{% media  "/media/js/viewbox.css" %}" />\r
+        {% endif %}\r
         {% endif %}\r
 \r
         <script type="text/javascript">\r
index dcfbba595e403c85d63029eb18c652a7b7b9cd79..0f05d2fd291d8ac1eb8447992fab82e9a27ad301 100644 (file)
@@ -366,6 +366,7 @@ def question(request, id, slug='', answer=None):
     "answers" : answers,
     "similar_questions" : question.get_related_questions(),
     "subscription": subscription,
+    "embed_youtube_videos" : settings.EMBED_YOUTUBE_VIDEOS,
     })