Version 5.0.0 beta 8
This commit is contained in:
1 parent
54d5dcd0a0
commit
214f649f1d
483 files changed
+35354
-33568
No files matched your search
@@ -14,6 +14,7 @@ namespace IPS\cms\modules\admin\pages;
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use Diff;
|
||||
use DirectoryIterator;
|
||||
use DomainException;
|
||||
use Exception;
|
||||
use IPS\Application;
|
||||
@@ -21,12 +22,12 @@ use IPS\cms\Blocks\Block;
|
||||
use IPS\cms\Databases;
|
||||
use IPS\cms\Templates as TemplatesClass;
|
||||
use IPS\cms\Templates\Container;
|
||||
use IPS\Data\Cache;
|
||||
use IPS\Data\Store;
|
||||
use IPS\Db;
|
||||
use IPS\Dispatcher;
|
||||
use IPS\Dispatcher\Controller;
|
||||
use IPS\Helpers\Form;
|
||||
use IPS\Helpers\Form\CheckboxSet;
|
||||
use IPS\Helpers\Form\Node;
|
||||
use IPS\Helpers\Form\Radio;
|
||||
use IPS\Helpers\Form\Select;
|
||||
@@ -50,8 +51,10 @@ use function count;
|
||||
use function defined;
|
||||
use function in_array;
|
||||
use function mb_substr;
|
||||
use function str_replace;
|
||||
use function strip_tags;
|
||||
use function substr;
|
||||
use function ucwords;
|
||||
use const IPS\TEMP_DIRECTORY;
|
||||
use const IPS\ROOT_PATH;
|
||||
|
||||
@@ -89,12 +92,104 @@ class templates extends Controller
|
||||
*/
|
||||
public function importInDev() : void
|
||||
{
|
||||
Session::i()->csrfCheck();
|
||||
|
||||
\IPS\cms\Theme::importFromFiles('database');
|
||||
\IPS\cms\Theme::importFromFiles('page');
|
||||
/* Get master keys for mapping */
|
||||
$groups = [
|
||||
'' => 'cms_template_no_import'
|
||||
];
|
||||
foreach( Databases::$templateGroups as $key => $group )
|
||||
{
|
||||
$groups[ $key ] = Member::loggedIn()->language()->addToStack( 'cms_new_db_template_group_' . $key );
|
||||
}
|
||||
|
||||
Output::i()->redirect( Url::internal( 'app=cms&module=pages&controller=templates' ), 'completed' );
|
||||
/* Build a list of all custom directories */
|
||||
$masterTemplates = iterator_to_array(
|
||||
Db::i()->select( 'template_group', 'cms_templates', [ 'template_location=? and template_master=?', 'database', 1 ] )
|
||||
);
|
||||
$databaseTemplates = [];
|
||||
foreach( new DirectoryIterator( ROOT_PATH . "/applications/cms/dev/html/database" ) as $file )
|
||||
{
|
||||
if( $file->isDot() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if( $file->isDir() and !in_array( $file->getFilename(), $masterTemplates ) )
|
||||
{
|
||||
$databaseTemplates[] = $file->getFilename();
|
||||
}
|
||||
}
|
||||
|
||||
$masterWrappers = iterator_to_array(
|
||||
Db::i()->select( 'template_title', 'cms_templates', [ 'template_location=? and template_master=? and template_group=?', 'page', 1, 'custom_wrappers' ] )
|
||||
);
|
||||
$customWrappers = [];
|
||||
foreach( new DirectoryIterator( ROOT_PATH . "/applications/cms/dev/html/page/custom_wrappers" ) as $file )
|
||||
{
|
||||
if( $file->isDir() or $file->isDot() or mb_substr( $file->getFilename(), 0, 1 ) === '.' or $file->getFilename() == 'index.html' )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$extension = strtolower( mb_substr( $file->getFilename(), mb_strrpos( $file->getFilename(), '.' ) + 1 ) );
|
||||
if( $extension == 'phtml' and !in_array( mb_substr( $file->getFilename(), 0, mb_strrpos( $file->getFilename(), '.' ) ), $masterWrappers ) )
|
||||
{
|
||||
$customWrappers[ $file->getFilename() ] = $file->getFilename();
|
||||
}
|
||||
}
|
||||
|
||||
if( !count( $databaseTemplates ) and !count( $customWrappers ) )
|
||||
{
|
||||
Output::i()->error( 'err_no_dev_templates', '3T285/4' );
|
||||
}
|
||||
|
||||
$form = new Form( 'form', 'continue' );
|
||||
if( count( $databaseTemplates ) )
|
||||
{
|
||||
$form->addHeader( 'content_import_db' );
|
||||
$form->addMessage( 'content_import_dev_templates_info', 'ipsMessage ipsMessage--info' );
|
||||
foreach( $databaseTemplates as $template )
|
||||
{
|
||||
$key = str_replace( ' ', '_', $template );
|
||||
$field = new Select( $key, null, false, [
|
||||
'options' => $groups
|
||||
] );
|
||||
$field->label = ucwords( str_replace( '_', ' ', $template ) );
|
||||
$form->add( $field );
|
||||
}
|
||||
}
|
||||
|
||||
if( count( $customWrappers ) )
|
||||
{
|
||||
$form->addHeader( 'content_import_wrappers' );
|
||||
$form->add( new CheckboxSet( 'cms_import_wrappers', null, false, [
|
||||
'options' => $customWrappers,
|
||||
'noDefault' => true
|
||||
] ) );
|
||||
}
|
||||
|
||||
if( $values = $form->values() )
|
||||
{
|
||||
foreach( $databaseTemplates as $templateGroup )
|
||||
{
|
||||
$key = str_replace( ' ', '_', $templateGroup );
|
||||
if( isset( $values[ $key ] ) and $values[ $key ] )
|
||||
{
|
||||
\IPS\cms\Theme::importDatabaseTemplate( $templateGroup, $values[ $key ] );
|
||||
}
|
||||
}
|
||||
|
||||
if( isset( $values['cms_import_wrappers'] ) )
|
||||
{
|
||||
foreach( $values['cms_import_wrappers'] as $wrapperName )
|
||||
{
|
||||
\IPS\cms\Theme::importPageWrapper( $wrapperName );
|
||||
}
|
||||
}
|
||||
|
||||
Output::i()->redirect( Url::internal( 'app=cms&module=pages&controller=templates' ), 'completed' );
|
||||
}
|
||||
|
||||
Output::i()->output = (string) $form;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -177,7 +272,7 @@ class templates extends Controller
|
||||
$conflicts = array();
|
||||
|
||||
/* If this is part of plugin/app installation, set relevant form data */
|
||||
if( Request::i()->application OR Request::i()->plugin )
|
||||
if( Request::i()->application )
|
||||
{
|
||||
if( Request::i()->application )
|
||||
{
|
||||
@@ -304,7 +399,7 @@ class templates extends Controller
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js( 'codemirror/codemirror.js', 'core', 'interface' ) );
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'codemirror/codemirror.css', 'core', 'interface' ) );
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'customization/themes.css', 'core', 'admin' ) );
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js( 'admin_templates.js', 'core', 'admin' ) );
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js( 'admin_templates.js', 'cms', 'admin' ) );
|
||||
|
||||
Output::i()->output = $form->customTemplate( array( Theme::i()->getTemplate( 'templates', 'cms' ), 'templateConflict' ), $conflicts );
|
||||
}
|
||||
@@ -427,8 +522,8 @@ class templates extends Controller
|
||||
Output::i()->sidebar['actions']['add'] = array(
|
||||
'icon' => 'cog',
|
||||
'title' => 'content_import_dev_templates',
|
||||
'link' => Url::internal( "app=cms&module=pages&controller=templates&do=importInDev" )->csrf(),
|
||||
'data' => array()
|
||||
'link' => Url::internal( "app=cms&module=pages&controller=templates&do=importInDev" ),
|
||||
'data' => [ 'ipsDialog' => '', 'ipsDialog-title' => Member::loggedIn()->language()->addToStack( 'content_import_dev_templates' ) ]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -449,7 +544,7 @@ class templates extends Controller
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js( 'codemirror/codemirror.js', 'core', 'interface' ) );
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'codemirror/codemirror.css', 'core', 'interface' ) );
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'templates/templates.css', 'cms', 'admin' ) );
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js( 'admin_templates.js', 'cms' ) );
|
||||
Output::i()->jsFiles = array_merge( Output::i()->jsFiles, Output::i()->js( 'admin_templates.js', 'cms', 'admin' ) );
|
||||
|
||||
Output::i()->output = Theme::i()->getTemplate( 'templates' )->templates( $templates, $current, $request );
|
||||
}
|
||||
@@ -767,8 +862,8 @@ class templates extends Controller
|
||||
/* Page, css, js */
|
||||
if ( $type == 'js' or $type == 'css' )
|
||||
{
|
||||
$fileExt = ( $type == 'js' ) ? '.js' : ( $type == 'css' ? '.css' : NULL );
|
||||
if ( $fileExt AND ! preg_match( '#' . preg_quote( $fileExt, '#' ) . '$#', $values['template_title'] ) )
|
||||
$fileExt = ( $type == 'js' ) ? '.js' : '.css';
|
||||
if ( ! preg_match( '#' . preg_quote( $fileExt, '#' ) . '$#', $values['template_title'] ) )
|
||||
{
|
||||
$values['template_title'] .= $fileExt;
|
||||
}
|
||||
@@ -1139,7 +1234,7 @@ class templates extends Controller
|
||||
$displaySettings = $db->display_settings;
|
||||
foreach( TemplatesClass::$databaseDefaults as $field => $template )
|
||||
{
|
||||
if( isset( $displaySettings[ $field ] ) and $displaySettings[ $field ]['template'] == Request::i()->group )
|
||||
if( isset( $displaySettings[ $field ]['template'] ) and $displaySettings[ $field ]['template'] == Request::i()->group )
|
||||
{
|
||||
switch( $field )
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user