2014-04-01 07:10:21 +00:00
module PagesHelper
def parse_pp_tags ( file )
opened_file = File . open ( file )
2014-04-01 08:37:43 +00:00
doc = Nokogiri :: HTML ( opened_file , nil , " UTF-8 " )
2014-04-01 07:10:21 +00:00
opened_file . close
pps = doc . css ( " *[data-pp] " )
pps . each do | pp |
pp . content = " <p class='add-ps'></p> "
end
doc . to_html
end
def render_widget_for_frontend ( controller_name , widget_method , widget_file )
2014-05-22 11:19:25 +00:00
def parsing_repeats_again ( elements , d , level )
newhtml = [ ]
oldhtml = [ ]
elements . each do | el |
html_to_render = " "
data_name = el . attr ( " data-list " )
wrap_elements = el . css ( " *[data-list][data-level=' #{ level } '] " )
if d [ " #{ data_name } " ]
d [ " #{ data_name } " ] . each_with_index do | item , i |
element = el . inner_html
if wrap_elements . count > 0
htmls = parsing_repeats_again ( wrap_elements , d [ " #{ data_name } " ] [ i ] , level + 1 )
htmls [ 0 ] . each_with_index do | html , i |
element = element . gsub ( html , htmls [ 1 ] [ i ] )
end
end
item . each do | key , value |
if ! value . kind_of? ( Array )
value = value . nil? ? " " : value
2014-06-04 07:25:04 +00:00
element = element . gsub ( " {{ #{ key } }} " , value . to_s . html_safe )
2014-05-22 11:19:25 +00:00
element = element . gsub ( " %7B%7B #{ key } %7D%7D " , value . to_s )
end
end
html_to_render = html_to_render + element
end
temp = el . to_s
oldhtml << temp
temp = temp . gsub ( el . inner_html , html_to_render )
newhtml << temp
end
end
[ oldhtml , newhtml ]
end
2014-04-15 04:49:38 +00:00
controller_name = controller_name . downcase . singularize
2014-06-09 10:58:44 +00:00
f = File . join ( Rails . root , 'app' , 'templates' , " #{ @key } " , 'modules' , " #{ controller_name } " , " _ #{ widget_file } .html.erb " ) ;
2014-06-06 08:30:56 +00:00
if ! File . exists? f
2014-06-26 11:14:46 +00:00
f = File . join ( Rails . root , 'app' , 'templates' , " #{ @key } " , 'widgets' , " #{ controller_name } " , " _ #{ widget_file } .html.erb " ) ;
if ! File . exists? f
f = File . join ( '../templates' , " #{ @key } " , 'modules' , " #{ controller_name } " , " _widget.html.erb " ) ;
else
f = File . join ( '../templates' , " #{ @key } " , 'widgets' , " #{ controller_name } " , " _ #{ widget_file } .html.erb " ) ;
end
2014-06-09 10:58:44 +00:00
else
f = File . join ( '../templates' , " #{ @key } " , 'modules' , " #{ controller_name } " , " _ #{ widget_file } .html.erb " ) ;
2014-06-06 08:30:56 +00:00
end
2014-04-15 04:49:38 +00:00
s = render_to_string ( f )
doc = Nokogiri :: HTML ( s , nil , " UTF-8 " )
2014-04-01 07:10:21 +00:00
wrap_elements = doc . css ( " *[data-repeat] " )
2014-04-15 04:49:38 +00:00
controller = " #{ controller_name . capitalize . pluralize } _controller " . classify . constantize . new
OrbitHelper . set_current_widget_module controller_name
2014-07-16 07:23:27 +00:00
data = controller . send ( " #{ widget_method } " ) rescue nil
2014-07-16 07:12:41 +00:00
if ! data . nil?
wrap_elements = doc . css ( " *[data-list][data-level='0'] " )
htmls = parsing_repeats_again ( wrap_elements , data , 1 )
html = doc . to_s
htmls [ 0 ] . each_with_index do | h , i |
html = html . gsub ( h , htmls [ 1 ] [ i ] )
end
extras = data [ 'extras' ] || { }
extras [ " widget-title " ] = OrbitHelper . widget_title
extras . each do | key , value |
html = html . gsub ( " {{ #{ key } }} " , value . to_s . html_safe )
html = html . gsub ( " %7B%7B #{ key } %7D%7D " , value . to_s )
end
html . html_safe
else
2014-07-16 07:25:02 +00:00
return " <div>It seems we have a problem with the module at this point of time, we will try to fix it as soon as possible, Sorry for the inconvenience!! :( </div> " . html_safe
2014-04-02 06:07:04 +00:00
end
2014-04-01 07:10:21 +00:00
end
end
2014-04-02 06:07:04 +00:00