diff --git a/app/controllers/edit_controller.rb b/app/controllers/edit_controller.rb index 80e52f42..2df2171d 100644 --- a/app/controllers/edit_controller.rb +++ b/app/controllers/edit_controller.rb @@ -54,9 +54,9 @@ def save_temporary_revision(revision) revision.make_real() end - def save_temporary_revision_as(revision,version) + def save_temporary_revision_as(revision,version,name=nil) revision.updated_by = myself - revision.make_new_version(version) + revision.make_new_version(version, name) end @@ -400,13 +400,15 @@ def save_as generate_paragraph_types version = params[:version] + version_name = params[:name] + get_container edit_page_info(@container_type,@container_id,params[:path][2],false) sort_paragraphs(params[:zone] || {}) update_paragraphs(params[:paragraph] || {}) - save_temporary_revision_as(@revision,version) + save_temporary_revision_as(@revision,version,version_name) @old_revision=@revision edit_page_info(params[:path][0] == 'page' ? 'site_node' : 'site_node_modifier', @@ -417,7 +419,12 @@ def save_as render :action => 'save_changes' end - + def change_version + get_container + @site_node = @container_cls.find_page(@container_id) + @page_revision = @site_node.page_revisions.find(params[:path][2]) + render :partial => 'change_version' + end def backup_changes raise 'NotOk' diff --git a/app/models/page_revision.rb b/app/models/page_revision.rb index 83425621..b622c42d 100644 --- a/app/models/page_revision.rb +++ b/app/models/page_revision.rb @@ -224,8 +224,19 @@ def make_real() end end - - def make_new_version(version = 'minor') + + def get_next_version(version='minor') + container = self.revision_container + max_revision = container.page_revisions.find(:first,:order => 'page_revisions.revision DESC') + + if version == 'major' + max_revision.revision.floor + 1 + elsif version == 'minor' + max_revision.revision + 0.01 + end + end + + def make_new_version(version = 'minor', version_name=nil) container = self.revision_container max_revision = container.page_revisions.find(:first,:order => 'page_revisions.revision DESC') @@ -245,6 +256,7 @@ def make_new_version(version = 'minor') end self.update_attributes(:revision => new_version, + :version_name => version_name, :active => false, :revision_type => 'real', :updated_at => Time.now) diff --git a/app/views/edit/_change_version.html.erb b/app/views/edit/_change_version.html.erb new file mode 100644 index 00000000..5bd43011 --- /dev/null +++ b/app/views/edit/_change_version.html.erb @@ -0,0 +1,12 @@ +
+ +

<%= "Save as a new version".t %>

+ +<% admin_form_for :page_revision, @page_revision, :html => {:onsubmit => 'cmsEdit.saveAsSpecificSubmit(this); return false;'} do |f| -%> + <%= f.custom_field :version_name, :value => text_field_tag(:name, '') %> + <%= f.custom_field :version, :value => text_field_tag(:version, @page_revision.get_next_version) %> + <%= f.spacer %> + <%= f.cancel_submit_buttons "Cancel", "Submit", { :onclick => 'RedBox.close(); return false;' } %> +<% end -%> + +
diff --git a/app/views/edit/page.rhtml b/app/views/edit/page.rhtml index 4c432e3b..eb33c12e 100644 --- a/app/views/edit/page.rhtml +++ b/app/views/edit/page.rhtml @@ -97,14 +97,6 @@ tinyMCE.init({ -
@@ -201,9 +193,8 @@ tinyMCE.init({ diff --git a/public/javascripts/edit.js b/public/javascripts/edit.js index 9c6ab5f2..2f997707 100644 --- a/public/javascripts/edit.js +++ b/public/javascripts/edit.js @@ -687,11 +687,13 @@ var cmsEdit = { }, - saveAsSend: function(version) { + saveAsSend: function(version, name) { cmsEdit.hideSaveAs(); cmsEdit.pageModified=false; $('cms_save_changes').disabled = true; - cmsEdit.sendChanges('save_as',"version=" + version); + var params = "version=" + version + if(name) { params += "&name=" + name; } + cmsEdit.sendChanges('save_as',params); }, sendChanges: function(action,params,cleanup,callback) { @@ -935,16 +937,11 @@ var cmsEdit = { SCMS.hidePopupDiv('cms_save_as'); }, - saveAsSpecific: function() { - SCMS.hidePopupDiv('cms_save_as'); - SCMS.setKeyHandler(null); - RedBox.showInline('cms_save_as_specific'); - }, - saveAsSpecificSubmit: function(frm) { // Get Value - var elem = Form.findFirstElement(frm); + var elem = frm.version; var value = elem.value; + var name = frm.name.value; regexp = /^[0-9]*\.[0-9]{1,2}$/ if(!regexp.test(value)) { @@ -953,7 +950,7 @@ var cmsEdit = { } else { cmsEdit.closeBox(); - cmsEdit.saveAsSend(value); + cmsEdit.saveAsSend(value, name); } @@ -1367,9 +1364,11 @@ var cmsEdit = { $('cms_paragraph_display_'+elem_id).innerHTML = "
" + html; cmsEdit.pageChanged(); - } - + }, + changeVersion: function(version) { + SCMS.remoteOverlay(cmsEdit.editURL + 'change_version' + "/" + cmsEdit.pageType + "/" + cmsEdit.pageId + "/" + cmsEdit.revisionId + '?version=' + version); + } }