module AdminPageControllerExtensions def validate_markup @page = Page.find_or_initialize_by_id(params[:id]) @page.attributes = params[:page] render :layout => false end def markup_report @page = Page.find_or_initialize_by_id(params[:id]) begin Page.transaction do PagePart.transaction do @current_stage = 'saving' @page.attributes = params[:page] save unless params[:page].nil? || params[:part].nil? @current_stage = 'validating' @validation_data = @page.validate_html_markup @current_stage = 'done' raise "D'Oh!" #force error to drive transaction rollback end end rescue if @current_stage == 'done' then if @validation_data['completed'] then render :partial => 'markup_report' else @error_msg = @validation_data['error_code'].to_s + ' - ' + @validation_data['error_code_description'] render :partial => 'markup_problem' end else @error_msg = 'Error during ' + @current_stage + ' stage.' render :partial => 'markup_problem' end end end end