Skip to content

Commit

Permalink
Blog module overhaul
Browse files Browse the repository at this point in the history
  • Loading branch information
cykod committed May 4, 2010
1 parent 9514034 commit fea23e6
Show file tree
Hide file tree
Showing 24 changed files with 397 additions and 266 deletions.
9 changes: 6 additions & 3 deletions vendor/modules/blog/app/controllers/blog/edit_controller.rb
Expand Up @@ -7,13 +7,16 @@ class Blog::EditController < ParagraphController
editor_header 'Blog Paragraphs'

editor_for :list, :name => "User Blog List", :feature => :blog_edit_list,
:inputs => [ [ :container, 'Blog Target', :target] ]
:inputs => { :input => [ [ :container, 'Blog Target', :target] ],
:target_url => [ [:target_url, "Target URL", :path ] ] }

editor_for :write, :name => "User Blog Write Post", :feature => :blog_edit_write,
:inputs => { :target => [ [ :container, 'Blog Target', :target] ],
:post => [ [ :post_permalink, 'Blog Post Permalink', :path ],
[ :post_id, 'Blog Post', :path ] ] }
:post => [ [ :post_permalink, 'Blog Post Permalink', :path ] ],
:target_url => [ [ :target_url, "Target URL", :path ]] }



class ListOptions < HashModel
attributes :auto_create => true, :blog_name => '%s Blog',:edit_page_id => nil

Expand Down
2 changes: 1 addition & 1 deletion vendor/modules/blog/app/controllers/blog/edit_feature.rb
Expand Up @@ -55,7 +55,7 @@ def blog_edit_list_feature(data)

def blog_edit_write_feature(data)
webiva_feature(:blog_edit_write) do |c|
c.form_for_tag('post','post',:code => "<input type='hidden' id='post_publish' name='publish_post' value=''/>") { |t| data[:revision] }
c.form_for_tag('post','post',:code => "<input type='hidden' id='post_publish' name='publish_post' value=''/>") { |t| data[:entry ] }
c.form_error_tag('post:errors')
c.field_tag('post:title',:size => 50)
c.field_tag('post:body',:control => 'editor_area', :rows => 20, :cols => 60)
Expand Down
107 changes: 51 additions & 56 deletions vendor/modules/blog/app/controllers/blog/edit_renderer.rb
Expand Up @@ -17,20 +17,16 @@ def list
@options = paragraph_options(:list)

conn_type,conn_id = page_connection(:input)


target_conn_type,target_conn_id = page_connection(:target_url)
if !target_conn_id.blank?
@target_connection_url = "/#{target_conn_id}"
end

if editor?
@blog = Blog::BlogBlog.find(:first,:conditions => "is_user_blog = 1")
else
if ajax?
if session[:blog_list] && session[:blog_list][paragraph.id]
obj = session[:blog_list][paragraph.id]
@target = obj[0].constantize.find(obj[1])
end
else
@target = conn_id
session[:blog_list] ||= {}
session[:blog_list][paragraph.id] = [ @target.class.to_s,@target.id]
end
@target = conn_id
@blog = Blog::BlogBlog.find_by_target_type_and_target_id(@target.class.to_s,@target.id) if @target
end

Expand All @@ -39,9 +35,6 @@ def list
end

return render_paragraph(:text => '') if !@blog




@tbl = end_user_table( :post_list,
Blog::BlogPost,
Expand All @@ -59,18 +52,25 @@ def list

end_user_table_generate(@tbl,:conditions => [ "blog_blog_id = ?",@blog.id],:order => 'blog_posts.updated_at DESC',:per_page => 20, :include => :active_revision)

data = { :tbl => @tbl, :edit_url => @options.edit_page_url }
edit_url = @options.edit_page_url + @target_connection_url.to_s
data = { :tbl => @tbl, :edit_url => edit_url }

render_paragraph :text => blog_edit_list_feature(data)
end


def write
@options = paragraph_options(:write)

conn_type,conn_id = page_connection(:target)

return render_paragraph(:text => '') if !conn_type

return render_paragraph(:text => '') if !conn_type

target_conn_type,target_conn_id = page_connection(:target_url)
if !target_conn_id.blank?
@target_connection_url = "/#{target_conn_id}"
end

if editor?
@blog = Blog::BlogBlog.find(:first,:conditions => "is_user_blog = 1")
@target = @blog.target
Expand All @@ -82,54 +82,49 @@ def write
if !@blog && @options.auto_create && @target
@blog = Blog::BlogBlog.create_user_blog(sprintf(@options.blog_name,@target.name),@target)
end

return render_paragraph(:text => '') if !@blog || !@target

post_conn_type,post_conn_id = page_connection(:post)

if post_conn_type == :post_id
@entry = @blog.blog_posts.find_by_id(post_conn_id,:include => :active_revision)
elsif post_conn_type == :post_permalink
@entry = @blog.blog_posts.find_by_permalink(post_conn_id,:include => :active_revision)

if post_conn_type == :post_permalink
@entry = @blog.blog_posts.find_by_permalink(post_conn_id,:include => :active_revision) || @blog.blog_posts.build
elsif editor?
@entry= @blog.blog_post.find(:first)
end

require_js('tiny_mce/tiny_mce.js')
require_js('front_cms_form_editor')

if @entry
@revision = @entry.active_revision.clone
else
@entry = @blog.blog_posts.build()
@revision = Blog::BlogPostRevision.new()
end

if request.post? && params[:post]
@entry.permalink = ''
# handle_image_upload(params[:post],
@revision.attributes = params[:post]
@revision.end_user_id = myself.id

if params[:publish_post].to_i == 1
@entry.publish_now
else
@entry.make_draft
end

if(@entry.valid? && @revision.valid?)
@entry.save_revision!(@revision)
DataCache.expire_content("Blog")
DataCache.expire_content("BlogPost")

redirect_paragraph :site_node => @options.list_page_id
return

if request.post? && params[:post]

@published = @entry.published?
@entry.attributes = params[:post].slice(:title,:body)
@entry.permalink = ''
@entry.end_user_id = myself.id

if params[:publish_post].to_i == 1
@entry.publish_now
else
@entry.make_draft
end

if @entry.valid?
@entry.generate_preview
@entry.save
if @entry.published? && !@published
@handlers = get_handler_info(:blog,:targeted_after_publish)
@handlers.each do |hndl|
hndl[:class].send(:after_publish,@entry,myself)
end

end
list_url = @options.list_page_url + @target_connection_url.to_s
return redirect_paragraph list_url
end
end



data = { :post => @revision, :entry => @entry, :revision => @revision }

render_paragraph :text => blog_edit_write_feature(data)
end

Expand Down
54 changes: 20 additions & 34 deletions vendor/modules/blog/app/controllers/blog/manage_controller.rb
Expand Up @@ -56,13 +56,13 @@ def generate_mail
end

def generate_mail_generate
@post = @blog.blog_posts.find(params[:post_id],:include => :active_revision)
@post = @blog.blog_posts.find(params[:post_id])

@align = params[:opts][:align] == 'left' ? 'left' : 'right'
@padding = params[:opts][:align] == 'left' ? 'padding:0 10px 10px 0;' : 'padding:0 0 10px 0px;'
@img = "<img class='blog_image' src='#{@post.active_revision.domain_file.url(:small)}' align='#{@align}' style='#{@padding}'>" if params[:opts][:align] != 'none' && @post.active_revision.domain_file
@img = "<img class='blog_image' src='#{@post.domain_file.url(:small)}' align='#{@align}' style='#{@padding}'>" if params[:opts][:align] != 'none' && @post.domain_file

@title = "<h1 class='blog_title'>#{h(@post.active_revision.title)}</h1>"
@title = "<h1 class='blog_title'>#{h(@post.title)}</h1>"

@post_content = "<div class='blog_entry'>"

Expand All @@ -72,7 +72,7 @@ def generate_mail_generate
@post_content += @img.to_s + @title
end
@post_content += "\n<div class='blog_body'>"
@post_content += @post.active_revision.body + "</div><div class='blog_clear' style='clear:both;'>&nbsp;</div></div>"
@post_content += @post.body_content + "</div><div class='blog_clear' style='clear:both;'>&nbsp;</div></div>"
end


Expand Down Expand Up @@ -114,12 +114,12 @@ def index
end

def mail_template
@entry = @blog.blog_posts.find(params[:path][1],:include => :active_revision)
@entry = @blog.blog_posts.find(params[:path][1])


@mail_template = MailTemplate.create(:name => @blog.name + ":" + @entry.active_revision.title,
:subject => @entry.active_revision.title,
:body_html => @entry.active_revision.body,
@mail_template = MailTemplate.create(:name => @blog.name + ":" + @entry.title,
:subject => @entry.title,
:body_html => @entry.body,
:generate_text_body => true,
:body_type => 'html,text')

Expand All @@ -128,7 +128,7 @@ def mail_template
end

def post
@entry = @blog.blog_posts.find(params[:path][1],:include => :active_revision) if params[:path][1]
@entry = @blog.blog_posts.find(params[:path][1]) if params[:path][1]

@header = <<-EOF
<script>
Expand All @@ -138,33 +138,21 @@ def post
}
</script>
EOF
@header += "<script src='/javascripts/cms_form_editor.js' type='text/javascript'></script>"

require_js('cms_form_editor')

if @entry
@revision = @entry.active_revision.clone
blog_path(@blog,[ 'Edit Entry: %s', nil, @revision.title ])

@selected_category_ids = params[:categories] || @entry.category_ids

blog_path(@blog,[ 'Edit Entry: %s', nil, @entry.title ])
else
cms_page_info [ ["Content",url_for(:controller => '/content') ], [ "%s",url_for(:action => 'index', :path => @blog.id),@blog.name], 'Post New Entry' ], "content"
blog_path(@blog,"Post New Entry")

@entry = @blog.blog_posts.build()
@revision = Blog::BlogPostRevision.new()

@selected_category_ids = params[:categories] || []
end
@selected_category_ids = params[:categories] || @entry.category_ids

@revision.author = myself.name if @revision.author.blank?
@entry.author = myself.name if @entry.author.blank?

if request.post? && params[:revision]
@revision.attributes = params[:revision]
if request.post? && params[:entry]
@entry.attributes = params[:entry]

@revision.end_user_id = myself.id

case params[:update_entry][:status]
when 'draft':
@entry.make_draft
Expand All @@ -174,16 +162,14 @@ def post
@entry.publish(params[:entry_update][:published_at].blank? ? Time.now : (params[:entry_update][:published_at]))
end

if(@entry.valid? && @revision.valid?)
@entry.save
@entry.save_revision!(@revision)

@entry.set_categories!(params[:categories])
@blog.send_pingbacks(@entry)
if @entry.save
@entry.set_categories!(params[:categories])
@blog.send_pingbacks(@entry)

redirect_to :action => 'index', :path => @blog.id
return
redirect_to :action => 'index', :path => @blog.id
return
end
raise @entry.errors.full_messages.inspect

end

Expand Down
35 changes: 31 additions & 4 deletions vendor/modules/blog/app/controllers/blog/page_controller.rb
Expand Up @@ -15,17 +15,28 @@ class Blog::PageController < ParagraphController

editor_for :entry_detail, :name => 'Blog Entry Detail', :features => ['blog_entry_detail'],
:inputs => { :input => [[ :post_permalink, 'Blog Post Permalink', :path ]],
:blog => [[ :container, 'Blog Target', :target],
[:blog_id,'Blog ID',:path ]]
:blog => [[:blog_id,'Blog ID',:path ]]
},
:outputs => [[:content_id, 'Content Identifier', :content],
[:post, 'Blog Post', :post_id ]]

editor_for :targeted_entry_detail, :name => "Targeted Blog Entry Detail", :features => ['blog_entry_detail'],
:inputs => {
:input => [[ :post_permalink, 'Blog Post Permalink', :path ]],
:blog => [[ :container, 'Blog Target', :target]]
},
:outputs => [[:content_id, 'Content Identifier', :content],
[:post, 'Blog Post', :post_id ]]




editor_for :categories, :name => 'Blog Categories' ,:features => ['blog_categories'],
:inputs => [[:category, 'Selected Category', :blog_category_id]]

class EntryListOptions < HashModel
attributes :blog_id => nil, :items_per_page => 10, :detail_page => nil, :include_in_path => nil
attributes :blog_id => nil, :items_per_page => 10, :detail_page => nil, :include_in_path => nil,:blog_target_id => nil


def detail_page_id
self.detail_page
Expand All @@ -37,9 +48,12 @@ def detail_page_id
options_form(fld(:blog_id, :select, :options => :blog_options),
fld(:detail_page, :page_selector),
fld(:include_in_path, :select, :options => :include_in_path_options),
fld(:items_per_page, :select, :options => (1..50).to_a)
fld(:items_per_page, :select, :options => (1..50).to_a),
fld(:blog_target_id, :select, :options => :blog_target_options)
)

def blog_target_options; Blog::BlogTarget.select_options_with_nil; end

def blog_options
[['---Use Page Connection---'.t,'']] + Blog::BlogBlog.find_select_options(:all,:order=>'name')
end
Expand Down Expand Up @@ -74,6 +88,19 @@ def include_in_path_options
["Include Target ID in detail path", "target_id"]]
end
end


class TargetedEntryDetailOptions < HashModel
attributes :blog_target_id => nil

validates_presence_of :blog_target_id
options_form(fld(:blog_target_id, :select, :options => :blog_target_options))

def blog_target_options; Blog::BlogTarget.select_options_with_nil; end

canonical_paragraph "Blog::BlogTarget", :blog_target_id

end

class CategoriesOptions < HashModel
attributes :blog_id => nil, :list_page_id => nil, :detail_page_id => nil
Expand Down

0 comments on commit fea23e6

Please sign in to comment.