[pLog-svn] r5919 - in plog/trunk: class/action/admin class/view/admin templates/admin
oscar at devel.lifetype.net
oscar at devel.lifetype.net
Fri Sep 7 18:08:28 EDT 2007
Author: oscar
Date: 2007-09-07 18:08:28 -0400 (Fri, 07 Sep 2007)
New Revision: 5919
Added:
plog/trunk/class/action/admin/admincopyblogtemplatesetaction.class.php
Modified:
plog/trunk/class/action/admin/admindeleteblogtemplateaction.class.php
plog/trunk/class/action/admin/admineditblogtemplatesaction.class.php
plog/trunk/class/view/admin/adminblogtemplatesetslistview.class.php
plog/trunk/templates/admin/blogtemplates_table.template
Log:
Implemented the rest of the functonality for working with blog templates (copy an entire template set) and fixed a couple of things when deleting templates.
Added: plog/trunk/class/action/admin/admincopyblogtemplatesetaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admincopyblogtemplatesetaction.class.php (rev 0)
+++ plog/trunk/class/action/admin/admincopyblogtemplatesetaction.class.php 2007-09-07 22:08:28 UTC (rev 5919)
@@ -0,0 +1,135 @@
+<?php
+
+ lt_include( PLOG_CLASS_PATH."class/action/admin/adminbasetemplateeditoraction.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/data/validator/templatenamevalidator.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/data/filter/regexpfilter.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/template/templatesets/templatesets.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/template/editor/templatetools.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/view/admin/adminsitetemplateslistview.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/view/admin/adminerrordialogview.class.php" );
+
+ class AdminCopyBlogTemplateSetAction extends AdminBaseTemplateEditorAction
+ {
+ protected $_templateId;
+ protected $_destTemplate;
+ protected $_sourceTemplateType;
+
+ private $_message;
+
+ /**
+ * Whether the source template is a global template or a blog template
+ */
+ const GLOBAL_TEMPLATE = 1;
+ const BLOG_TEMPLATE = 2;
+
+ function __construct( $actionInfo, $request )
+ {
+ $this->AdminBaseTemplateEditorAction( $actionInfo, $request );
+
+ $this->registerFieldValidator( "templateId", new TemplateNameValidator(), false);
+ $this->registerFieldValidator( "destTemplate", new StringValidator(), true );
+ $view = new AdminSiteTemplatesListView( $this->_blogInfo );
+ $view->setErrorMessage( $this->_locale->tr( "error_copying_template_set" ));
+ $this->setValidationErrorView( $view );
+
+ $this->blogId = $this->_blogInfo->getId();
+
+ $this->requirePermission( "update_blog_template" );
+ }
+
+ function validate()
+ {
+ if( !$this->validateTemplateName())
+ return( false );
+
+ // check that the destination template does not exist
+ $this->_destTemplate = $this->_request->getFilteredValue( "destTemplate", TemplateTools::getTemplateNameFilter());
+ if( TemplateSets::isTemplate( $this->_destTemplate )) {
+ // show a more specific error message
+ $this->_validationErrorView->setErrorMessage( $this->_locale->tr( "error_template_set_already_exists" ));
+ $this->_form->setFieldValidationStatus( "destTemplate", false );
+ $this->validationErrorProcessing();
+ return( false );
+ }
+
+ // and that the potential destination folder doesn't exist
+ $newTemplateFolder = TemplateSetStorage::getBlogBaseTemplateFolder( $this->_blogInfo->getId()) . "/" . $this->_destTemplate;
+ if( File::exists( $newTemplateFolder )) {
+ $this->_validationErrorView->setErrorMessage( $this->_locale->tr( "error_folder_already_exists" ));
+ $this->_form->setFieldValidationStatus( "destTemplate", false );
+ $this->validationErrorProcessing();
+ return( false );
+ }
+
+ // otherwise everything is peachy
+ return( true );
+ }
+
+ function copyTemplateSet()
+ {
+ lt_include( PLOG_CLASS_PATH."class/file/directorytreeiterator.class.php" );
+
+ if( $this->_sourceTemplateType == AdminCopyBlogtemplateSetAction::GLOBAL_TEMPLATE )
+ $path = TemplateSetStorage::getTemplateFolder( $this->_templateId);
+ else
+ $path = TemplateSetStorage::getTemplateFolder( $this->_templateId, $this->_blogInfo->getId());
+
+ $newTemplateFolder = TemplateSetStorage::getBlogBaseTemplateFolder( $this->_blogInfo->getId()) . "/" . $this->_destTemplate;
+
+ if( !File::isWritable( TemplateSetStorage::getBlogBaseTemplateFolder( $this->_blogInfo->getId()))) {
+ $this->_message = $this->_locale->tr( "error_blog_template_folder_not_writable" );
+ return false;
+ }
+
+ if( !File::createDir( $newTemplateFolder ))
+ return( false );
+
+ $ts = new TemplateSetStorage();
+
+ $dir = new DirectoryTreeIterator( $path );
+ foreach( $dir as $file ) {
+ // prepare the destination file name
+ $destFile = $newTemplateFolder . "/" . str_replace( $path, "", $file );
+
+ // check if the destination folder exists
+ if( !File::exists( dirname( $destFile ))) {
+ if( !File::createDir( dirname( $destFile ), File::FILE_DEFAULT_DIRECTORY_CREATION_MODE, true )) {
+ return false;
+ }
+ }
+
+ // and finally perform the copy
+ if( !File::isDir( $file, $destFile )) {
+ if( !File::copy( $file, $destFile )) {
+ return false;
+ }
+ }
+ }
+
+ // add the new template as a global one
+ $ts->addTemplate( $this->_destTemplate, $this->_blogInfo->getId());
+
+ return( true );
+ }
+
+ function performAjax()
+ {
+ $result = $this->copyTemplateSet();
+
+ lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+
+ $this->_view->setSuccess( $result );
+ if( $result )
+ $this->_view->setSuccessMessage( $this->_locale->tr( "template_set_copied_ok" ));
+ else {
+ if( $this->_message == "" )
+ $this->_message = $this->_locale->tr( "error_copying_template_set" );
+ $this->_view->setErrorMessage( $this->_message );
+ }
+
+ return( true );
+ }
+ }
+?>
\ No newline at end of file
Modified: plog/trunk/class/action/admin/admindeleteblogtemplateaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admindeleteblogtemplateaction.class.php 2007-09-07 21:38:00 UTC (rev 5918)
+++ plog/trunk/class/action/admin/admindeleteblogtemplateaction.class.php 2007-09-07 22:08:28 UTC (rev 5919)
@@ -5,7 +5,7 @@
lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
lt_include( PLOG_CLASS_PATH."class/data/validator/arrayvalidator.class.php" );
lt_include( PLOG_CLASS_PATH."class/template/templatesets/templatesetstorage.class.php" );
- lt_include( PLOG_CLASS_PATH."class/data/filter/htmlfilter.class.php" );
+ lt_include( PLOG_CLASS_PATH."class/data/filter/regexpfilter.class.php" );
/**
* \ingroup Action
@@ -15,7 +15,6 @@
*/
class AdminDeleteBlogTemplateAction extends AdminAction
{
-
var $_templateIds;
function AdminDeleteBlogTemplateAction( $actionInfo, $request )
@@ -36,16 +35,24 @@
function perform()
{
- if( $this->_op == "deleteBlogTemplate" ) {
- $this->_templateId = $this->_request->getValue( "templateId" );
- $this->_templateIds = Array();
- $this->_templateIds[] = $this->_templateId;
- }
- else
- $this->_templateIds = $this->_request->getValue( "templateIds" );
-
- $this->_deleteTemplates();
+ $results = $this->_deleteTemplates();
+
+ $this->_view = new AdminBlogTemplateSetsListView( $this->_blogInfo );
+ if( $results["errorMessage"] != "" ) $this->_view->setErrorMessage( $results["errorMessage"] );
+ if( $results["successMessage"] != "" ) $this->_view->setSuccessMessage( $results["successMessage"] );
+ $this->setCommonData();
+ return( true );
}
+
+ function performAjax()
+ {
+ $results = $this->_deleteTemplates();
+
+ lt_include( PLOG_CLASS_PATH."class/view/admin/ajax/adminajaxview.class.php" );
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setMessage( $results );
+ $this->_view->setSuccess( true );
+ }
/**
* Carries out the specified action
@@ -53,12 +60,21 @@
*/
function _deleteTemplates()
{
+ if( $this->_op == "deleteBlogTemplate" ) {
+ $this->_templateId = $this->_request->getValue( "templateId" );
+ $this->_templateIds = Array();
+ $this->_templateIds[] = $this->_templateId;
+ }
+ else
+ $this->_templateIds = $this->_request->getValue( "templateIds" );
+
$ts = new TemplateSetStorage();
$errorMessage = "";
$successMessage = "";
$totalOk = 0;
$blogTemplate = $this->_blogInfo->getTemplateSet();
- $f = new HtmlFilter();
+
+ $f = new RegexpFilter( "/[^A-Za-z0-9_\-]/" );
foreach( $this->_templateIds as $templateId ) {
$templateId = $f->filter( $templateId );
@@ -81,11 +97,6 @@
}
}
- $this->_view = new AdminBlogTemplateSetsListView( $this->_blogInfo );
- if( $errorMessage != "" ) $this->_view->setErrorMessage( $errorMessage );
- if( $successMessage != "" ) $this->_view->setSuccessMessage( $successMessage );
- $this->setCommonData();
-
// We should update the session too, or we will get data dirty
lt_include( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
$blogs = new Blogs();
@@ -93,7 +104,7 @@
$this->_session->setValue( "blogInfo", $blogInfo );
$this->saveSession();
- return true;
+ return( Array( "errorMessage" => $errorMessage, "successMessage" => $successMessage ));
}
}
?>
\ No newline at end of file
Modified: plog/trunk/class/action/admin/admineditblogtemplatesaction.class.php
===================================================================
--- plog/trunk/class/action/admin/admineditblogtemplatesaction.class.php 2007-09-07 21:38:00 UTC (rev 5918)
+++ plog/trunk/class/action/admin/admineditblogtemplatesaction.class.php 2007-09-07 22:08:28 UTC (rev 5919)
@@ -27,5 +27,10 @@
return true;
}
+
+ function performAjax()
+ {
+ return( $this->perform());
+ }
}
?>
Modified: plog/trunk/class/view/admin/adminblogtemplatesetslistview.class.php
===================================================================
--- plog/trunk/class/view/admin/adminblogtemplatesetslistview.class.php 2007-09-07 21:38:00 UTC (rev 5918)
+++ plog/trunk/class/view/admin/adminblogtemplatesetslistview.class.php 2007-09-07 22:08:28 UTC (rev 5919)
@@ -14,7 +14,10 @@
function AdminBlogTemplateSetsListView( $blogInfo )
{
- $this->AdminTemplatedView( $blogInfo, "blogtemplates" );
+ if( Request::isXHR())
+ $this->AdminTemplatedView( $blogInfo, "blogtemplates_table" );
+ else
+ $this->AdminTemplatedView( $blogInfo, "blogtemplates" );
}
function render()
Modified: plog/trunk/templates/admin/blogtemplates_table.template
===================================================================
--- plog/trunk/templates/admin/blogtemplates_table.template 2007-09-07 21:38:00 UTC (rev 5918)
+++ plog/trunk/templates/admin/blogtemplates_table.template 2007-09-07 22:08:28 UTC (rev 5919)
@@ -1,17 +1,17 @@
-{foreach from=$templates item=sitetemplate}
+{foreach from=$templates item=blogtemplate}
<div class="template-screenshot">
- <input style="display:none" type="checkbox" name="templateIds[{counter}]" value="{$sitetemplate->getName()}" />
- <span style="font-weight:bold;font-size:1.1em">{$sitetemplate->getName()}</span>
- {if $sitetemplate->hasScreenshot()}
- <a href="{$sitetemplate->getScreenshotUrl()}" onClick="Lifetype.UI.Misc.openInNewWindow(this);">
- <img src="{$sitetemplate->getScreenshotUrl()}" alt="{$sitetemplate->getName()}" />
+ <input style="display:none" type="checkbox" name="templateIds[{counter}]" value="{$blogtemplate->getName()}" />
+ <span style="font-weight:bold;font-size:1.1em">{$blogtemplate->getName()}</span>
+ {if $blogtemplate->hasScreenshot()}
+ <a href="{$blogtemplate->getScreenshotUrl()}" onClick="Lifetype.UI.Misc.openInNewWindow(this);">
+ <img src="{$blogtemplate->getScreenshotUrl()}" alt="{$blogtemplate->getName()}" />
</a>
{/if}
<br/>
{check_perms perm=update_blog_template}
- <a href="?op=editBlogTemplate&templateId={$sitetemplate->getName()}">{$locale->tr("edit")}</a> |
- <a href="#" onClick="Lifetype.UI.Pages.TemplateEditor.showCopyTemplatePrompt('{$sitetemplate->getName()}');return(false);">{$locale->tr("copy")}</a> |
- <a href="?op=deleteBlogTemplate&templateId={$sitetemplate->getName()}" onClick="Lifetype.Forms.performRequest(this);return(false);">{$locale->tr("delete")}</a>
+ <a href="?op=editBlogTemplate&templateId={$blogtemplate->getName()}">{$locale->tr("edit")}</a> |
+ <a href="#" onClick="Lifetype.UI.Pages.TemplateEditor.showCopyBlogTemplatePrompt('{$blogtemplate->getName()}');return(false);">{$locale->tr("copy")}</a> |
+ <a href="?op=deleteBlogTemplate&templateId={$blogtemplate->getName()}" onClick="Lifetype.Forms.performRequest(this);return(false);">{$locale->tr("delete")}</a>
{/check_perms}
</div>
{/foreach}
\ No newline at end of file
More information about the pLog-svn
mailing list