Version 4.1.19
This commit is contained in:
1 parent
28bd025b35
commit
2bd5025018
2674 files changed
+233518
-77766
No files matched your search
@@ -3,7 +3,7 @@
|
||||
* @brief Content Application Class
|
||||
* @author <a href=''>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2014 Invision Power Services, Inc.
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @subpackage Content
|
||||
* @since 13 Jan 2014
|
||||
* @version
|
||||
@@ -15,17 +15,25 @@ spl_autoload_register( function( $class )
|
||||
{
|
||||
if ( mb_substr( $class, 0, 15 ) === 'IPS\cms\Records' and is_numeric( mb_substr( $class, 15, 1 ) ) )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 15 );
|
||||
$databaseId = intval( mb_substr( $class, 15 ) );
|
||||
$databases = \IPS\cms\Databases::databases();
|
||||
|
||||
if ( ! isset( $databases[ $databaseId ] ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$titleField = $databases[ $databaseId ]->field_title;
|
||||
$contentField = $databases[ $databaseId ]->field_content;
|
||||
$titleLang = 'content_db_lang_su_' . $databaseId;
|
||||
$includeInSearch = $databases[ $databaseId ]->search ? "TRUE" : "FALSE";
|
||||
|
||||
$data = <<<EOF
|
||||
namespace IPS\cms;
|
||||
class Records{$databaseId} extends Records
|
||||
{
|
||||
protected static \$multitons = array();
|
||||
protected static \$multitonMap = array();
|
||||
public static \$customDatabaseId = $databaseId;
|
||||
public static \$commentClass = 'IPS\cms\Records\Comment{$databaseId}';
|
||||
public static \$reviewClass = 'IPS\cms\Records\Review{$databaseId}';
|
||||
@@ -34,6 +42,7 @@ spl_autoload_register( function( $class )
|
||||
public static \$title = '{$titleLang}';
|
||||
public static \$module = 'records{$databaseId}';
|
||||
public static \$reputationType = 'record_id_{$databaseId}';
|
||||
public static \$includeInSearch = {$includeInSearch};
|
||||
public static \$databaseColumnMap = array(
|
||||
'author' => 'member_id',
|
||||
'container' => 'category_id',
|
||||
@@ -48,14 +57,14 @@ spl_autoload_register( function( $class )
|
||||
'last_comment' => 'record_last_comment',
|
||||
'last_comment_by' => 'record_last_comment_by',
|
||||
'last_comment_name' => 'record_last_comment_name',
|
||||
'last_comment_name_seo' => 'record_last_comment_seo',
|
||||
'views' => 'record_views',
|
||||
'approved' => 'record_approved',
|
||||
'pinned' => 'record_pinned',
|
||||
'locked' => 'record_locked',
|
||||
'featured' => 'record_featured',
|
||||
'rating' => 'record_rating',
|
||||
'rating_hits' => 'rating_hits',
|
||||
'rating' => 'record_rating',
|
||||
'rating_average' => 'record_rating',
|
||||
'rating_total' => 'rating_value',
|
||||
'num_reviews' => 'record_reviews',
|
||||
'last_review' => 'record_last_review',
|
||||
@@ -71,16 +80,18 @@ EOF;
|
||||
|
||||
if ( mb_substr( $class, 0, 23 ) === 'IPS\cms\Records\Comment' and is_numeric( mb_substr( $class, 23, 1 ) ) )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 23 );
|
||||
$databaseId = intval( mb_substr( $class, 23 ) );
|
||||
|
||||
$data = <<<EOF
|
||||
namespace IPS\cms\Records;
|
||||
class Comment{$databaseId} extends Comment
|
||||
{
|
||||
protected static \$multitons = array();
|
||||
protected static \$multitonMap = array();
|
||||
public static \$customDatabaseId = $databaseId;
|
||||
public static \$itemClass = 'IPS\cms\Records{$databaseId}';
|
||||
public static \$title = 'content_record_comments_title_{$databaseId}';
|
||||
public static \$reputationType = 'comment_id_{$databaseId}';
|
||||
}
|
||||
EOF;
|
||||
eval( $data );
|
||||
@@ -88,13 +99,14 @@ EOF;
|
||||
|
||||
if ( mb_substr( $class, 0, 22 ) === 'IPS\cms\Records\Review' and is_numeric( mb_substr( $class, 22, 1 ) ) )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 22 );
|
||||
$databaseId = intval( mb_substr( $class, 22 ) );
|
||||
|
||||
$data = <<<EOF
|
||||
namespace IPS\cms\Records;
|
||||
class Review{$databaseId} extends Review
|
||||
{
|
||||
protected static \$multitons = array();
|
||||
protected static \$multitonMap = array();
|
||||
public static \$customDatabaseId = $databaseId;
|
||||
public static \$itemClass = 'IPS\cms\Records{$databaseId}';
|
||||
public static \$title = 'content_record_reviews_title_{$databaseId}';
|
||||
@@ -105,16 +117,18 @@ EOF;
|
||||
|
||||
if ( mb_substr( $class, 0, 18 ) === 'IPS\cms\Categories' and is_numeric( mb_substr( $class, 18, 1 ) ) )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 18 );
|
||||
$databaseId = intval( mb_substr( $class, 18 ) );
|
||||
|
||||
$data = <<<EOF
|
||||
namespace IPS\cms;
|
||||
class Categories{$databaseId} extends Categories
|
||||
{
|
||||
protected static \$multitons = array();
|
||||
protected static \$multitonMap = array();
|
||||
public static \$customDatabaseId = $databaseId;
|
||||
public static \$contentItemClass = 'IPS\cms\Records{$databaseId}';
|
||||
protected static \$containerIds = NULL;
|
||||
public static \$modPerm = 'cms{$databaseId}';
|
||||
}
|
||||
EOF;
|
||||
|
||||
@@ -123,13 +137,14 @@ EOF;
|
||||
|
||||
if ( mb_substr( $class, 0, 32 ) === 'IPS\cms\Records\RecordsTopicSync' )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 32 );
|
||||
$databaseId = intval( mb_substr( $class, 32 ) );
|
||||
|
||||
$data = <<<EOF
|
||||
namespace IPS\cms\Records;
|
||||
class RecordsTopicSync{$databaseId} extends \IPS\cms\Records{$databaseId}
|
||||
{
|
||||
protected static \$multitons = array();
|
||||
protected static \$multitonMap = array();
|
||||
public static \$customDatabaseId = $databaseId;
|
||||
public static \$databaseTable = 'cms_custom_database_{$databaseId}';
|
||||
public static \$databaseColumnId = 'record_topicid';
|
||||
@@ -146,13 +161,14 @@ EOF;
|
||||
|
||||
if ( mb_substr( $class, 0, 32 ) === 'IPS\cms\Records\CommentTopicSync' )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 32 );
|
||||
$databaseId = intval( mb_substr( $class, 32 ) );
|
||||
|
||||
$data = <<<EOF
|
||||
namespace IPS\cms\Records;
|
||||
class CommentTopicSync{$databaseId} extends CommentTopicSync
|
||||
{
|
||||
protected static \$multitons = array();
|
||||
protected static \$multitonMap = array();
|
||||
public static \$customDatabaseId = $databaseId;
|
||||
public static \$itemClass = 'IPS\cms\Records\RecordsTopicSync{$databaseId}';
|
||||
public static \$title = 'content_record_comments_title_{$databaseId}';
|
||||
@@ -163,13 +179,13 @@ EOF;
|
||||
|
||||
if ( mb_substr( $class, 0, 14 ) === 'IPS\cms\Fields' and is_numeric( mb_substr( $class, 14, 1 ) ) )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 14 );
|
||||
$databaseId = intval( mb_substr( $class, 14 ) );
|
||||
eval( "namespace IPS\\cms; class Fields{$databaseId} extends Fields { public static \$customDatabaseId = $databaseId; }" );
|
||||
}
|
||||
|
||||
if ( mb_substr( $class, 0, 47 ) === 'IPS\cms\extensions\core\EditorLocations\Records' and is_numeric( mb_substr( $class, 47, 1 ) ) )
|
||||
{
|
||||
$databaseId = mb_substr( $class, 47 );
|
||||
$databaseId = intval( mb_substr( $class, 47 ) );
|
||||
eval( "namespace IPS\\cms\\extensions\\core\\EditorLocations; class Records{$databaseId} extends \\IPS\\cms\\extensions\\core\\EditorLocations\\Records { public static \$customDatabaseId = $databaseId; }" );
|
||||
}
|
||||
} );
|
||||
@@ -217,17 +233,14 @@ class _Application extends \IPS\Application
|
||||
'tab' => 'cms',
|
||||
'controller' => 'fields',
|
||||
'do' => 'manage&database_id=' . $database['id'],
|
||||
'restriction' => 'fields_manage'
|
||||
'restriction' => 'cms_fields_manage'
|
||||
);
|
||||
|
||||
\IPS\Member::loggedIn()->language()->words[ 'menu__cms_databases_records_' . $database['id'] ] = \IPS\Member::loggedIn()->language()->addToStack('content_db_' . $database['id']);
|
||||
\IPS\Member::loggedIn()->language()->words[ 'menu__cms_databases_categories_' . $database['id'] ] = ' ' . \IPS\Member::loggedIn()->language()->addToStack('menu__cms_categories');
|
||||
\IPS\Member::loggedIn()->language()->words[ 'menu__cms_databases_fields_' . $database['id'] ] = ' ' . \IPS\Member::loggedIn()->language()->addToStack('menu__cms_fields');
|
||||
}
|
||||
|
||||
/* Check for, and build IN_DEV templates if required */
|
||||
$this->_writeInDevTemplates();
|
||||
|
||||
|
||||
return $menu;
|
||||
}
|
||||
|
||||
@@ -329,18 +342,18 @@ class _Application extends \IPS\Application
|
||||
) );
|
||||
|
||||
/* Needs to be added before createDatabase is called */
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_" . $database->id, "Articles" );
|
||||
\IPS\Lang::saveCustom( 'cms', "module__cms_records" . $database->id, "Articles" );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_" . $database->id . '_desc', "Our website articles" );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_sl_" . $database->id, 'article' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_pl_" . $database->id, 'articles' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_su_" . $database->id, 'Article' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_pu_" . $database->id, 'Articles' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_ia_" . $database->id, 'an article' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_sl_" . $database->id . '_pl', 'Articles' );
|
||||
\IPS\Lang::saveCustom( 'cms', "cms_create_menu_records_" . $database->id, 'Article in Articles' );
|
||||
\IPS\Lang::saveCustom( 'cms', "digest_area_records" . $database->id, "Articles" );
|
||||
\IPS\Lang::saveCustom( 'cms', "cms_records" . $database->id . '_pl', 'Article' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_" . $database->id, "Статьи" );
|
||||
\IPS\Lang::saveCustom( 'cms', "module__cms_records" . $database->id, "Статьи" );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_" . $database->id . '_desc', "Статьи нашего сайта" );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_sl_" . $database->id, 'статья' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_pl_" . $database->id, 'статьи' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_su_" . $database->id, 'Статья' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_pu_" . $database->id, 'Статьи' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_ia_" . $database->id, 'статья' );
|
||||
\IPS\Lang::saveCustom( 'cms', "content_db_lang_sl_" . $database->id . '_pl', 'Статьи' );
|
||||
\IPS\Lang::saveCustom( 'cms', "cms_create_menu_records_" . $database->id, 'Запись в Статьи' );
|
||||
\IPS\Lang::saveCustom( 'cms', "digest_area_records" . $database->id, "Статьи" );
|
||||
\IPS\Lang::saveCustom( 'cms', "cms_records" . $database->id . '_pl', 'Статья' );
|
||||
|
||||
try
|
||||
{
|
||||
@@ -350,7 +363,7 @@ class _Application extends \IPS\Application
|
||||
{
|
||||
$database->delete();
|
||||
|
||||
\IPS\Log::i( LOG_ERR )->write( $ex, 'pages_create_db_error' );
|
||||
\IPS\Log::log( $ex, 'pages_create_db_error' );
|
||||
|
||||
throw new \LogicException( $ex->getMessage() );
|
||||
}
|
||||
@@ -359,8 +372,9 @@ class _Application extends \IPS\Application
|
||||
$database->revisions = 1;
|
||||
$database->search = 1;
|
||||
$database->comment_bump = 1; # Just new comments bump record
|
||||
$database->rss = 1;
|
||||
$database->fixed_field_perms = array( 'record' => array( 'visible' => true, 'perm_view' => '*', 'perm_2' => '*', 'perm_3' => '*' ) );
|
||||
$database->rss = 10;
|
||||
$database->record_count = 1;
|
||||
$database->fixed_field_perms = array( 'record_image' => array( 'visible' => true, 'perm_view' => '*', 'perm_2' => '*', 'perm_3' => '*' ) );
|
||||
$database->options['comments'] = 1;
|
||||
$database->field_sort = 'primary_id_field';
|
||||
$database->field_direction = 'asc';
|
||||
@@ -372,18 +386,16 @@ class _Application extends \IPS\Application
|
||||
$comment = 'IPS\cms\Records\Comment' . $database->id;
|
||||
$container = 'IPS\cms\Categories' . $database->id;
|
||||
|
||||
$link = (string) \IPS\Http\Url::ips('pages_docs');
|
||||
$link = (string) \IPS\Http\Url::ips('docs/pages_docs');
|
||||
|
||||
$content = <<<EOF
|
||||
<p>Welcome to Pages!</p>
|
||||
<p>Pages extends your site with custom content management designed especially for communities.
|
||||
Create brand new sections of your community using features like blocks, databases and articles,
|
||||
pulling in data from other areas of your community.</p>
|
||||
<p>Create custom pages in your community using our drag'n'drop, WYSIWYG editor.
|
||||
Build blocks that pull in all kinds of data from throughout your community to create dynamic pages,
|
||||
or use one of the ready-made widgets we include with the IPS Community Suite.</p>
|
||||
<p>Добро пожаловать в приложение Страницы!</p>
|
||||
<p>Приложение Страницы призвано расширить ваш сайт путём гибкого управления контентом, разработанное специально для сообществ.
|
||||
Создайте совершенно новые разделы вашего сообщества, используя такие особенности, как блоки, базы данных и статьи, и внедряя дополнительную информацию из других разделов сообщества.</p>
|
||||
<p>Создавайте собственные страницы, используя наш удобный WYSIWYG редактор.
|
||||
Создавайте блоки, которые отображают все виды информации из всего вашего сообщества для создания динамических страниц, или используйте стандартные готовые блоки, присутствующие в IPS Community Suite.</p>
|
||||
<p><br></p>
|
||||
<p><a href="{$link}">View our Pages documentation</a></p>
|
||||
<p><a href="{$link}">Просмотреть документацию приложения</a></p>
|
||||
EOF;
|
||||
|
||||
$titleField = 'field_' . $database->field_title;
|
||||
@@ -393,7 +405,7 @@ EOF;
|
||||
$member = \IPS\Member::loggedIn()->member_id ? \IPS\Member::loggedIn() : \IPS\Member::load(1);
|
||||
|
||||
$record = $item::createItem( $member, \IPS\Request::i()->ipAddress(), \IPS\DateTime::ts( time() ), $category, FALSE );
|
||||
$record->$titleField = "Welcome to Pages";
|
||||
$record->$titleField = "Добро пожаловать в Страницы";
|
||||
$record->$contentField = $content;
|
||||
$record->save();
|
||||
|
||||
@@ -404,8 +416,8 @@ EOF;
|
||||
|
||||
/* Create the page */
|
||||
$pageValues = array(
|
||||
'page_name' => "Articles",
|
||||
'page_title' => "Articles",
|
||||
'page_name' => "Статьи",
|
||||
'page_title' => "Статьи",
|
||||
'page_seo_name' => "articles.html",
|
||||
'page_folder_id' => 0,
|
||||
'page_ipb_wrapper' => 1,
|
||||
@@ -413,11 +425,25 @@ EOF;
|
||||
'page_type' => 'builder',
|
||||
'page_template' => 'page_builder__single_column__page_page_builder_single_column'
|
||||
);
|
||||
|
||||
$page = \IPS\cms\Pages\Page::createFromForm( $pageValues, 'html' );
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
$page = \IPS\cms\Pages\Page::createFromForm( $pageValues, 'html' );
|
||||
}
|
||||
catch( \Exception $ex )
|
||||
{
|
||||
\IPS\Log::log( $ex, 'pages_create_page_error' );
|
||||
}
|
||||
|
||||
$page->setAsDefault();
|
||||
|
||||
\IPS\Db::i()->replace( 'core_permission_index', array(
|
||||
'app' => 'cms',
|
||||
'perm_type' => 'pages',
|
||||
'perm_type_id' => $page->id,
|
||||
'perm_view' => '*'
|
||||
) );
|
||||
|
||||
$database->page_id = $page->id;
|
||||
$database->save();
|
||||
|
||||
@@ -427,12 +453,12 @@ EOF;
|
||||
$buttonUrl = (string) \IPS\Http\Url::internal( 'applications/cms/interface/default/block_arrow.png', 'none' );
|
||||
$defaultContent = <<<EOF
|
||||
<p>
|
||||
<strong>Welcome to Pages!</strong>
|
||||
<strong>Добро пожаловать в приложение Страницы!</strong>
|
||||
</p>
|
||||
<p>
|
||||
To get started, make sure you are logged in and click the arrow on the left hand side <img src="{$buttonUrl}"> to expand the block manager.
|
||||
Для начала, убедитесь, что вы авторизовались и нажмите на стрелку с правой стороны <img src="{$buttonUrl}"> , чтобы развернуть менеджер блоков.
|
||||
<br>
|
||||
You can move, add and edit blocks without the need for complex coding!
|
||||
Вы можете перемещать, добавлять и редактировать блоки без необходимости программирования!
|
||||
</p>
|
||||
EOF;
|
||||
|
||||
@@ -462,7 +488,7 @@ EOF;
|
||||
/* Add block container (custom)*/
|
||||
$container = new \IPS\cms\Blocks\Container;
|
||||
$container->parent_id = 0;
|
||||
$container->name = "Custom";
|
||||
$container->name = "Дополнительно";
|
||||
$container->type = 'block';
|
||||
$container->key = 'block_custom';
|
||||
$container->save();
|
||||
@@ -470,7 +496,7 @@ EOF;
|
||||
/* Add block container (plugins) */
|
||||
$container = new \IPS\cms\Blocks\Container;
|
||||
$container->parent_id = 0;
|
||||
$container->name = "Plugins";
|
||||
$container->name = "Плагины";
|
||||
$container->type = 'block';
|
||||
$container->key = 'block_plugins';
|
||||
$container->save();
|
||||
@@ -587,17 +613,44 @@ EOF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the IN_DEV templates to disk
|
||||
* Default front navigation
|
||||
*
|
||||
* @return void
|
||||
* @code
|
||||
|
||||
// Each item...
|
||||
array(
|
||||
'key' => 'Example', // The extension key
|
||||
'app' => 'core', // [Optional] The extension application. If ommitted, uses this application
|
||||
'config' => array(...), // [Optional] The configuration for the menu item
|
||||
'title' => 'SomeLangKey', // [Optional] If provided, the value of this language key will be copied to menu_item_X
|
||||
'children' => array(...), // [Optional] Array of child menu items for this item. Each has the same format.
|
||||
)
|
||||
|
||||
return array(
|
||||
'rootTabs' => array(), // These go in the top row
|
||||
'browseTabs' => array(), // These go under the Browse tab on a new install or when restoring the default configuraiton; or in the top row if installing the app later (when the Browse tab may not exist)
|
||||
'browseTabsEnd' => array(), // These go under the Browse tab after all other items on a new install or when restoring the default configuraiton; or in the top row if installing the app later (when the Browse tab may not exist)
|
||||
'activityTabs' => array(), // These go under the Activity tab on a new install or when restoring the default configuraiton; or in the top row if installing the app later (when the Activity tab may not exist)
|
||||
)
|
||||
* @endcode
|
||||
* @return array
|
||||
*/
|
||||
public function _writeInDevTemplates()
|
||||
public function defaultFrontNavigation()
|
||||
{
|
||||
if ( \IPS\IN_DEV )
|
||||
{
|
||||
//\IPS\cms\Theme::writeInDev();
|
||||
}
|
||||
$browseTabs = array();
|
||||
|
||||
try
|
||||
{
|
||||
$defaultPage = \IPS\cms\Pages\Page::getDefaultPage();
|
||||
$browseTabs[] = array( 'key' => 'Pages', 'config' => array( 'menu_content_page' => $defaultPage->id, 'menu_title_page_type' => 0 ) );
|
||||
}
|
||||
catch( \OutOfRangeException $ex ) { }
|
||||
|
||||
return array(
|
||||
'rootTabs' => array(),
|
||||
'browseTabs' => $browseTabs,
|
||||
'browseTabsEnd' => array(),
|
||||
'activityTabs' => array()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user