/app/helpers/widgets_helper.rb
Ruby | 112 lines | 91 code | 17 blank | 4 comment | 9 complexity | f6d451f47421c018c21cf06c000d6d6c MD5 | raw file
- module WidgetsHelper
-
- def widget_category_selector(w,g=nil)
- return if(w.nil?);
-
- q,cats=
- if(g.nil?) then
- ['',w.public_categories.split('|')]
- else
- [(w.url.index('?').nil? ? '?' : '&')+'group='+g.lookup_key,g.categories.split('|')]
- end
- t_rand=w.url.gsub('::cat::',cats.sample)+q
-
-
- o='<option value="-0-">CHOOSE A CATEGORY</option>'
- cats.each do |cat|
- o+=%{<option value="#{cat}">#{cat}</option>}
- end
- %{
- <select onchange="if(this.value!='-0-'){window.location=#{w.url.to_json.gsub('"',"'")}.replace('::cat::',this.value)+'#{q}';}">
- #{o}
- </select>
-
-
- <table >
- <tr>
- <td valign="top" >or</td>
- <td style="font-size:smaller">
- <a href="#{w.list_url}">Visit #{w.type.index('Pdf').nil? ? "widget's" : "the"} index page</a><br/>
- <a href="#{t_rand}">Go to random category</a><br/>
- <a href="#{w.class.list_all_page}#top_activities">See all #{w.type.index('Pdf').nil? ? "activities" : "worksheets"}</a><br/>
- </td>
- </tr>
- </table>
-
- }.html_safe
- end
-
- #Create a list page to make search engine landing page
- def widget_list_page(w,all=false)
- return if (w.nil?)
- cats=
- if(all) then
- #TODO: Do all condition
- else
- w.public_categories.split('|')
- end
-
- s=w.description.split("\n")
- d1=s[0]
- d2=s[1,999].map{|t| t.blank? ? nil : t}.compact.join("<br/>")
-
- str='<p>'+d1+'<br/>'
- str+='<div style="float:right;padding:8px;text-align:center"><img src="http://static.123teachme.com'+w.screenshot+'" alt="'+w.name+'"/>'
- str+=%Q{<br /><br />Want more games? Visit our <a href="/learn_spanish/fun_and_games">Spanish games</a> page</div>}
- str+=d2 if(!d2.blank?)
- str+="</p>"
- str+="<ul>"+(cats.sort.map do |cat|
- '<li><a href="'+w.url.gsub('::cat::',cat)+'">'+cat.capitalize+'</a></li>'
- end.join)+"</ul><br/>"
- str.html_safe
- end
-
- #Show code to load widget in an iframe
- def widget_show_iframe_code(w,cat=nil)
- return if (w.nil? || w.iframe_code.nil?)
- s=cat.nil? ? w.iframe_code : w.iframe_code.gsub("::cat::",h(cat.gsub(/[^a-zA-Z0-9_]/,'_'))) #do minimal sanitizing
- zid=rand(999).to_s
- %Q{
-
- <center>
- <table class="show-iframe-code" ><tr>
- <td class="iframe-embed-label" >Embedding Code:<a href="#" onclick="z_about();return false;">(?)</a></td>
- <td class="iframe-embed-code"><input value='#{s}'></td>
- <td class="iframe-embed-button"><div id="zOuter_#{zid}" ><input type="button" id="zInner_#{zid}" value="Copy to Clipboard" onclick="alert('please wait for page to load more')"/></div></td>
- </tr></table>
- </center>
- <script>
- if (!zLoaded) {
- var zLoaded=true;
- var zClients=[];
- document.write(
- '<'+'link href="/stylesheets/iframe.css" media="all" rel="Stylesheet" type="text/css" />'
- );
- document.write('<scr'+'ipt type="text/javascript" src="/javascripts/ZeroClipboard.js"></scr'+'ipt>');
- function z_complete( client, text ) {
- alert("Copied text to clipboard: " + text );
- }
- function z_about() {
- alert('If you have a blog or a webpage, this is the code to insert so as to display this widget on your own site');
- }
- $(function(){
- ZeroClipboard.setMoviePath( '/javascripts/ZeroClipboard.swf' );
- });
- }
- $(function(){
- var zClient=new ZeroClipboard.Client();
- zClient.setText(#{s.to_json});
- zClient.setHandCursor( true );
- zClient.addEventListener( 'onComplete', z_complete );
- zClient.glue( 'zInner_#{zid}', 'zOuter_#{zid}' );
- zClients.push(zClient);
- });
- </script>
- }.html_safe
- end
- end