Version 3.0.5

This commit is contained in:
Neo committed 2025-12-19 00:31:03 -08:00
1 parent 19b38c7c74
commit 1d4720f3e2
3755 files changed
+508378 -664541

No files matched your search

@@ -0,0 +1,77 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Library: Handle public session data
* Last Updated: $Date: 2009-08-10 17:08:53 -0400 (Mon, 10 Aug 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 12th March 2002
* @version $Revision: 5009 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
class publicSessions__portal
{
/**
* Return session variables for this application
*
* current_appcomponent, current_module and current_section are automatically
* stored. This function allows you to add specific variables in.
*
* @access public
* @author Matt Mecham
* @return array
*/
public function getSessionVariables()
{
return array();
}
/**
* Parse/format the online list data for the records
*
* @access public
* @author Brandon Farber
* @param array Online list rows to check against
* @return array Online list rows parsed
*/
public function parseOnlineEntries( $rows )
{
if( !is_array($rows) OR !count($rows) )
{
return $rows;
}
$final = array();
//-----------------------------------------
// Extract the topic/forum data
//-----------------------------------------
foreach( $rows as $row )
{
if( $row['current_appcomponent'] == 'portal' )
{
$row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['WHERE_portal'];
}
$final[ $row['id'] ] = $row;
}
return $final;
}
}
@@ -0,0 +1,57 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Core variables for portal
* Last Updated: $LastChangedDate: 2009-12-07 21:57:46 -0500 (Mon, 07 Dec 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 5529 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* Array for holding reset information
*
* Populate the $_RESET array and ipsRegistry will do the rest
*/
$_RESET = array();
###### Redirect requests... ######
if( ! $_REQUEST['module'] AND $_REQUEST['app'] == 'portal' )
{
$_RESET['module'] = 'portal';
}
$_LOAD = array();
$_LOAD['portal'] = 1;
$_LOAD['emoticons'] = 1;
$_LOAD['bbcode'] = 1;
$_LOAD['badwords'] = 1;
$_LOAD['calendars'] = 1;
$CACHE['portal'] = array(
'array' => 1,
'allow_unload' => 0,
'default_load' => 1,
'recache_file' => IPSLib::getAppDir( 'portal' ) . '/modules_admin/portal/portal.php',
'recache_class' => 'admin_portal_portal_portal',
'recache_function' => 'portalRebuildCache'
);
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,76 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal plugin: portal
* Last Updated: $Date: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st march 2002
* @version $Revision: 4948 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* This file must be named {file_name_minus_php}-cfg.php
*
* Please see each variable for more information
* $PORTAL_CONFIG is OK for each file, do not change
* this array name.
*/
$PORTAL_CONFIG = array();
/**
* Main plug in title
*
*/
$PORTAL_CONFIG['pc_title'] = 'Плагин портала';
/**
* Plug in mini description
*
*/
$PORTAL_CONFIG['pc_desc'] = "Блок навигации и дружественных сайтов";
/**
* Keyword for settings. This is the keyword
* entered into ibf_conf_settings_titles -> conf_title_keyword
* Can be left blank.
* PLEASE stick to the naming convention when entering a setting
* keyword: portal_{file_name_minus_php} This will prevent
* other keyword clashes. Likewise, when creating settings, choose
* NOT to cache them (they will be loaded at run time) and always
* prefix with {file_name_minus_php}_setting_key - for example
* If you had a setting called "export_forums" then please name it
* "recent_topics_export_forums". This will be available in
* $this->settings['recent_topics_export_forums'] in the
* main module.
*/
$PORTAL_CONFIG['pc_settings_keyword'] = "ipbportal";
/**
* Exportable tags key must be in the naming format of:
* {file_name_minus_php}-tag. The value *MUST* be the function
* which it corresponds to. For example:
* 'recent_topics_last_x' => 'recent_topics_last_x'
* The portal will look for function 'recent_topics_last_x' in
* module "sources/portal_plugins/recent_topics.php" when it parses
* the tag <!--::recent_topics_last_x::-->
*
* @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION );
*/
$PORTAL_CONFIG['pc_exportable_tags']['portal_sitenav'] = array( 'portal_sitenav', 'Вывести блок навигации' );
$PORTAL_CONFIG['pc_exportable_tags']['portal_affiliates'] = array( 'portal_affiliates', 'Вывести блок дружественных сайтов' );
@@ -0,0 +1,101 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal plugin: portal
* Last Updated: $Date: 2009-02-04 15:03:36 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st march 2002
* @version $Revision: 3887 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class ppi_portal extends public_portal_portal_portal
{
/**
* Initialize module
*
* @access public
* @return void
*/
public function init()
{
}
/**
* Show the site navgiational block
*
* @access public
* @return string HTML content to replace tag with
*/
public function portal_sitenav()
{
if ( ! $this->settings['csite_nav_show'] )
{
return;
}
$links = array();
$raw_nav = $this->settings['csite_nav_contents'];
foreach( explode( "\n", $raw_nav ) as $l )
{
$l = str_replace( "&#039;", "'", $l );
$l = str_replace( "&quot;", '"', $l );
$l = str_replace( '{board_url}', $this->settings['base_url'], $l );
preg_match( "#^(.+?)\[(.+?)\]$#is", trim($l), $matches );
$matches[1] = trim($matches[1]);
$matches[2] = trim($matches[2]);
if ( $matches[1] and $matches[2] )
{
$matches[1] = str_replace( '&', '&amp;', str_replace( '&amp;', '&', $matches[1] ) );
$links[] = $matches;
}
}
if( !count($links) )
{
return;
}
return $this->registry->getClass('output')->getTemplate('portal')->siteNavigation( $links );
}
/**
* Show the affiliates block
*
* @access public
* @return string HTML content to replace tag with
*/
public function portal_affiliates()
{
if ( ! $this->settings['csite_fav_show'] )
{
return;
}
$this->settings['csite_fav_contents'] = str_replace( "&#039;", "'", $this->settings['csite_fav_contents'] );
$this->settings['csite_fav_contents'] = str_replace( "&quot;", '"', $this->settings['csite_fav_contents'] );
$this->settings['csite_fav_contents'] = str_replace( '{board_url}', $this->settings['base_url'], $this->settings['csite_fav_contents'] );
return $this->registry->getClass('output')->getTemplate('portal')->affiliates();
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,27 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal default section
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
**/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'portal';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,353 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* IP.Portal
* Last Updated: $Date: 2009-10-01 10:02:08 -0400 (Thu, 01 Oct 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st April 2004
* @version $Revision: 5190 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly.";
exit();
}
class admin_portal_portal_portal extends ipsCommand
{
/**
* Portal objects
*
* @access private
* @var array
*/
private $portal_objects = array();
/**
* Skin object
*
* @access private
* @var object Skin templates
*/
private $html;
/**
* Shortcut for url
*
* @access private
* @var string URL shortcut
*/
private $form_code;
/**
* Shortcut for url (javascript)
*
* @access private
* @var string JS URL shortcut
*/
private $form_code_js;
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_portal' );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=portal&amp;section=portal';
$this->form_code_js = $this->html->form_code_js = 'module=portal&section=portal';
//-----------------------------------------
// Load Language
//-----------------------------------------
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'admin_portal' ) );
//-------------------------------
// Get portal objects
//-------------------------------
$this->_getPortalObjects();
//-----------------------------------------
// What to do?
//-----------------------------------------
switch($this->request['do'])
{
case 'portal_settings':
$this->_portalSettings();
break;
case 'portal_viewtags':
$this->_portalViewTags();
break;
case 'manage':
default:
$this->_portalList();
break;
}
//-----------------------------------------
// Pass to CP output hander
//-----------------------------------------
$this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper();
$this->registry->getClass('output')->sendOutput();
}
/**
* Rebuild portal cache
*
* @access public
* @return void
*/
public function portalRebuildCache()
{
$cache = array();
if ( ! is_array( $this->portal_objects ) or ! count( $this->portal_objects ) )
{
$this->_getPortalObjects();
}
$cache = $this->portal_objects;
$this->cache->setCache( 'portal', $cache, array( 'array' => 1 ) );
}
/**
* View portal tags (settings)
*
* @access private
* @return void [Outputs to screen]
*/
private function _portalViewTags()
{
//-------------------------------
// INIT
//-------------------------------
$pc_key = IPSText::alphanumericalClean( $this->request['pc_key'] );
foreach( $this->portal_objects as $key => $data )
{
if( $key == $pc_key )
{
$file = $data['_cfg_location'];
}
}
//-------------------------------
// Check
//-------------------------------
if ( ! $pc_key OR ! file_exists( $file ) )
{
$this->registry->output->global_message = $this->lang->words['error_no_key'];
$this->_portalList();
return;
}
//-------------------------------
// Grab config file
//-------------------------------
require( $file );
$this->registry->output->html .= $this->html->portal_pop_overview( $PORTAL_CONFIG['pc_title'], $PORTAL_CONFIG['pc_exportable_tags'] );
//-------------------------------
// Print
//-------------------------------
$this->registry->output->printPopupWindow();
}
/**
* Show settings for the portal
*
* @access private
* @return void [Outputs to screen]
*/
private function _portalSettings()
{
//-------------------------------
// INIT
//-------------------------------
$pc_key = IPSText::alphanumericalClean( $this->request['pc_key'] );
foreach( $this->portal_objects as $key => $data )
{
if( $key == $pc_key )
{
$file = $data['_cfg_location'];
}
}
//-------------------------------
// Check
//-------------------------------
if ( ! $pc_key OR ! file_exists( $file ) )
{
$this->registry->output->global_message = $this->lang->words['error_no_key'];
$this->_portalList();
return;
}
//-------------------------------
// Grab config file
//-------------------------------
require ( $file );
if ( ! $PORTAL_CONFIG['pc_settings_keyword'] )
{
$this->registry->output->global_message = $this->lang->words['error_no_settings'];
$this->_portalList();
return;
}
//-------------------------------
// Grab, init and load settings
//-------------------------------
require_once( IPSLib::getAppDir( 'core' ).'/modules_admin/tools/settings.php' );
$settings = new admin_core_tools_settings();
$settings->makeRegistryShortcuts( $this->registry );
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
$settings->html = $this->registry->output->loadTemplate( 'cp_skin_tools', 'core' );
$settings->form_code = $settings->html->form_code = 'module=tools&amp;section=settings';
$settings->form_code_js = $settings->html->form_code_js = 'module=tools&section=settings';
$this->request['conf_title_keyword'] = $PORTAL_CONFIG['pc_settings_keyword'];
$settings->return_after_save = $this->settings['base_url'] . $this->form_code . '&do=portal_settings&pc_key='.$pc_key;
$settings->base_nav_url = $this->settings['base_url'] . $this->form_code . '&do=portal_settings&pc_key='.$pc_key;
$settings->_viewSettings();
}
/**
* List the portal objects
*
* @access private
* @return void [Outputs to screen]
*/
private function _portalList()
{
$this->registry->output->html .= $this->html->portal_overview( $this->portal_objects );
//-------------------------------
// Update cache
//-------------------------------
$this->portalRebuildCache();
}
/**
* Get the portal objects from disk
*
* @access private
* @return void [Outputs to screen]
*/
private function _getPortalObjects()
{
//-------------------------------
// Loop over each application
//-------------------------------
foreach( ipsRegistry::$applications as $_app_dir => $app_data )
{
//-------------------------------
// Get the path to the plugins
//-------------------------------
$path = IPSLib::getAppDir( $_app_dir ) . '/extensions/portalPlugins';
//-------------------------------
// Does it exist?
//-------------------------------
if( !is_dir($path) OR !file_exists($path) )
{
continue;
}
//-------------------------------
// Open the dir and grab configs
//-------------------------------
try
{
foreach( new DirectoryIterator($path) as $file )
{
if( $file->isDot() OR $file->isDir() )
{
continue;
}
//-------------------------------
// This is a file...
//-------------------------------
if( $file->isFile() )
{
preg_match( "#^(.*)-cfg\.php$#", $file->getFilename(), $matches );
//-------------------------------
// And it's a conf file, yahhh!
//-------------------------------
if ( $matches[0] AND $matches[1] )
{
$PORTAL_CONFIG = array();
require_once( $file->getPathname() );
if ( is_array( $PORTAL_CONFIG ) AND count( $PORTAL_CONFIG ) )
{
$PORTAL_CONFIG['pc_key'] = $matches[1];
$PORTAL_CONFIG['_cfg_location'] = str_replace( '\\', '/', $file->getPathname() );
$PORTAL_CONFIG['_file_location'] = str_replace( '\\', '/', str_replace( '-cfg', '', $file->getPathname() ) );
$this->portal_objects[ $matches[1] ] = $PORTAL_CONFIG;
}
}
}
}
} catch ( Exception $e ) {}
}
if ( ! count($this->portal_objects) )
{
$this->registry->output->global_message = $this->lang->words['error_no_dir'];
return;
}
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<tabitems>
<item>
<title>Портал</title>
<subitems>
<subitem>
<subitemtitle>Управление порталом</subitemtitle>
<subsection>portal</subsection>
<subitemurl></subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
</tabitems>
</menu>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
</group>
</permissions>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,27 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal default section
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
**/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'portal';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,266 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* IP.Portal
* Last Updated: $Date: 2009-12-07 21:57:46 -0500 (Mon, 07 Dec 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st April 2004
* @version $Revision: 5529 $
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
class public_portal_portal_portal extends ipsCommand
{
/**
* Array of portal objects
*
* @access protected
* @var array Registered portal objects
*/
protected $portal_object = array();
/**
* Array of replacement tags
*
* @access protected
* @var array Replacement tags
*/
protected $replace_tags = array();
/**
* Array of tags to module...
*
* @access protected
* @var array Tags => Modules mapping
*/
protected $remap_tags_module = array();
/**
* Array of tags to function...
*
* @access protected
* @var array Tags => Function mapping
*/
protected $remap_tags_function = array();
/**
* Array of module objects
*
* @access protected
* @var array Module objects
*/
protected $module_objects = array();
/**
* Basic template, replaced as needed
*
* @access protected
* @var string Basic skin template to replace
*/
protected $template = array();
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// INIT
//-----------------------------------------
$conf_groups = array();
$found_tags = array();
$found_modules = array();
//-----------------------------------------
// Make sure the portal is installed an enabled
//-----------------------------------------
if( ! IPSLib::appIsInstalled( 'portal' ) )
{
$this->registry->output->showError( 'no_permission', 1076 );
}
//-----------------------------------------
// Get settings...
//-----------------------------------------
foreach( $this->cache->getCache('portal') as $portal_data )
{
if ( $portal_data['pc_settings_keyword'] )
{
$conf_groups[] = "'" . $portal_data['pc_settings_keyword'] . "'";
}
//-----------------------------------------
// Remap tags
//-----------------------------------------
if ( is_array( $portal_data['pc_exportable_tags'] ) AND count( $portal_data['pc_exportable_tags'] ) )
{
foreach( $portal_data['pc_exportable_tags'] as $tag => $tag_data )
{
$this->remap_tags_function[ $tag ] = $tag_data[0];
$this->remap_tags_module[ $tag ] = $portal_data['pc_key'];
}
}
}
//-----------------------------------------
// Now really get them...
//-----------------------------------------
$_where = (is_array($conf_groups) AND count($conf_groups)) ? 't.conf_title_keyword IN(' . implode( ",", $conf_groups ) . ") OR " : '';
$this->DB->build( array( 'select' => 'c.conf_key, c.conf_value, c.conf_default',
'from' => array( 'core_sys_conf_settings' => 'c' ),
'where' => $_where . "c.conf_key LIKE 'csite%'",
'add_join' => array(
array(
'select' => 't.conf_title_id, t.conf_title_keyword',
'from' => array( 'core_sys_settings_titles' => 't' ),
'where' => 'c.conf_group=t.conf_title_id',
'type' => "left"
)
),
) );
$this->DB->execute();
//-----------------------------------------
// Set 'em up
//-----------------------------------------
while( $r = $this->DB->fetch() )
{
$this->settings[ $r['conf_key']] = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default'] ;
}
//-----------------------------------------
// Get global skin and language files
//-----------------------------------------
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'public_portal' ) );
//-----------------------------------------
// Assign skeletal template ma-doo-bob
//-----------------------------------------
$this->template = $this->registry->getClass('output')->getTemplate('portal')->skeletonTemplate();
//-----------------------------------------
// Grab all special tags
//-----------------------------------------
preg_match_all( "#<!--\:\:(.+?)\:\:-->#", $this->template, $match );
//-----------------------------------------
// Assign functions
//-----------------------------------------
for ( $i=0, $m=count($match[0]); $i < $m; $i++ )
{
$tag = $match[1][$i];
if ( $this->remap_tags_module[ $tag ] )
{
$found_tags[ $tag ] = 1;
if ( $this->remap_tags_module[ $tag ])
{
$found_modules[ $this->remap_tags_module[ $tag ] ] = 1;
}
}
}
//-----------------------------------------
// Require modules...
//-----------------------------------------
if ( is_array( $found_modules ) AND count( $found_modules ) )
{
foreach( $found_modules as $mod_name => $pointless )
{
if ( ! is_object( $this->module_objects[ $mod_name ] ) )
{
if ( file_exists( $this->caches['portal'][ $mod_name ]['_file_location'] ) )
{
require_once( $this->caches['portal'][ $mod_name ]['_file_location'] );
$constructor = 'ppi_' . $mod_name;
$this->module_objects[ $mod_name ] = new $constructor;
$this->module_objects[ $mod_name ]->makeRegistryShortcuts( $this->registry );
$this->module_objects[ $mod_name ]->init();
}
}
}
}
//-----------------------------------------
// Get the tag replacements...
//-----------------------------------------
if ( is_array( $found_tags ) AND count( $found_tags ) )
{
foreach( $found_tags as $tag_name => $even_more_pointless )
{
$mod_obj = $this->remap_tags_module[ $tag_name ];
$fun_obj = $this->remap_tags_function[ $tag_name ];
if ( method_exists( $this->module_objects[ $mod_obj ], $fun_obj ) )
{
$this->replace_tags[ $tag_name ] = $this->module_objects[ $mod_obj ]->$fun_obj();
continue;
}
}
}
$this->_do_output();
}
/**
* Internal do output method. Extend class and overwrite method if you need to modify this functionality.
*
* @access protected
* @return void
*/
protected function _do_output()
{
//-----------------------------------------
// SITE REPLACEMENTS
//-----------------------------------------
foreach( $this->replace_tags as $sbk => $sbv )
{
$this->template = str_replace( "<!--::" . $sbk . "::-->", $sbv, $this->template );
}
//-----------------------------------------
// Pass to print...
//-----------------------------------------
$this->registry->output->addContent( $this->template );
$this->registry->output->setTitle( $this->settings['csite_title'] );
$this->registry->output->addNavigation( $this->settings['csite_title'], 'app=portal' );
$this->registry->output->sendOutput();
exit();
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,142 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal skin file
* Last Updated: $Date: 2009-06-30 12:06:12 -0400 (Tue, 30 Jun 2009) $
*
* @author $Author: josh $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 4829 $
*/
class cp_skin_portal extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Portal tag details
*
* @access public
* @param string Page title
* @param array Available tags
* @return string HTML
*/
public function portal_pop_overview( $title, $tags ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='acp-box'>
<h3>{$this->lang->words['portal_pop_tags']} {$title}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<th width='30%'>{$this->lang->words['portal_pop_name']}</th>
<th width='70%'>{$this->lang->words['portal_pop_desc']}</th>
</tr>
EOF;
if ( is_array( $tags ) AND count( $tags ) )
{
foreach( $tags as $tag => $tag_data )
{
$IPBHTML .= <<<EOF
<tr>
<td>&lt;!--::<strong>{$tag}</strong>::--&gt;</td>
<td><div class='desctext'>{$tag_data[1]}</td>
</tr>
EOF;
}
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Portal overview
*
* @access public
* @param array Available portal objects
* @return string HTML
*/
public function portal_overview( $objects ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['main_title']}</h2>
</div>
<div class='acp-box'>
<h3>{$this->lang->words['portal_main_title']}</h3>
<table class='alternate_rows' width='100%'>
<tr>
<th width='1%'>&nbsp;</th>
<th width='94%'>{$this->lang->words['portal_main_key']}</th>
<th width='5%'>&nbsp;</th>
</tr>
EOF;
if ( is_array( $objects ) AND count( $objects ) )
{
foreach( $objects as $key => $data )
{
$IPBHTML .= <<<EOF
<tr>
<td><img src='{$this->settings['skin_acp_url']}/images/menu.png' border='0' alt='{$this->lang->words['a_options']}' class='ipd' /></td>
<td><strong>{$data['pc_title']}</strong><div class='desctext'>{$data['pc_desc']}</td>
<td>
<img id="menu{$data['pc_key']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' border='0' alt='{$this->lang->words['a_options']}' class='ipbmenu' />
<ul class='acp-menu' id='menu{$data['pc_key']}_menucontent'>
EOF;
//startif
if ( $data['pc_settings_keyword'] )
{
$IPBHTML .= <<<EOF
<li class='icon edit'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=portal_settings&amp;pc_key={$data['pc_key']}'>{$this->lang->words['portal_row_menu_settings']}</a></li>
EOF;
}//endif
$IPBHTML .= <<<EOF
<li class='icon export'><a href='#' onclick="return acp.openWindow('{$this->settings['base_url']}&{$this->form_code}&amp;do=portal_viewtags&amp;pc_key={$data['pc_key']}', '{$data['pc_key']}', 400,200)">{$this->lang->words['portal_row_menu_view_tags']}</a></li>
</ul>
</td>
</tr>
EOF;
}
}
$IPBHTML .= <<<EOF
</table>
</div>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<languageexport>
<languagegroup>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_row_menu_settings</word_key>
<word_default>Edit Settings...</word_default>
<word_custom>Настройки</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_row_menu_view_tags</word_key>
<word_default>View Exportable Tags...</word_default>
<word_custom>Теги</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_pop_desc</word_key>
<word_default>Tag Description</word_default>
<word_custom>Описание тега</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_pop_name</word_key>
<word_default>Tag Name</word_default>
<word_custom>Имя</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_pop_tags</word_key>
<word_default>Exportable Tags:</word_default>
<word_custom>Теги</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_main_key</word_key>
<word_default>Plug-in Title</word_default>
<word_custom>Название плагина</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>portal_main_title</word_key>
<word_default>Registered Portal Plug-ins</word_default>
<word_custom>Зарегистрированные плагины</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>error_no_key</word_key>
<word_default>There is no matching plug-in for the key used to find it.</word_default>
<word_custom>Не удалось найти плагин с такими данными</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>error_no_settings</word_key>
<word_default>There are no settings for this plug-in</word_default>
<word_custom>У этого плагина нет настроек</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>error_no_dir</word_key>
<word_default><![CDATA[The directory 'sources/portal_plugins' does not exist. Create it and try again.]]></word_default>
<word_custom><![CDATA[Директории 'sources/portal_plugins' не существует. Попробуйте ее создать и повторить действие снова.]]></word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>admin_portal</word_pack>
<word_key>main_title</word_key>
<word_default>Manage Portal Plug-ins</word_default>
<word_custom>Управление плагинами портала</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
</languagegroup>
</languageexport>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<information>
<data>
<name>Портал</name>
<public_name>Портал</public_name>
<author>Invision Power Services, Inc.</author>
<description></description>
<disabledatinstall>1</disabledatinstall>
<ipskey>9fef8fc6c7dfc4716f0cfd698b48e3c9</ipskey>
<templategroups>
<template match="exact">skin_portal</template>
</templategroups>
</data>
</information>
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="portal" templategroups="a:1:{s:11:&quot;skin_portal&quot;;s:5:&quot;exact&quot;;}">
<templategroup group="skin_portal">
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box'>
{$content}
</div>
<br />]]></template_content>
<template_name>calendarWrap</template_name>
<template_data><![CDATA[$content=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> {$this->lang->words['discuss_title']}</h3>
<ul class='hfeed'>
{parse striping="recent_topics" classes="row1,row2 altrow"}
<foreach loop="posts:$posts as $result">
<li class='hentry {parse striping="recent_topics"}'><a href='{parse url="showtopic={$result['tid']}" base="public" template="showtopic" seotitle="{$result['title_seo']}"}' rel='bookmark' title='{$this->lang->words['view_topic']}'>{$result['title_display']}</a> {$this->lang->words['recent_by']} <address class="author vcard"><a class="url fn" href="{parse url="showuser={$result['member_id']}" base="public" template="showuser" seotitle="{$result['members_seo_name']}"}" title='{$this->lang->words['view_profile']}'>{$result['members_display_name']}</a>{parse template="user_popup" group="global" params="$result['member_id']"}</address> <span class='date'>(<abbr class="published" title="{parse expression="date( 'c', $result['post_date'] )"}">{$result['date']}</abbr>)</span>
<br />{$this->lang->words['recent_read']}: {parse format_number="$result['views']"} &nbsp; {$this->lang->words['recent_comments']}: {parse format_number="$result['posts']"}</li>
</foreach>
</ul>
</div>
<br />]]></template_content>
<template_name>latestPosts</template_name>
<template_data>$posts=array()</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> <a href='{parse url="showtopic={$tid}" base="public"}'>{$this->lang->words['poll_title']}</a></h3>
{$content}
</div>
<br />]]></template_content>
<template_name>pollWrapper</template_name>
<template_data><![CDATA[$content="",$tid=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[{parse js_module="topic"}
<foreach loop="articles:$articles as $entry">
<h2 class='maintitle'><a href='{parse url="showtopic={$entry['tid']}" base="public" seotitle="{$entry['title_seo']}" template="showtopic"}'>{$entry['title']}</a></h2>
<div class='generic_bar'></div>
<div class='post_block first hentry no_sidebar' id='announce_id_{$announce['announce_id']}'>
<div class='post_wrap'>
<if test="authorIsMember:|:$entry['member_id']">
<h3>
<else />
<h3 class='guest'>
</if>
<if test="authorMemberLink:|:$entry['member_id']">
<if test="authorIsOnline:|:$entry['_online']">
{parse replacement="user_online"}
<else />
{parse replacement="user_offline"}
</if> &nbsp;
<address class="author vcard"><a class="url fn" href='{parse url="showuser={$entry['member_id']}" template="showuser" seotitle="{$entry['members_seo_name']}" base="public"}'>{$entry['members_display_name']}</a>{parse template="user_popup" group="global" params="$entry['member_id']"}</address>
<else />
{$entry['members_display_name']}
</if>
- {$entry['date']} - {parse format_number="$entry['posts']"} {$this->lang->words['comments_suffix']}
</h3>
<div class='post_body'>
<div class='post entry-content'>
{$entry['post']}
<!--IBF.ATTACHMENT_{$entry['pid']}-->
</div>
</div>
<div class='moderation_bar rounded'>
<if test="entryHasPosts:|:$entry['posts']">
{$this->lang->words['read']} {parse format_number="$entry['views']"} {$this->lang->words['times_last']} <a href='{parse url="showtopic={$entry['tid']}&amp;view=getlastpost" base="public" seotitle="{$entry['title_seo']}" template="showtopic"}'>{$this->lang->words['article_comment']}</a> {$this->lang->words['by']} <if test="entryLastPoster:|:$entry['last_poster_id']"><a href='{parse url="showuser={$entry['last_poster_id']}" template="showuser" seotitle="{$entry['seo_last_name']}" base="public"}'>{$entry['last_poster_name']}</a><else />{$entry['last_poster_name']}</if>
<else />
{$this->lang->words['read']} {parse format_number="$entry['views']"} {$this->lang->words['times_make']} <a href='{parse url="showtopic={$entry['tid']}&amp;view=getlastpost" base="public" seotitle="{$entry['title_seo']}" template="showtopic"}'>{$this->lang->words['article_comment']}</a>
</if>
{$bottom_string}
&nbsp;&nbsp;<a href='{parse url="app=forums&amp;module=forums&amp;section=printtopic&amp;client=printer&amp;f={$entry['forum_id']}&amp;t={$entry['tid']}" base="public"}'>{$this->lang->words['print']}</a>
<a href='{parse url="app=forums&amp;module=extras&amp;section=forward&amp;f={$entry['forum_id']}&amp;t={$entry['tid']}" base="public"}'>{$this->lang->words['email']}</a>
</div>
</div>
</div>
<br />
</foreach>]]></template_content>
<template_name>articles</template_name>
<template_data>$articles</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<!--
SKINNOTE: Remember boxes are also in skin_gallery_portal, skin_blog_portal and skin_downloads_external
-The striping doesn't add the proper padding like the board index does
-Calendar doesn't display properly compared to real mini-calendar
-Poll is kinda ugly
-Print and Email should be icons. Note that I also used "moderation_bar" class for that row, which isn't necessarily
semantic, but displays fine - your call on whether to change it
-->
{parse template="include_lightbox" group="global" params=""}
<div id='portal_articles' class='left'>
<!--MAIN-->
<!--::recent_topics_last_x::-->
<!--END MAIN-->
</div>
<div id='index_stats' class='portal left'>
<!-- LEFT -->
<!--::portal_sitenav::-->
<!--::online_users_show::-->
<!--::blogs_show_last_updated_x::-->
<!--::recent_downloads_last_x::-->
<!--::gallery_show_random_image::-->
<!--::calendar_show_current_month::-->
<!--::poll_show_poll::-->
<!--::recent_topics_discussions_last_x::-->
<!--::portal_affiliates::-->
<!--END LEFT-->
</div>
{parse template="include_highlighter" group="global" params="1"}
<script type='text/javascript'>
// Resize images
$$('.post', '.poll').each( function(elem){
ipb.global.findImgs( $( elem ) );
});
</script>]]></template_content>
<template_name>skeletonTemplate</template_name>
<template_data/>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<moduleexport>
<modulegroup>
<module>
<sys_module_title>Портал</sys_module_title>
<sys_module_application>portal</sys_module_application>
<sys_module_key>portal</sys_module_key>
<sys_module_description>Главный модуль портала</sys_module_description>
<sys_module_version>3.0.0</sys_module_version>
<sys_module_parent>0</sys_module_parent>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>0</sys_module_admin>
</module>
<module>
<sys_module_title>Управление порталом</sys_module_title>
<sys_module_application>portal</sys_module_application>
<sys_module_key>portal</sys_module_key>
<sys_module_description>Модуль управления порталом</sys_module_description>
<sys_module_version>1.0</sys_module_version>
<sys_module_parent/>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>1</sys_module_admin>
</module>
</modulegroup>
</moduleexport>
@@ -0,0 +1,202 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="portal" templategroups="a:1:{s:11:&quot;skin_portal&quot;;s:5:&quot;exact&quot;;}">
<templategroup group="skin_portal">
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> {$this->lang->words['aff_title']}</h3>
<div>
{$this->settings['csite_fav_contents']}
</div>
</div>
<br />]]></template_content>
<template_name>affiliates</template_name>
<template_data><![CDATA[$links=""]]></template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[{parse js_module="topic"}
<foreach loop="articles:$articles as $entry">
<h2 class='maintitle'><a href='{parse url="showtopic={$entry['tid']}" base="public" seotitle="{$entry['title_seo']}" template="showtopic"}'>{$entry['title']}</a></h2>
<div class='generic_bar'></div>
<div class='post_block first hentry no_sidebar' id='announce_id_{$announce['announce_id']}'>
<div class='post_wrap'>
<if test="authorIsMember:|:$entry['member_id']">
<h3>
<else />
<h3 class='guest'>
</if>
<if test="authorMemberLink:|:$entry['member_id']">
<if test="authorIsOnline:|:$entry['_online']">
{parse replacement="user_online"}
<else />
{parse replacement="user_offline"}
</if> &nbsp;
<address class="author vcard"><a class="url fn" href='{parse url="showuser={$entry['member_id']}" template="showuser" seotitle="{$entry['members_seo_name']}" base="public"}'>{$entry['members_display_name']}</a>{parse template="user_popup" group="global" params="$entry['member_id']"}</address>
<else />
{$entry['members_display_name']}
</if>
- {$entry['date']} - {parse format_number="$entry['posts']"} {$this->lang->words['comments_suffix']}
</h3>
<div class='post_body'>
<div class='post entry-content'>
{$entry['post']}
<!--IBF.ATTACHMENT_{$entry['pid']}-->
</div>
</div>
<div class='moderation_bar'>
<if test="entryHasPosts:|:$entry['posts']">
{$this->lang->words['read']} {parse format_number="$entry['views']"} {$this->lang->words['times_last']} <a href='{parse url="showtopic={$entry['tid']}&amp;view=getlastpost" base="public" seotitle="{$entry['title_seo']}" template="showtopic"}'>{$this->lang->words['article_comment']}</a> {$this->lang->words['portal_by']} <if test="entryLastPoster:|:$entry['last_poster_id']"><a href='{parse url="showuser={$entry['last_poster_id']}" template="showuser" seotitle="{$entry['seo_last_name']}" base="public"}'>{$entry['last_poster_name']}</a><else />{$entry['last_poster_name']}</if>
<else />
{$this->lang->words['read']} {parse format_number="$entry['views']"} {$this->lang->words['times_make']} <a href='{parse url="showtopic={$entry['tid']}&amp;view=getlastpost" base="public" seotitle="{$entry['title_seo']}" template="showtopic"}'>{$this->lang->words['article_comment']}</a>
</if>
{$bottom_string}
&nbsp;&nbsp;<a href='{parse url="app=forums&amp;module=forums&amp;section=printtopic&amp;client=printer&amp;f={$entry['forum_id']}&amp;t={$entry['tid']}" base="public"}'>{parse replacement="print_icon"}</a>&nbsp;&nbsp;
<a href='{parse url="app=forums&amp;module=extras&amp;section=forward&amp;f={$entry['forum_id']}&amp;t={$entry['tid']}" base="public"}'>{parse replacement="email_icon"}</a>
</div>
</div>
</div>
<br />
</foreach>]]></template_content>
<template_name>articles</template_name>
<template_data>$articles</template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[{$content}
<br />]]></template_content>
<template_name>calendarWrap</template_name>
<template_data><![CDATA[$content=""]]></template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> {$this->lang->words['discuss_title']}</h3>
<ul class='hfeed'>
{parse striping="recent_topics" classes="row1,row2 altrow"}
<foreach loop="posts:$posts as $result">
<li class='hentry {parse striping="recent_topics"}'><a href='{parse url="showtopic={$result['tid']}" base="public" template="showtopic" seotitle="{$result['title_seo']}"}' rel='bookmark' title='{$this->lang->words['view_topic']}'>{$result['title_display']}</a> {$this->lang->words['portal_by']} <address class="author vcard"><if test="ismember:|:$result['member_id']"><a class="url fn" href="{parse url="showuser={$result['member_id']}" base="public" template="showuser" seotitle="{$result['members_seo_name']}"}" title='{$this->lang->words['view_profile']}'>{$result['members_display_name']}</a>{parse template="user_popup" group="global" params="$result['member_id']"}<else />{$result['members_display_name']}</if></address> <span class='date'>(<abbr class="published" title="{parse expression="date( 'c', $result['post_date'] )"}">{$result['date']}</abbr>)</span>
<br />{$this->lang->words['recent_read']}: {parse format_number="$result['views']"} &nbsp; {$this->lang->words['recent_comments']}: {parse format_number="$result['posts']"}</li>
</foreach>
</ul>
</div>
<br />]]></template_content>
<template_name>latestPosts</template_name>
<template_data>$posts=array()</template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box clearfix' id='portal_active_users'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> <a href="{parse url="app=members&amp;module=online&amp;section=online" base="public"}">{$this->lang->words['online_title']}</a></h3>
<div>
<!--<span>{parse expression="sprintf( $this->lang->words['online_breakdown'], intval($active['TOTAL']) )"}</span>-->
<span class='desc'>{parse expression="sprintf( $this->lang->words['online_split'], intval($active['MEMBERS']), intval($active['visitors']), intval($active['ANON']) )"}</span>
<br /><br />
<p>
<span class='name'>{parse expression="implode( ",</span> <span class='name'>", $active['NAMES'] )"}</span>
</p>
</div>
</div>
<br />]]></template_content>
<template_name>onlineUsers</template_name>
<template_data>$active</template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[{parse js_module="topic"}
<div class='general_box'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> <a href='{parse url="showtopic={$tid}" base="public"}'>{$this->lang->words['poll_title']}</a></h3>
{$content}
</div>
<br />]]></template_content>
<template_name>pollWrapper</template_name>
<template_data><![CDATA[$content="",$tid=""]]></template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<div class='general_box'>
<h3><img src='{$this->settings['img_url']}/comment_new.png' alt='{$this->lang->words['icon']}' /> {$this->lang->words['links_title']}</h3>
<ul>
<foreach loop="links:$links as $link">
<li>&bull; <a href="{$link[1]}">{$link[2]}</a><li>
</foreach>
</ul>
</div>
<br />]]></template_content>
<template_name>siteNavigation</template_name>
<template_data>$links=array()</template_data>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content><![CDATA[<!--
SKINNOTE: Remember boxes are also in skin_gallery_portal, skin_blog_portal and skin_downloads_external
-The striping doesn't add the proper padding like the board index does
-Poll is kinda ugly
-Print and Email should be icons. Note that I also used "moderation_bar" class for that row, which isn't necessarily
semantic, but displays fine - your call on whether to change it
-->
<if test="disablelightbox:|:!$this->settings['disable_lightbox']">
{parse template="include_lightbox" group="global" params=""}
</if>
<div id='portal_articles' class='left'>
<!--MAIN-->
<!--::recent_topics_last_x::-->
<!--END MAIN-->
</div>
<div id='index_stats' class='portal left'>
<!-- LEFT -->
<!--::portal_sitenav::-->
<!--::online_users_show::-->
<!--::blogs_show_last_updated_x::-->
<!--::recent_downloads_last_x::-->
<!--::gallery_show_random_image::-->
<!--::calendar_show_current_month::-->
<!--::poll_show_poll::-->
<!--::recent_topics_discussions_last_x::-->
<!--::portal_affiliates::-->
<!--END LEFT-->
</div>
{parse template="include_highlighter" group="global" params="1"}
<script type='text/javascript'>
// Resize images
$$('.post', '.poll').each( function(elem){
ipb.global.findImgs( $( elem ) );
});
</script>]]></template_content>
<template_name>skeletonTemplate</template_name>
<template_data/>
<template_updated>1260269068</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,255 @@
<?xml version="1.0" encoding="utf-8"?>
<settingexport>
<settinggroup>
<setting>
<conf_is_title>1</conf_is_title>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_title_title>Портал IP.Board</conf_title_title>
<conf_title_desc>Данные функции позволяют управлять портальной страницей и ее настройками.</conf_title_desc>
<conf_title_tab>IPS Apps</conf_title_tab>
<conf_title_app>portal</conf_title_app>
<conf_title_noshow>0</conf_title_noshow>
</setting>
<setting>
<conf_title>Название страницы портала</conf_title>
<conf_description>То, что будет записано между элементами title на странице портала.</conf_description>
<conf_group>29</conf_group>
<conf_type>input</conf_type>
<conf_key>csite_title</conf_key>
<conf_default>Портал</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>2</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Формат даты для тем</conf_title>
<conf_description><![CDATA[<a href='http://www.php.net/strftime'>Аналогично функции strftime PHP.]]></conf_description>
<conf_group>29</conf_group>
<conf_type>input</conf_type>
<conf_key>csite_article_date</conf_key>
<conf_default>%d.%m.%y %H:%M</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>3</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Показывать меню навигации по сайту?</conf_title>
<conf_description/>
<conf_group>29</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>csite_nav_show</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>18</conf_position>
<conf_start_group>Стандартные блоки портала</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Ссылки меню навигации по сайту</conf_title>
<conf_description><![CDATA[По одной в каждой строке в следующем формате<br>http://www.apple.com [Вебсайт Apple]<br><br>{board_url} будет преобразовано в адрес вашего форума]]></conf_description>
<conf_group>29</conf_group>
<conf_type>textarea</conf_type>
<conf_key>csite_nav_contents</conf_key>
<conf_default><![CDATA[{board_url} [Форумы]
{board_url}act=Search&CODE=getactive [Активные темы]
{board_url}act=Stats [Лучшие сегодня]
{board_url}act=Stats&CODE=leaders [Администрация форума]]]></conf_default>
<conf_extra/>
<conf_evalphp><![CDATA[if ( $show == 1)
{
$value = preg_replace( "/&(middot|quot|copy|amp)/", "&\\\\\\\\\\\\\\\\1", $value );
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>19</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Показывать блок &quot;Партнеры / Предпочитаемые сайты&quot;?]]></conf_title>
<conf_description/>
<conf_group>29</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>csite_fav_show</conf_key>
<conf_default>0</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>20</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Содержимое блока &quot;Партнеры / Предпочитаемые сайты&quot;]]></conf_title>
<conf_description>Поддерживается HTML</conf_description>
<conf_group>29</conf_group>
<conf_type>textarea</conf_type>
<conf_key>csite_fav_contents</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp><![CDATA[if ( $show == 1)
{
$value = preg_replace( "/&(middot|quot|copy|amp)/", "&\\\\\\\\1", $value );
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>21</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>ipbportal</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_is_title>1</conf_is_title>
<conf_title_keyword>portal_poll</conf_title_keyword>
<conf_title_title>Портал: опрос</conf_title_title>
<conf_title_desc/>
<conf_title_tab>IPS Apps</conf_title_tab>
<conf_title_app>portal</conf_title_app>
<conf_title_noshow>1</conf_title_noshow>
</setting>
<setting>
<conf_title>Введите URL к теме с опросом</conf_title>
<conf_description>Не заполняйте, чтобы не отображать блок с опросом.</conf_description>
<conf_group>30</conf_group>
<conf_type>input</conf_type>
<conf_key>poll_poll_url</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>17</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>portal_poll</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_is_title>1</conf_is_title>
<conf_title_keyword>portal_recent_topics</conf_title_keyword>
<conf_title_title>Портал: последние темы</conf_title_title>
<conf_title_desc><![CDATA[Настройка модуля портала "Последние темы".]]></conf_title_desc>
<conf_title_tab>IPS Apps</conf_title_tab>
<conf_title_app>portal</conf_title_app>
<conf_title_noshow>1</conf_title_noshow>
</setting>
<setting>
<conf_title>Разделы, из которых будет производиться экспорт статей</conf_title>
<conf_description>Можно выбрать несколько, используя клавишу Сtrl.</conf_description>
<conf_group>31</conf_group>
<conf_type>multi</conf_type>
<conf_key>recent_topics_article_forum</conf_key>
<conf_default/>
<conf_extra>#show_forums#</conf_extra>
<conf_evalphp><![CDATA[if ( $save == 1)
{
if ( is_array($_POST['recent_topics_article_forum']) )
{
$_POST['recent_topics_article_forum'] = implode(",",$_POST['recent_topics_article_forum']);
}
else
{
$_POST['recent_topics_article_forum'] = "";
}
$key = 'recent_topics_article_forum';
}
if ( $show == 1 )
{
$key = 'recent_topics_article_forum[]';
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>3</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>portal_recent_topics</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Количество отображаемых тем</conf_title>
<conf_description><![CDATA[Количество тем, которые будут отображаться для тега портала "recent_topics_last_x".]]></conf_description>
<conf_group>31</conf_group>
<conf_type>input</conf_type>
<conf_key>recent_topics_article_max</conf_key>
<conf_default>15</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>4</conf_position>
<conf_start_group><![CDATA[Последние [Х] тем]]></conf_start_group>
<conf_end_group>1</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>portal_recent_topics</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Не закреплять важные темы]]></conf_title>
<conf_description>При включении этой опции темы, закрепленные на форуме, на портале будут выводиться, как обычные, а не находиться постоянно наверху.</conf_description>
<conf_group>23</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>portal_exclude_pinned</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>3</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>portal_recent_topics</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Количество отображаемых обсуждений</conf_title>
<conf_description><![CDATA[Введите количество заголовков тем, которые будет отображаться для тега портала "recent_discussions_last_x"]]></conf_description>
<conf_group>31</conf_group>
<conf_type>input</conf_type>
<conf_key>recent_topics_discuss_number</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>9</conf_position>
<conf_start_group><![CDATA[Последние [Х] обсуждений]]></conf_start_group>
<conf_end_group>1</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>portal_recent_topics</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
</settinggroup>
</settingexport>
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="portal" templategroups="a:1:{s:11:&quot;skin_portal&quot;;s:5:&quot;exact&quot;;}">
<templategroup group="skin_portal">
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>siteNavigation</template_name>
<template_data>$links=array()</template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>onlineUsers</template_name>
<template_data>$active</template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>pollWrapper</template_name>
<template_data><![CDATA[$content="",$tid=""]]></template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>latestPosts</template_name>
<template_data>$posts=array()</template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>affiliates</template_name>
<template_data><![CDATA[$links=""]]></template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>articles</template_name>
<template_data>$articles</template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>calendarWrap</template_name>
<template_data><![CDATA[$content=""]]></template_data>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_portal</template_group>
<template_content/>
<template_name>skeletonTemplate</template_name>
<template_data/>
<template_updated>1260269071</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<languageexport>
<languagegroup>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>email</word_key>
<word_default>Email</word_default>
<word_custom>E-mail</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>print</word_key>
<word_default>Print</word_default>
<word_custom>Печать</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>times_last</word_key>
<word_default>times - last </word_default>
<word_custom> раз - последний</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>times_make</word_key>
<word_default>times - make a </word_default>
<word_custom> раз - разместить </word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>portal_by</word_key>
<word_default>by</word_default>
<word_custom>автор</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>read</word_key>
<word_default>Read</word_default>
<word_custom>Дальше</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>comments_suffix</word_key>
<word_default>comments</word_default>
<word_custom>комментариев</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>recent_comments</word_key>
<word_default>Comments</word_default>
<word_custom>Комментарии</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>aff_title</word_key>
<word_default>Recommended Sites</word_default>
<word_custom>Рекомендованные сайты</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>article_comment</word_key>
<word_default>comment</word_default>
<word_custom>комментарий</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>discuss_title</word_key>
<word_default>Latest Discussions</word_default>
<word_custom>Последние темы</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>poll_title</word_key>
<word_default>Website Poll</word_default>
<word_custom>Опрос</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>recent_read</word_key>
<word_default>Read</word_default>
<word_custom>Дальше</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>online_breakdown</word_key>
<word_default><![CDATA[There are <strong>%s</strong> online users browsing:]]></word_default>
<word_custom><![CDATA[Всего <strong>%s</strong> пользователей в онлайн: ]]></word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>online_split</word_key>
<word_default>%s members, %s visitors and %s anonymous users</word_default>
<word_custom>%s пользователей и %s гостей</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>online_title</word_key>
<word_default>Online Users</word_default>
<word_custom>Он-лайн</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
<lang>
<word_app>portal</word_app>
<word_pack>public_portal</word_pack>
<word_key>links_title</word_key>
<word_default>Site Navigation</word_default>
<word_custom>Навигация</word_custom>
<word_default_version>30008</word_default_version>
<word_custom_version>30008</word_custom_version>
<word_js>0</word_js>
</lang>
</languagegroup>
</languageexport>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<versions>
<version>
<human>3.0.5</human>
<long>30012</long>
</version>
</versions>