Version 4.7.6

This commit is contained in:
Neo committed 2025-12-19 16:05:19 -08:00
1 parent 8ba7d43898
commit 7b7404e741
1085 files changed
+30590 -7837

No files matched your search

+28 -1
View File
@@ -114,6 +114,16 @@ class _Application extends \IPS\Application
\IPS\Member::loggedIn()->language()->words[ 'menu__core_mp_' . $c['id'] ] = $c['name'];
\IPS\Member::loggedIn()->language()->words[ 'menu__core_mp_' . $c['id'] . '_all' ] = 'All ' . $c['name'];
}
if ( \IPS\Application::appIsEnabled( 'cloud' ) )
{
$menu['smartcommunity']['features'] = array(
'tab' => 'core',
'controller' => 'cloud',
'do' => '',
'restriction' => 'licensekey_manage'
);
}
return $menu;
}
@@ -583,8 +593,13 @@ class _Application extends \IPS\Application
'club_member_added' => ['club' => \IPS\Member\Club::class, 'member' => \IPS\Member::class, 'status' => "string" ],
'club_member_removed' => ['club' => \IPS\Member\Club::class, 'member' => \IPS\Member::class ],
'member_create' => \IPS\Member::class,
'member_registration_complete' => \IPS\Member::class,
'member_edited' => [ 'member' => \IPS\Member::class, 'changes' => "array" ],
'member_delete' => \IPS\Member::class,
'member_warned' => \IPS\core\Warnings::class,
'member_merged' => [ 'kept' => \IPS\Member::class, 'removed' => \IPS\Member::class],
'content_promoted' => \IPS\Content::class,
'content_marked_solved' => [ 'item' => \IPS\Content\Item::class, 'comment' => \IPS\Content\Comment::class , 'markedBy' => \IPS\Member::class ]
], parent::getWebhooks() );
}
@@ -619,7 +634,7 @@ class _Application extends \IPS\Application
}
/* Have required profile actions that need completing */
else if (
\IPS\Settings::i()->quick_register AND
\IPS\Settings::i()->allow_reg AND
!\IPS\Member::loggedIn()->members_bitoptions['profile_completed'] AND
!\in_array( \IPS\Dispatcher::i()->controller, array( 'register', 'login', 'redirect', 'ajax', 'settings', 'checkout', 'pixabay', 'editor' ) ) AND
$completion = \IPS\Member::loggedIn()->profileCompletion() AND
@@ -683,4 +698,16 @@ class _Application extends \IPS\Application
return NULL;
}
/**
* Install the application's settings
*
* @return void
*/
public function installSettings()
{
/* It's enough if we run this only for the core app instead for each app which is upgraded */
\IPS\core\extensions\core\CommunityEnhancements\Zapier::rebuildRESTApiPermissions();
parent::installSettings();
}
}
+77 -1
View File
@@ -782,7 +782,7 @@ class _members extends \IPS\Api\Controller
200,
\IPS\Db::i()->select( '*', 'core_notifications', array( "`member`=? AND notification_app IN('" . implode( "','", array_keys( \IPS\Application::enabledApplications() ) ) . "')", $member->member_id ), "updated_time DESC" ),
isset( \IPS\Request::i()->page ) ? \IPS\Request::i()->page : 1,
'IPS\Notification\Inline',
'IPS\Notification\RestApi',
\IPS\Db::i()->select( 'COUNT(*)', 'core_notifications', array( "`member`=? AND notification_app IN('" . implode( "','", array_keys( \IPS\Application::enabledApplications() ) ) . "')", $member->member_id ) )->first(),
$this->member,
isset( \IPS\Request::i()->perPage ) ? \IPS\Request::i()->perPage : NULL
@@ -1230,4 +1230,80 @@ class _members extends \IPS\Api\Controller
throw new \IPS\Api\Exception( 'INVALID_ID', '2C292/14', 404 );
}
}
/**
* POST /core/members/{id}/secgroup/{groupId}
* Adds a secondary group to the member
*
* @param int $id ID Number
* @reqapiparam int $groupId Group To Add
* @return \IPS\Member
* @throws 2C292/15 INVALID_GROUP The group could not be found
* @throws 2C292/16 INVALID_MEMBER The member could not be found
*/
public function POSTitem_secgroup( int $id, int $groupId ): \IPS\Api\Response
{
/* Load member */
$member = \IPS\Member::load( $id );
if( !$member->member_id )
{
throw new \IPS\Api\Exception( 'INVALID_MEMBER', '2C292/16', 404 );
}
try
{
$group = \IPS\Member\Group::load( $groupId );
}
catch( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'INVALID_GROUP', '2C292/15', 404 );
}
$mgroup_others = array_filter( explode( ',', $member->mgroup_others ) );
$newSecondaryGroups = array_unique( array_merge( [$group->g_id], $mgroup_others ) );
$member->mgroup_others = implode( ',', $newSecondaryGroups );
$member->save();
return new \IPS\Api\Response( 201, $member->apiOutput( $this->member ) );
}
/**
* DELETE /core/members/{id}/secgroup/{groupId}
* Removes a secondary group
*
* @param int $id ID Number
* @reqapiparam int $groupId Group To Add
* @return \IPS\Member
* @throws 2C292/17 INVALID_GROUP The group could not be found
* @throws 2C292/18 INVALID_MEMBER The member could not be found
*/
public function DELETEitem_secgroup( int $id, int $groupId ): \IPS\Api\Response
{
/* Load member */
$member = \IPS\Member::load( $id );
if( !$member->member_id )
{
throw new \IPS\Api\Exception( 'INVALID_MEMBER', '2C292/18', 404 );
}
try
{
$group = \IPS\Member\Group::load( $groupId );
}
catch( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'INVALID_GROUP', '2C292/17', 404 );
}
$secondaryGroups = array_filter( explode( ',', $member->mgroup_others ) );
$key = array_search( $group->g_id, $secondaryGroups );
unset( $secondaryGroups[ $key ] );
$member->mgroup_others = implode( ',', array_unique( $secondaryGroups ) );
$member->save();
return new \IPS\Api\Response( 201, $member->apiOutput( $this->member ) );
}
}
+83
View File
@@ -0,0 +1,83 @@
<?php
/**
* @brief Promotions API
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @since 21 June 2022
*/
namespace IPS\core\api;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* @brief Promotions API
*/
class _promotions extends \IPS\Node\Api\NodeController
{
/**
* GET /core/promotions
* Get list of promoted items
*
* @apiparam int page Page number
* @apiparam int perPage Number of results per page - defaults to 25
* @return \IPS\Api\PaginatedResponse<IPS\core\Promote>
* @throws 2C429/1 NO_PERMISSION The current authorized user does not have permission to issue warnings and as such cannot view the list of warn reasons
*/
public function GETindex()
{
$page = isset( \IPS\Request::i()->page ) ? \IPS\Request::i()->page : 1;
$perPage = isset( \IPS\Request::i()->perPage ) ? \IPS\Request::i()->perPage : 25;
$sortDir = ( isset( \IPS\Request::i()->sortDir ) and \in_array( mb_strtolower( \IPS\Request::i()->sortDir ), array( 'asc', 'desc' ) ) ) ? \IPS\Request::i()->sortDir : 'asc';
$sortBy = ( isset( \IPS\Request::i()->sortBy ) and \in_array( mb_strtolower( \IPS\Request::i()->sortBy ), array( 'promote_id', 'promote_scheduled' ) ) ) ? \IPS\Request::i()->sortBy :'promote_id';
/* Check permissions */
if( $this->member AND !$this->member->modPermission('mod_see_warn') )
{
throw new \IPS\Api\Exception( 'NO_PERMISSION', '2C429/1', 403 );
}
/* Return */
return new \IPS\Api\PaginatedResponse(
200,
\IPS\Db::i()->select( '*', 'core_social_promote', array(), "{$sortBy} {$sortDir}" ),
$page,
'IPS\core\Promote',
\IPS\Db::i()->select( 'COUNT(*)', 'core_social_promote', array() )->first(),
$this->member,
$perPage
);
}
/**
* GET /core/promotions/{id}
* Get specific promotion object
*
* @param int $id ID Number
* @throws 12C429/2 INVALID_ID The promotion does not exist
* @return \IPS\core\Promote
*/
public function GETitem( $id )
{
try
{
$promotion = \IPS\core\Promote::load( $id );
/* Return */
return new \IPS\Api\Response( 200, $promotion->apiOutput( $this->member ) );
}
catch ( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'INVALID_ID', '2C429/2', 404 );
}
}
}
+1 -1
View File
@@ -148,7 +148,7 @@ class _warnreasons extends \IPS\Node\Api\NodeController
* @param \IPS\node\Model $reason The node
* @return \IPS\node\Model
*/
protected function _createOrUpdate( \IPS\node\Model $reason )
protected function _createOrUpdate( \IPS\Node\Model $reason )
{
if( \IPS\Request::i()->name )
{
+5
View File
@@ -29,6 +29,7 @@ class _webhooks extends \IPS\Api\Controller
* @apiclientonly
* @reqapiparam array events List of events to subscribe to
* @reqapiparam string url URL to send webhook to
* @apiparam string content_header The content type for the request.
* @return \IPS\Api\Webhook
* @throws 1C293/1 NO_EVENTS No events were specified
* @throws 1C293/2 INVALID_URL The URL specified was not valid
@@ -55,6 +56,10 @@ class _webhooks extends \IPS\Api\Controller
$webhook->events = $events;
$webhook->filters = ( \IPS\Request::i()->filters ?: array() );
$webhook->url = $url;
if( \IPS\Request::i()->content_header )
{
$webhook->content_type = \IPS\Request::i()->content_header;
}
$webhook->save();
return new \IPS\Api\Response( 201, $webhook->apiOutput() );
+7
View File
@@ -515,6 +515,13 @@
"do": "",
"restriction": "moderatorstats_manage",
"subcontrollers": ""
},
"rankprogression": {
"tab": "stats",
"controller": "rankprogression",
"do": "",
"restriction": "rankprogression_manage",
"subcontrollers": ""
}
},
"messengerstats": {
@@ -380,6 +380,9 @@
},
"moderators": {
"moderatorstats_manage": "moderatorstats_manage"
},
"rankprogression": {
"rankprogression_manage": "rankprogression_manage"
}
},
"system": [],
+24 -25
View File
@@ -140,7 +140,6 @@
"sendgrid",
"spam",
"tag manager",
"viglink",
"zapier"
]
},
@@ -193,14 +192,6 @@
"stock photo"
]
},
"app=core&module=applications&controller=enhancements&do=edit&id=core_Viglink&searchResult=form_viglink_account_type": {
"lang_key": "viglink_account_type",
"restriction": "enhancements_manage",
"keywords": [
"advertising",
"viglink"
]
},
"app=core&module=applications&controller=enhancements&do=edit&searchResult=pixabay_apikey": {
"lang_key": "pixabay_apikey",
"restriction": "enhancements_manage",
@@ -390,6 +381,14 @@
"search results"
]
},
"app=core&module=discovery&controller=search&searchResult=searchlog_exclude_groups": {
"lang_key": "searchlog_exclude_groups",
"restriction": "search_manage",
"keywords": [
"exclude groups",
"exclude groups from search"
]
},
"app=core&module=discovery&controller=streams&do=allActivitySettings": {
"lang_key": "menu__core_discovery_streams",
"restriction": "streams_manage",
@@ -1527,6 +1526,7 @@
"keywords": [
"bot prevention",
"CAPTCHA",
"hCaptcha",
"security question"
]
},
@@ -1690,13 +1690,6 @@
"social media"
]
},
"app=core&module=promotion&controller=promote&tab=facebook": {
"lang_key": "promote_tab_facebook",
"restriction": "promote_manage",
"keywords": [
"facebook"
]
},
"app=core&module=promotion&controller=promote&tab=internal": {
"lang_key": "promote_tab_internal",
"restriction": "promote_manage",
@@ -1843,15 +1836,6 @@
"storage"
]
},
"app=core&module=settings&controller=advanced&tab=datastore&searchResult=cache_guest_page": {
"lang_key": "cache_guest_page",
"restriction": "datastore",
"keywords": [
"cache",
"guest cache",
"output cache"
]
},
"app=core&module=settings&controller=advanced&tab=datastore&searchResult=cache_method": {
"lang_key": "cache_method",
"restriction": "datastore",
@@ -2744,6 +2728,14 @@
"visits"
]
},
"app=core&module=stats&controller=moderators": {
"lang_key": "menu__core_stats_moderators",
"restriction": "moderatorstats_manage",
"keywords": [
"moderator activity",
"moderator activity stats"
]
},
"app=core&module=stats&controller=onlineusers": {
"lang_key": "menu__core_stats_onlineusers",
"restriction": "onlineusers_manage",
@@ -2756,6 +2748,13 @@
"user activity"
]
},
"app=core&module=stats&controller=rankprogression": {
"lang_key": "menu__core_stats_rankprogression",
"restriction": "rankprogression_manage",
"keywords": [
"rank progression"
]
},
"app=core&module=stats&controller=registrationstats": {
"lang_key": "menu__core_members_registrationstats",
"restriction": null,
+9 -13
View File
@@ -25,6 +25,7 @@
<module key="admin/moderation"><![CDATA[{"default_controller":"","protected":0,"default":0}]]></module>
<module key="admin/marketplace"><![CDATA[{"default_controller":"","protected":0,"default":0}]]></module>
<module key="admin/achievements"><![CDATA[{"default_controller":"","protected":0,"default":0}]]></module>
<module key="admin/smartcommunity"><![CDATA[{"default_controller":"","protected":false,"default":null}]]></module>
<module key="front/system"><![CDATA[{"default_controller":"splash","protected":1,"default":0}]]></module>
<module key="front/members"><![CDATA[{"default_controller":"profile","protected":0,"default":0}]]></module>
<module key="front/search"><![CDATA[{"default_controller":"search","protected":0,"default":0}]]></module>
@@ -225,6 +226,7 @@
<setting key="gl_type"><![CDATA[{"key":"gl_type","default":"none","report":"full"}]]></setting>
<setting key="google_maps_api_key"><![CDATA[{"key":"google_maps_api_key","default":"","report":"bool"}]]></setting>
<setting key="google_maps_api_key_secret"><![CDATA[{"key":"google_maps_api_key_secret","default":"","report":"bool"}]]></setting>
<setting key="google_maps_static_use_embed"><![CDATA[{"key":"google_maps_static_use_embed","default":"0","report":"none"}]]></setting>
<setting key="googleauth_enabled"><![CDATA[{"key":"googleauth_enabled","default":"0","report":"full"}]]></setting>
<setting key="googleauth_groups"><![CDATA[{"key":"googleauth_groups","default":"*","report":"bool"}]]></setting>
<setting key="googlemaps"><![CDATA[{"key":"googlemaps","default":"1","report":"full"}]]></setting>
@@ -337,7 +339,6 @@
<setting key="profile_comment_approval"><![CDATA[{"key":"profile_comment_approval","default":"0","report":"full"}]]></setting>
<setting key="profile_comments"><![CDATA[{"key":"profile_comments","default":"1","report":"full"}]]></setting>
<setting key="promote_community_enabled"><![CDATA[{"key":"promote_community_enabled","default":"0","report":"full"}]]></setting>
<setting key="promote_facebook_auth"><![CDATA[{"key":"promote_facebook_auth","default":"0","report":"none"}]]></setting>
<setting key="promote_groups"><![CDATA[{"key":"promote_groups","default":"","report":"bool"}]]></setting>
<setting key="promote_members"><![CDATA[{"key":"promote_members","default":"","report":"bool"}]]></setting>
<setting key="promote_scheduled"><![CDATA[{"key":"promote_scheduled","default":"","report":"bool"}]]></setting>
@@ -346,7 +347,7 @@
<setting key="prune_follows"><![CDATA[{"key":"prune_follows","default":"365","report":"full"}]]></setting>
<setting key="prune_item_markers"><![CDATA[{"key":"prune_item_markers","default":"60","report":"full"}]]></setting>
<setting key="prune_known_devices"><![CDATA[{"key":"prune_known_devices","default":"365","report":"full"}]]></setting>
<setting key="prune_known_ips"><![CDATA[{"key":"prune_known_ips","default":"365","report":"full"}]]></setting>
<setting key="prune_known_ips"><![CDATA[{"key":"prune_known_ips","default":"180","report":"full"}]]></setting>
<setting key="prune_log_admin"><![CDATA[{"key":"prune_log_admin","default":"0","report":"full"}]]></setting>
<setting key="prune_log_adminlogin"><![CDATA[{"key":"prune_log_adminlogin","default":"30","report":"full"}]]></setting>
<setting key="prune_log_email_error"><![CDATA[{"key":"prune_log_email_error","default":"30","report":"full"}]]></setting>
@@ -358,8 +359,8 @@
<setting key="prune_log_tasks"><![CDATA[{"key":"prune_log_tasks","default":"30","report":"full"}]]></setting>
<setting key="prune_member_history"><![CDATA[{"key":"prune_member_history","default":"365","report":"full"}]]></setting>
<setting key="prune_notifications"><![CDATA[{"key":"prune_notifications","default":"30","report":"full"}]]></setting>
<setting key="prune_pms"><![CDATA[{"key":"prune_pms","default":"0","report":"full"}]]></setting>
<setting key="prune_points_log"><![CDATA[{"key":"prune_points_log","default":"365","report":"full"}]]></setting>
<setting key="quick_register"><![CDATA[{"key":"quick_register","default":"1","report":"full"}]]></setting>
<setting key="rare_badge_percent"><![CDATA[{"key":"rare_badge_percent","default":"5","report":"full"}]]></setting>
<setting key="reaction_count_display"><![CDATA[{"key":"reaction_count_display","default":"individual","report":"full"}]]></setting>
<setting key="reaction_is_likemode"><![CDATA[{"key":"reaction_is_likemode","default":"","report":"full"}]]></setting>
@@ -495,11 +496,6 @@
<setting key="validate_day_prune"><![CDATA[{"key":"validate_day_prune","default":"30","report":"full"}]]></setting>
<setting key="vapid_private_key"><![CDATA[{"key":"vapid_private_key","default":"","report":"none"}]]></setting>
<setting key="vapid_public_key"><![CDATA[{"key":"vapid_public_key","default":"","report":"none"}]]></setting>
<setting key="viglink_api_key"><![CDATA[{"key":"viglink_api_key","default":"","report":"none"}]]></setting>
<setting key="viglink_enabled"><![CDATA[{"key":"viglink_enabled","default":"0","report":"full"}]]></setting>
<setting key="viglink_groups"><![CDATA[{"key":"viglink_groups","default":"","report":"bool"}]]></setting>
<setting key="viglink_norewrite"><![CDATA[{"key":"viglink_norewrite","default":"","report":"bool"}]]></setting>
<setting key="viglink_subid"><![CDATA[{"key":"viglink_subid","default":"","report":"none"}]]></setting>
<setting key="warn_on"><![CDATA[{"key":"warn_on","default":"1","report":"full"}]]></setting>
<setting key="warn_protected"><![CDATA[{"key":"warn_protected","default":"","report":"bool"}]]></setting>
<setting key="warn_show_own"><![CDATA[{"key":"warn_show_own","default":"1","report":"full"}]]></setting>
@@ -540,12 +536,11 @@
<acpsearch key="app=core&amp;module=applications&amp;controller=api&amp;tab=webhooks"><![CDATA[{"lang_key":"webhooks","restriction":"api_splash","keywords":["webhook"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=api&amp;tab=webhooks&amp;do=settings&amp;searchResult=webhook_logs_success"><![CDATA[{"lang_key":"webhook_logs_success","restriction":"api_splash","keywords":["webhook"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=applications"><![CDATA[{"lang_key":"menu__core_applications_applications","restriction":"app_manage","keywords":["applications","install","modules","offline","online"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements"><![CDATA[{"lang_key":"menu__core_applications_enhancements","restriction":"enhancements_manage","keywords":["analytics","bulk mail","easypost","email","enhancements","enom","geo","giphy","indexnow","mapbox","maps","matomo","maxmind","omniture","piwik","pixabay","sendgrid","spam","tag manager","viglink","zapier"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements"><![CDATA[{"lang_key":"menu__core_applications_enhancements","restriction":"enhancements_manage","keywords":["analytics","bulk mail","easypost","email","enhancements","enom","geo","giphy","indexnow","mapbox","maps","matomo","maxmind","omniture","piwik","pixabay","sendgrid","spam","tag manager","zapier"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements&amp;do=edit&amp;id=core_FacebookPixel"><![CDATA[{"lang_key":"menu__core_applications_enhancements","restriction":"enhancements_manage","keywords":["facebook","facebook pixel","pixel"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements&amp;do=edit&amp;id=core_GoogleMaps&amp;searchResult=form_googlemaps"><![CDATA[{"lang_key":"googlemaps","restriction":"enhancements_manage","keywords":["google","maps"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements&amp;do=edit&amp;id=core_ImageScanner"><![CDATA[{"lang_key":"menu__core_applications_enhancements","restriction":"enhancements_manage","keywords":["adult images","disturbing image filters","disturbing images filters","gore filters","gore image filters","gore images filters","image filters","image scanner","inappropriate image filters","inappropriate images filters","porn filters","porn images","pornographic images","violence filters","violent image filters","violent images filters"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements&amp;do=edit&amp;id=core_Pixabay"><![CDATA[{"lang_key":"menu__core_applications_enhancements","restriction":"enhancements_manage","keywords":["photos","pixabay","stock","stock photo"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements&amp;do=edit&amp;id=core_Viglink&amp;searchResult=form_viglink_account_type"><![CDATA[{"lang_key":"viglink_account_type","restriction":"enhancements_manage","keywords":["advertising","viglink"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=enhancements&amp;do=edit&amp;searchResult=pixabay_apikey"><![CDATA[{"lang_key":"pixabay_apikey","restriction":"enhancements_manage","keywords":["pixabay"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=menu"><![CDATA[{"lang_key":"menu__core_applications_menu","restriction":"menu_manage","keywords":["menu manager"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=applications&amp;controller=plugins"><![CDATA[{"lang_key":"menu__core_applications_plugins","restriction":"plugins_view","keywords":["add-ons","addons","hooks","install","mod","modification","plugins"]}]]></acpsearch>
@@ -567,6 +562,7 @@
<acpsearch key="app=core&amp;module=discovery&amp;controller=search"><![CDATA[{"lang_key":"menu__core_discovery_search","restriction":"search_manage","keywords":["rebuild search","rebuild search index","reindex","reindex search","reindex search results","search","search index","search index rebuild","searching"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=discovery&amp;controller=search&amp;searchResult=form_search_method"><![CDATA[{"lang_key":"search_method","restriction":"search_manage","keywords":["elastic","elasticsearch","mysql","search"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=discovery&amp;controller=search&amp;searchResult=search_index_timeframe"><![CDATA[{"lang_key":"search_index_timeframe","restriction":"search_manage","keywords":["search","search content","search cutoff","search limit","search results"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=discovery&amp;controller=search&amp;searchResult=searchlog_exclude_groups"><![CDATA[{"lang_key":"searchlog_exclude_groups","restriction":"search_manage","keywords":["exclude groups","exclude groups from search"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=discovery&amp;controller=streams&amp;do=allActivitySettings"><![CDATA[{"lang_key":"menu__core_discovery_streams","restriction":"streams_manage","keywords":["stream subscriptions","streams"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=editor&amp;controller=emoticons"><![CDATA[{"lang_key":"menu__core_editor_emoticons","restriction":"emoticons_manage","keywords":["emoticons","smileys","smilies"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=editor&amp;controller=emoticons&amp;tab=custom"><![CDATA[{"lang_key":"custom_emoji","restriction":"emoticons_manage","keywords":["emoticon","smiley","smilie"]}]]></acpsearch>
@@ -693,7 +689,7 @@
<acpsearch key="app=core&amp;module=moderation&amp;controller=reportedContentTypes"><![CDATA[{"lang_key":"menu__core_moderation_reportedContentTypes","restriction":null,"keywords":["report","report types"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam"><![CDATA[{"lang_key":"menu__core_moderation_spam","restriction":"spam_manage","keywords":["spam","spammers"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam&amp;do=serviceLogs"><![CDATA[{"lang_key":"spamlogs","restriction":"spam_service_log","keywords":["spam logs"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam&amp;searchResult=bot_antispam_type"><![CDATA[{"lang_key":"bot_antispam_type","restriction":"spam_manage","keywords":["bot prevention","CAPTCHA","security question"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam&amp;searchResult=bot_antispam_type"><![CDATA[{"lang_key":"bot_antispam_type","restriction":"spam_manage","keywords":["bot prevention","CAPTCHA","hCaptcha","security question"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam&amp;searchResult=guest_captcha"><![CDATA[{"lang_key":"guest_captcha_search_target","restriction":"spam_manage","keywords":["delete guest content","delete guest posts","guest content","guest posts"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam&amp;tab=captcha"><![CDATA[{"lang_key":"spamprevention_captcha","restriction":"spam_manage","keywords":["captcha","keycaptcha","recaptcha"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=moderation&amp;controller=spam&amp;tab=flagging"><![CDATA[{"lang_key":"spamprevention_flagging","restriction":"spam_manage","keywords":["flagging"]}]]></acpsearch>
@@ -712,7 +708,6 @@
<acpsearch key="app=core&amp;module=overview&amp;controller=files&amp;do=settings"><![CDATA[{"lang_key":"menu__core_overview_files","restriction":"files_view","keywords":["amazon","files","ftp","photos","storage","uploads"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=promotion&amp;controller=advertisements"><![CDATA[{"lang_key":"menu__core_promotion_advertisements","restriction":"advertisements_manage","keywords":["ads","adsense","advertisements","adverts","adwords","google"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=promotion&amp;controller=promote"><![CDATA[{"lang_key":"menu__core_promotion_promote","restriction":"promote_manage","keywords":["promote","promotion","sharing","social media"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=promotion&amp;controller=promote&amp;tab=facebook"><![CDATA[{"lang_key":"promote_tab_facebook","restriction":"promote_manage","keywords":["facebook"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=promotion&amp;controller=promote&amp;tab=internal"><![CDATA[{"lang_key":"promote_tab_internal","restriction":"promote_manage","keywords":["our picks"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=promotion&amp;controller=promote&amp;tab=links"><![CDATA[{"lang_key":"promote_tab_links","restriction":"promote_manage","keywords":["links","shorten"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=promotion&amp;controller=promote&amp;tab=permissions"><![CDATA[{"lang_key":"promote_tab_permissions","restriction":"promote_manage","keywords":["permissions"]}]]></acpsearch>
@@ -729,7 +724,6 @@
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;searchResult=form_auto_polling_enabled"><![CDATA[{"lang_key":"auto_polling_enabled","restriction":"advanced_manage","keywords":["auto","automatic","polling"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;searchResult=form_lazy_load_enabled"><![CDATA[{"lang_key":"lazy_load_enabled","restriction":"advanced_manage","keywords":["images","lazy load","lazy loading","lazyloading"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;tab=datastore"><![CDATA[{"lang_key":"data_store","restriction":"datastore","keywords":["storage"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;tab=datastore&amp;searchResult=cache_guest_page"><![CDATA[{"lang_key":"cache_guest_page","restriction":"datastore","keywords":["cache","guest cache","output cache"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;tab=datastore&amp;searchResult=cache_method"><![CDATA[{"lang_key":"cache_method","restriction":"datastore","keywords":["apc","memcached","redis","wincache","xcache"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;tab=furl"><![CDATA[{"lang_key":"furls_customize","restriction":"advanced_manage_furls","keywords":["friendly","furl","seo"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=settings&amp;controller=advanced&amp;tab=settings&amp;searchResult=form_clickjackprevention"><![CDATA[{"lang_key":"clickjackprevention","restriction":"advanced_manage","keywords":["clickjacking","content-security-policy","csp","iframe","x-frame-options"]}]]></acpsearch>
@@ -827,7 +821,9 @@
<acpsearch key="app=core&amp;module=staff&amp;controller=moderators"><![CDATA[{"lang_key":"menu__core_staff_moderators","restriction":"moderators_manage","keywords":["moderators","staff"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=staff&amp;controller=moderators&amp;do=actionLogs"><![CDATA[{"lang_key":"modlogs","restriction":"restrictions_moderatorlogs","keywords":["logs","mod logs","moderator logs","staff logs"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=stats&amp;controller=membervisits"><![CDATA[{"lang_key":"menu__core_stats_membervisits","restriction":"membervisits_manage","keywords":["activity","member visits","visits"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=stats&amp;controller=moderators"><![CDATA[{"lang_key":"menu__core_stats_moderators","restriction":"moderatorstats_manage","keywords":["moderator activity","moderator activity stats"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=stats&amp;controller=onlineusers"><![CDATA[{"lang_key":"menu__core_stats_onlineusers","restriction":"onlineusers_manage","keywords":["activity statistics","member activity","online users","page views","site activity","user activity"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=stats&amp;controller=rankprogression"><![CDATA[{"lang_key":"menu__core_stats_rankprogression","restriction":"rankprogression_manage","keywords":["rank progression"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=stats&amp;controller=registrationstats"><![CDATA[{"lang_key":"menu__core_members_registrationstats","restriction":null,"keywords":["registration statistics","Registrations"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=support&amp;controller=errorLogs"><![CDATA[{"lang_key":"error_logs","restriction":null,"keywords":["error log","errors","logs"]}]]></acpsearch>
<acpsearch key="app=core&amp;module=support&amp;controller=support"><![CDATA[{"lang_key":"menu__core_support_support","restriction":"support_dashboard","keywords":["diagnose","diagnostics","documentation","help","phpinfo","server","support","system","tech support","technical support","troubleshoot"]}]]></acpsearch>
@@ -21,7 +21,7 @@ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* @brief ACP Export Personal Information
*/
class _Main
class _{class}
{
/**
* Return data
+27 -3
View File
@@ -999,7 +999,7 @@
<table cellpadding='0' cellspacing='0' border='0'>
<tr>
<td style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">
<a href='{$content->url()}'>Read more</a>
<a href='{$content->url()}'>{$email->language->addToStack('read_more')}</a>
</td>
<td>
<img src="{setting="base_url"}applications/core/interface/email/spacer.png" alt='' width="20" height="1" />
@@ -1805,7 +1805,7 @@ URL: {$content->url()}
{{endif}}
{{if \IPS\Settings::i()->site_social_profiles AND \IPS\Settings::i()->social_links_in_email AND $links = json_decode( \IPS\Settings::i()->site_social_profiles, TRUE ) AND \count( $links )}}
{{$socialColors = array('internal' => '#008b00;', 'deviantart' => '#16A085;', 'email' => '#444;', 'facebook' => '#3B5998;', 'linkedin' => '#007FB1;', 'reddit' => '#FF4500;', 'stumble' => '#EB4924;', 'twitter' => '#00ACED;', 'vk' => '#507299;', 'weibo' => '#D32F2F;', 'youtube' => '#E62117;', 'foursquare' => '#2D5BE3;', 'etsy' => '#F56400;', 'flickr' => '#202022;', 'github' => '#000000;', 'instagram' => '#E13D62;', 'pinterest' => '#BD081C;', 'slack' => '#42C299;', 'xing' => '#B0D400;', 'tumblr' => '#EB4924;');}}
{{$socialColors = array('internal' => '#008b00;', 'deviantart' => '#16A085;', 'email' => '#444;', 'facebook' => '#3B5998;', 'linkedin' => '#007FB1;', 'reddit' => '#FF4500;', 'stumble' => '#EB4924;', 'twitter' => '#00ACED;', 'vk' => '#507299;', 'weibo' => '#D32F2F;', 'youtube' => '#E62117;', 'foursquare' => '#2D5BE3;', 'etsy' => '#F56400;', 'flickr' => '#202022;', 'github' => '#000000;', 'instagram' => '#E13D62;', 'pinterest' => '#BD081C;', 'slack' => '#42C299;', 'xing' => '#B0D400;', 'tumblr' => '#EB4924;', 'twitch' => '#772ce8;', 'discord' => '#000000;');}}
<tr>
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
<td dir='{dir}' valign='top' width='800' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 12px; color: #bdbdbd; line-height: 18px; padding-left: 10px;">
@@ -2006,7 +2006,31 @@ URL: {$content->url()}
{{endif}}
</td>
</tr>]]></template_content_html><template_data>$advertisement, $email</template_data><template_content_plaintext><![CDATA[{$advertisement->image_alt}
]]></template_content_plaintext><template_pinned>0</template_pinned></template><template><template_app>core</template_app><template_name>registration_complete</template_name><template_content_html><![CDATA[
]]></template_content_plaintext><template_pinned>0</template_pinned></template><template><template_app>core</template_app><template_name>solved_reengagement</template_name><template_content_html><![CDATA[{{$member = $item->author();}}
<br />
{$email->language->addToStack("mail_solved_reengagement", FALSE, array( 'htmlsprintf' => array( $item->definiteArticle( $email->language ), $item->url(), $item->mapped('title') ) ) )}
<br /><br />
<em>{$email->language->addToStack("mail_solved_reengagement_wyw")}</em>
<br /><br />
{$comment->emailContent( $email, 'html', false )|raw}
<br /><br />
<em>{$email->language->addToStack("mail_solved_reengagement_others")}</em>
<br><br>
{{foreach $replies as $reply}}
{$reply->emailContent( $email, 'html' )|raw}
{{endforeach}}
<br><br>
{$email->language->addToStack("mail_solved_reengagement_solved")}
<br /><br />
<a style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;" href="{$item->url()}">{$email->language->addToStack("mail_solved_reengagement_action")}</a>
<br /><br />
<a href="{url="app=core&module=system&controller=unsubscribe&action=markSolved&email=" seoTemplate="unsubscribe" base="front"}{$member->email}&key={expression="md5( $member->email . ':' . $member->members_pass_hash )"}" style='color: #8c8c8c; text-decoration: none; display: inline-block'>{lang="solved_reengagement_stop"}</a>.
<br /><br />
<em style='color: #8c8c8c'>&mdash; {setting="board_name"}</em>]]></template_content_html><template_data>$item, $comment, $replies, $email</template_data><template_content_plaintext><![CDATA[
{$email->language->addToStack("mail_solved_reengagement", FALSE, array( 'htmlsprintf' => array( $item->definiteArticle( $email->language ), $item->url(), $item->mapped('title') ) ) )}
-- {setting="board_name"}]]></template_content_plaintext><template_pinned>0</template_pinned></template><template><template_app>core</template_app><template_name>registration_complete</template_name><template_content_html><![CDATA[
{$email->language->addToStack("email_reg_complete", FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )}{{if $member->members_pass_hash}} {$email->language->addToStack("email_reg_complete_pass")}{{endif}}
<br />
+5 -1
View File
@@ -16,6 +16,7 @@
"NewRegComplete": "IPS\\core\\extensions\\core\\AdminNotifications\\NewRegComplete",
"License": "IPS\\core\\extensions\\core\\AdminNotifications\\License",
"Error": "IPS\\core\\extensions\\core\\AdminNotifications\\Error",
"ManualInterventionMessage": "IPS\\core\\extensions\\core\\AdminNotifications\\ManualInterventionMessage",
"NewRegValidate": "IPS\\core\\extensions\\core\\AdminNotifications\\NewRegValidate"
},
"ModCp": {
@@ -183,7 +184,6 @@
},
"CommunityEnhancements": {
"GoogleMaps": "IPS\\core\\extensions\\core\\CommunityEnhancements\\GoogleMaps",
"Viglink": "IPS\\core\\extensions\\core\\CommunityEnhancements\\Viglink",
"GeoIP": "IPS\\core\\extensions\\core\\CommunityEnhancements\\GeoIP",
"Zapier": "IPS\\core\\extensions\\core\\CommunityEnhancements\\Zapier",
"SpamMonitoring": "IPS\\core\\extensions\\core\\CommunityEnhancements\\SpamMonitoring",
@@ -204,6 +204,7 @@
"RepairFileUrls": "IPS\\core\\extensions\\core\\Queue\\RepairFileUrls",
"CleanupOrigTables": "IPS\\core\\extensions\\core\\Queue\\CleanupOrigTables",
"RebuildContentImages": "IPS\\core\\extensions\\core\\Queue\\RebuildContentImages",
"BuildTimeToRank": "IPS\\core\\extensions\\core\\Queue\\BuildTimeToRank",
"RemoveOrphanedReputation": "IPS\\core\\extensions\\core\\Queue\\RemoveOrphanedReputation",
"FixDeletionLog": "IPS\\core\\extensions\\core\\Queue\\FixDeletionLog",
"DeleteOrphanedFiles": "IPS\\core\\extensions\\core\\Queue\\DeleteOrphanedFiles",
@@ -246,6 +247,8 @@
"MoveMembers": "IPS\\core\\extensions\\core\\Queue\\MoveMembers",
"RebuildSearchIndex": "IPS\\core\\extensions\\core\\Queue\\RebuildSearchIndex",
"ResyncTopicContent": "IPS\\core\\extensions\\core\\Queue\\ResyncTopicContent",
"PrunePms": "IPS\\core\\extensions\\core\\Queue\\PrunePms",
"RebuildReportIndexData": "IPS\\core\\extensions\\core\\Queue\\RebuildReportIndexData",
"RebuildContainerCounts": "IPS\\core\\extensions\\core\\Queue\\RebuildContainerCounts",
"RebuildImageProxy": "IPS\\core\\extensions\\core\\Queue\\RebuildImageProxy",
"DeleteOrMoveContent": "IPS\\core\\extensions\\core\\Queue\\DeleteOrMoveContent",
@@ -330,6 +333,7 @@
"YourActivityStreamsItem": "IPS\\core\\extensions\\core\\FrontNavigation\\YourActivityStreamsItem"
},
"OutputPlugins": {
"GraphQl": "IPS\\core\\extensions\\core\\OutputPlugins\\GraphQl",
"Backgroundimage": "IPS\\core\\extensions\\core\\OutputPlugins\\Backgroundimage"
},
"MemberSync": {
File diff suppressed because it is too large. Load diff
+219 -72
View File
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="core" version="107014">
<app key="core" version="107601">
<word key="__app_core" js="0">System</word>
<word key="__ipbmafia__nulling_null_alert" js="0">This distribution is Nulled! You can't use this function.</word><!-- Custom alert about Null -->
<word key="__nulling_null_alert" js="0">This distribution is Nulled! You can't use this function.</word><!-- Custom alert about Null -->
<word key="__indefart_personal_conversation" js="0">a personal conversation</word>
<word key="__indefart_personal_conversation_message" js="0">a message in a personal conversation</word>
<word key="__indefart_report" js="0">a report</word>
@@ -286,6 +286,8 @@
<word key="streamsubscription_guest_thing" js="0"><![CDATA[Unsubscribe from Email Digest for <em>%s</em>]]></word>
<word key="guest_unsubscribe_choice" js="0">Unsubscribe from</word>
<word key="stream_view_more" js="0">View More</word>
<word key="acplog__streams_restored" js="0">Restored default activity streams</word>
<word key="acplog__all_activity_settings" js="0">Edited All Activity stream settings</word>
<word key="menu__core_discovery_rss" js="0">RSS Feeds</word>
<word key="rss_exports" js="0">RSS Feeds</word>
<word key="r__rss_exports" js="0">RSS Feeds</word>
@@ -400,6 +402,7 @@
<word key="editor__core_Widget" js="0">Widgets</word>
<word key="editor__core_ClubPage" js="0">Custom Club Page</word>
<word key="editor__core_ClubRules" js="0">Club Rules</word>
<word key="editor__core_Alert" js="0">Alerts</word>
<word key="image_size" js="0">Size</word>
<word key="image_border" js="0">Border</word>
<word key="image_margin" js="0">Margin</word>
@@ -606,11 +609,8 @@
<word key="mobile_menu_more" js="0">More</word>
<word key="mobile_menu_sections" js="0">Sections</word>
<word key="mobile_menu_back" js="0">Back</word>
<word key="facebook_publish_exception" js="0">Unable to publish this item to your Facebook account</word>
<word key="facebook_publish_no_user" js="0">Unable to fetch your connected Facebook account. Please visit your Settings to re-connect your Facebook account with your site account</word>
<word key="twitter_publish_exception" js="0">Unable to publish this item to your Twitter account</word>
<word key="twitter_publish_no_user" js="0">Unable to fetch your connected Twitter account. Please visit your Settings to re-connect your Twitter account with your site account</word>
<word key="view_on_facebook" js="0">View on Facebook</word>
<word key="registration" js="0">Registration</word>
<word key="register_button" js="0">Create my Account</word>
<word key="reg_admin_mails" js="0">Send me news and updates</word>
@@ -957,8 +957,6 @@
<word key="r__datastore" js="0">Can manage caching settings?</word>
<word key="acplogs__datastore_updated" js="0">Caching configuration updated</word>
<word key="acplogs__datastore_settings_updated" js="0">Caching configuration updated</word>
<word key="cache_guest_page" js="0">Cache page output for guests</word>
<word key="cache_guest_page_desc" js="0"><![CDATA[When enabled, the entire page output will be cached so if more than one guest is viewing the site, each page only needs to be generated once which can significantly decrease the resource usage of your site if you have lots of guests online at the same time.<br>The longer you cache pages for, the less often the cache will need to be refreshed (so less resources will be used) but the longer it will take for your site to be updated with the latest content. When a cached page is being shown, view counters also won't be updated.<br>If your site rarely has many guests online at the same time, it may take more resources to store the cache than is saved by it and so it may be better to disable it.<br>If you have a caching method configured that will be used, otherwise the cache is stored in the database.]]></word>
<word key="widget_cache_ttl" js="0">Cache sidebar, header and footer blocks</word>
<word key="widget_cache_ttl_desc" js="0"><![CDATA[For many blocks, getting the data every time the block needs to be shown can be bad for performance. This setting allows you to only reload the block after a set period of time.<br>This means there will be a delay before the content of blocks is changed - for example, if you set this to 5 minutes, and you have a block showing the most recent topics, it may take up to 5 minutes for a new topic to show.]]></word>
<word key="acplogs__general_settings" js="0">Updated general settings</word>
@@ -967,7 +965,7 @@
<word key="subject" js="0">Subject</word>
<word key="message" js="0">Message</word>
<word key="ipb_reg_number" js="0">Invision Community License Key</word>
<word key="learn_more" js="0">Learn More</word>
<word key="learn_more" js="0">Learn More...</word>
<word key="help" js="0">Help</word>
<word key="permanently" js="0">Permanently</word>
<word key="guest_name" js="0">Your name</word>
@@ -1004,6 +1002,8 @@
<word key="any" js="0">Any</word>
<word key="any_time" js="0">Any time</word>
<word key="any_value" js="0">Any value</word>
<word key="checked" js="0">Checked</word>
<word key="unchecked" js="0">Unchecked</word>
<word key="no_restriction" js="0">No restriction</word>
<word key="no_writes" js="0">You are not allowed to use this feature. Contact your system administrator for more information.</word>
<word key="quote" js="0">Quote</word>
@@ -1119,6 +1119,7 @@
<word key="_date_last_year_long" js="0">{!1#[1:January][2:February][3:March][4:April][5:May][6:June][7:July][8:August][9:September][10:October][11:November][12:December]} {0#}, %s</word>
<word key="_date_last_year_long_full" js="0">{!1#[1:January][2:February][3:March][4:April][5:May][6:June][7:July][8:August][9:September][10:October][11:November][12:December]} {0#}, %s at %s</word>
<word key="_date_month_year_short" js="0">{!0#[1:Jan][2:Feb][3:Mar][4:Apr][5:May][6:Jun][7:Jul][8:Aug][9:Sep][10:Oct][11:Nov][12:Dec]} %s</word>
<word key="_date_month_short" js="0">{!0#[1:Jan][2:Feb][3:Mar][4:Apr][5:May][6:Jun][7:Jul][8:Aug][9:Sep][10:Oct][11:Nov][12:Dec]}</word>
<word key="_date_format_yyyy" js="0">YYYY</word>
<word key="_date_format_mm" js="0">MM</word>
<word key="_date_format_dd" js="0">DD</word>
@@ -1538,6 +1539,19 @@
<word key="acplog__upgrade_started" js="0">Community upgrade started</word>
<word key="download_upgrade_initial_large_tables_title" js="0">Large Database Updates</word>
<word key="download_upgrade_initial_large_tables_explain" js="0">During this upgrade some changes need to be made to large database tables. Trying to do this automatically may time out, so you will be prompted to run the queries manually when required. Before continuing, connect to your your MySQL server's command line so that you will be ready to run the queries when prompted. If you are not sure how to do this, you should contact your hosting provider or system administrator for assistance.</word>
<word key="download_upgrade_initial_resource_title" js="0">Third Party Resource Check</word>
<word key="download_upgrade_initial_resource_explain" js="0"><![CDATA[<p></p>We’re checking your third party resources for compatibility before the upgrade process. This check is of the installed resources and may not find all incompatibilities during this check.</p><p>When you upgrade, your Applications and Plugins will again be scanned for compatibility issues.</p>
<p>If incompatibility is found that would cause your community to break, those Applications and Plugins will be automatically disabled.</p>]]></word>
<word key="download_upgrade_initial_resource_upgrade_updates" js="0">%s {!#[1:Resource][?:Resources]} needs updating</word>
<word key="download_upgrade_initial_resource_upgrade_updates_blurb" js="0"><![CDATA[<em>After the upgrade process is complete, install the updated resource from the Marketplace. If that updated resource is compatible, it can remain enabled. If the updated resource causes your community to break, that Application or Plugin will need to be disabled.</em>]]></word>
<word key="download_upgrade_initial_resource_upgrade_noupdate" js="0">%s {!#[1:Resource is][?:Resources are]} not compatible and does not have compatible updates</word>
<word key="download_upgrade_initial_resource_upgrade_noupdate_blurb" js="0"><![CDATA[<em>This resource can be removed if not in use. It should be assumed that this resource will be disabled during upgrade if incompatible. If this is a resource you require, you may wish to postpone the upgrade.</em>]]></word>
<word key="download_upgrade_initial_resource_upgrade_nocheck" js="0">We were unable to check the Marketplace for %s {!#[1:resource][?:resources]}.</word>
<word key="download_upgrade_initial_resource_upgrade_nocheck_blurb" js="0"><![CDATA[<em>Please check these manually on the <a href='https://invisioncommunity.com/marketplace' target='_blank'>Marketplace section of our Community</a>.</em>]]></word>
<word key="download_upgrade_initial_resource_upgrade_compatible" js="0">%s {!#[1:Resource is][?:Resources are]} marked compatible by the author.</word>
<word key="download_upgrade_initial_resource_upgrade_compatible_blurb" js="0"><![CDATA[<em>The resource may be disabled during upgrade if incompatible.</em>]]></word>
<word key="download_upgrade_initial_resource_upgrade_custom" js="0">%s Custom {!#[1:resource][?:resources]} may need attention</word>
<word key="download_upgrade_initial_resource_upgrade_custom_blurb" js="0"><![CDATA[<em>These are not able to be reviewed in this resource check. The resource may be disabled during upgrade if incompatible.</em>]]></word>
<word key="upgrade_delta_manual_query" js="0">A change needs to be made to your database. Because this affects a very large table, doing it automatically may time out. Therefore, it is recommended that you make this change by manually running the query listed below through the command line on your MySQL server.</word>
<word key="upgrade_delta_manual_query_done" js="0">I have run the query manually and confirm it ran successfully</word>
<word key="upgrade_delta_manual_query_auto" js="0">Try to run automatically</word>
@@ -1905,7 +1919,7 @@
<word key="login_handler_custom_oauth" js="0">Other OAuth 2.0</word>
<word key="login_app_help" js="0">Click here for instructions on how to set up %s login.</word>
<word key="login_auth_types" js="0">Authentication Type</word>
<word key="login_auth_types_warning" js="0">Allowing users to log in with a display name can represent a security weakness for your community because display names are public information and malicious users may attempt to login to multiple accounts with common passwords until they find an account for which the passwords work. It is recommended that you only allow users to log in with their email address.</word>
<word key="login_auth_types_warning" js="0">This is a deprecated feature. Allowing users to log in with a display name can represent a security weakness for your community because display names are public information and malicious users may attempt to login to multiple accounts with common passwords until they find an account for which the passwords work. It is recommended that you only allow users to log in with their email address. The ability to log in using display names will be removed in a future version.</word>
<word key="login_external_conn" js="0">Database Connection Details</word>
<word key="login_external_host" js="0">MySQL Host</word>
<word key="login_external_user" js="0">MySQL Username</word>
@@ -2012,6 +2026,7 @@
<word key="login_settings" js="0">Login</word>
<word key="registration_settings" js="0">Registration</word>
<word key="login_acp" js="0">Allow Admin CP logins?</word>
<word key="login_front" js="0">Allow front-end logins?</word>
<word key="login_acp_cannot_reauth" js="0">The user will not be prompted to re-enter their password. It is recommended you leave this disabled.</word>
<word key="login_acp_will_reauth" js="0">The user will be required to re-enter their password when logging into the AdminCP so it is safe to enable this option.</word>
<word key="login_register" js="0">When a user signs in for the first time</word>
@@ -2506,6 +2521,12 @@
<word key="ipAddresses__core_Logins" js="0">Device Logins</word>
<word key="device_info" js="0">Information</word>
<word key="ucp_devices" js="0">Recently Used Devices</word>
<word key="ucp_devices_email" js="0">Email Notification</word>
<word key="ucp_devices_email_desc" js="0">When enabled you will receive a notification whenever a new device is used to log in to your account.</word>
<word key="ucp_devices_email_off" js="0">Disabled</word>
<word key="ucp_devices_email_on" js="0">Enabled</word>
<word key="ucp_devices_email_enable" js="0">Enable</word>
<word key="ucp_devices_email_disable" js="0">Disable</word>
<word key="MFA_core_DeviceManagement" js="0">Managing Authorized Devices</word>
<word key="current_device" js="0">Current Device</word>
<word key="device_last_loggedin" js="0">Last logged in %s</word>
@@ -2611,9 +2632,17 @@
<word key="force_password_reset_warning" js="0">Running this tool will invalidate existing passwords, log them out, and email users instructing them to reset their passwords before they can login again. You would only want to run this tool if there has been an unauthorized access to your database, that may have exposed your user data.</word>
<word key="reset_password" js="0">Reset Password</word>
<word key="reset_password_pl" js="0">Reset Passwords</word>
<word key="acplog__reset_password_member" js="0">Password reset for %s</word>
<word key="acplog__reset_password_all" js="0">All member passwords reset</word>
<word key="members_force_password_reset_acp_header" js="0">Reset passwords for members where:</word>
<word key="members_member_rank_id" js="0">Rank</word>
<word key="members_achievements_points" js="0">Rank</word>
<word key="acplog__recount_member_content" js="0">Recounted all members content</word>
<word key="acplog__recount_member_rep" js="0">Recounted all members reputation</word>
<word key="acplog__deleted_guest_content" js="0">Deleted guest content: %s</word>
<word key="acplog__member_reaction_removed_given" js="0">Removed reactions given: %s</word>
<word key="acplog__member_reaction_removed_received" js="0">Removed reactions received: %s</word>
<word key="acplog__member_pii_exported" js="0">Member personal information exported: %s</word>
<word key="modlog__spammer_flagged" js="0">Flagged as spammer: %s</word>
<word key="modlog__spammer_unflagged" js="0">Unflagged as spammer: %s</word>
<word key="modlog__action_hide" js="0"><![CDATA[Hid a %s: <a href='%s'>%s</a>]]></word>
@@ -2855,6 +2884,18 @@
<word key="mailsub__core_notification_my_solution" js="0"><![CDATA[You solved the {$content->definiteArticle()}: {$content->mapped("title")|raw}]]></word>
<word key="mail_your_content_is_solved" js="0"><![CDATA[Good news! <a href='%s'>A reply</a> to <a href='%s'>%s</a> was marked as the solution to your %s]]></word>
<word key="mail_your_post_is_solution" js="0"><![CDATA[Good news! <a href='%s'>Your post</a> in <a href='%s'>%s</a> was marked as the solution.]]></word>
<word key="mailsub__core_solved_reengagement" js="0">Did this answer your question?</word>
<word key="emailtpl_solved_reengagement" js="0">Solved Re-engagement</word>
<word key="emailstats_solved_reengagement" js="0">Solved Re-engagement</word>
<word key="mail_solved_reengagement" js="0"><![CDATA[There have been replies to your %s, <a href='%s'>%s</a>.]]></word>
<word key="mail_solved_reengagement_solved" js="0"><![CDATA[<strong>Did any of these replies answer your question?</strong> There may be more replies than those shown here.]]></word>
<word key="mail_solved_reengagement_wyw" js="0">Here's what you wrote:</word>
<word key="mail_solved_reengagement_others" js="0">Here's what others said:</word>
<word key="mail_solved_reengagement_action" js="0">Help others by going to the topic and use the 'Mark as Solution’ button on the post with the best answer</word>
<word key="unsubscribed_solved_desc" js="0">You will no longer receive reminders to mark replies to your topics as answers.</word>
<word key="solved_reengage_on" js="0">Email reminders to mark replies as solved</word>
<word key="mark_solved_reengage_back_on" js="0">You will now receive email reminders to mark replies as solved. You can disable this via a link in the email.</word>
<word key="solved_reengagement_stop" js="0">Stop receiving these reminder emails</word>
<word key="emailstats__notification_minesolved" js="0">Topic Solutions</word>
<word key="emailtpl__notification_minesolved" js="0">Topic Solutions</word>
<word key="emailstats__notification_my_solution" js="0">User Solutions</word>
@@ -3222,19 +3263,6 @@
<word key="sendgrid_click_tracking" js="0">Track opens and clicks?</word>
<word key="sendgrid_click_tracking_desc" js="0">If enabled, SendGrid will keep track of if emails are opened and if the recipient clicks on any links and allow you to view this information on their website.</word>
<word key="sendgrid_api_key_suffix" js="0"><![CDATA[<a href='{external.sendgrid_api_key}' target='_blank'>Create API Key</a>]]></word>
<word key="enhancements__core_Viglink" js="0">VigLink</word>
<word key="enhancements__core_Viglink_desc" js="0">Get paid for clicks from your site.</word>
<word key="viglink_enabled" js="0">VigLink Enabled</word>
<word key="viglink_api_key" js="0">API Key</word>
<word key="viglink_groups" js="0">Enabled for</word>
<word key="viglink_groups_desc" js="0">Users in these groups will have the links they click tracked through VigLink.</word>
<word key="viglink_norewrite" js="0">Bypass content by</word>
<word key="viglink_norewrite_desc" js="0">Content submitted by users in these groups will not be handled through VigLink.</word>
<word key="viglink_account_type" js="0">VigLink Account</word>
<word key="viglink_account_type_create" js="0">Create New Account</word>
<word key="viglink_account_existing" js="0">Use Existing Account</word>
<word key="viglink_api_key_desc" js="0"><![CDATA[You can get your API key from the <a href='{external.viglink_account}' target='_blank' rel='noopener'>VigLink account settings</a>.]]></word>
<word key="viglink_error" js="0">We could not connect with VigLink. Please try again later or contact technical support for assistance.</word>
<word key="enhancements__core_Zapier" js="0">Zapier</word>
<word key="enhancements__core_Zapier_desc" js="0">Create workflows to automate tasks and integrate your community with any of the apps supported by Zapier.</word>
<word key="zapier_setup_intro" js="0"><![CDATA[To get started, go to the <a href='{external.zapier_apps}' target='_blank' rel='noopener'>My Apps</a> section of your Zapier account, and choose Invision Community. When prompted, provide the following details:]]></word>
@@ -3737,6 +3765,7 @@
<word key="cannot_react" js="0">You cannot react on this</word>
<word key="leaderboard_excluded_groups" js="0">Exclude these groups</word>
<word key="leaderboard_excluded_groups_desc" js="0"><![CDATA[Members in these groups will not be included in the leaderboard.<br>After changing this setting, you may like to <a data-ipsDialog data-ipsDialog-title='Rebuild Leaderboard' href='{internal.app=core&module=membersettings&controller=reputation&do=rebuildLeaderboard}'>rebuild the leaderboard</a> to remove members of excluded groups from historical results.]]></word>
<word key="acplog__rebuilt_leaderboard" js="0">Rebuilt the leaderboard</word>
<word key="tags_enabled" js="0">Tagging Enabled?</word>
<word key="tags_enabled_desc" js="0"><![CDATA[You can control which members can use tags from <a href='{internal.app=core&module=members&controller=groups}'>Group Settings</a>.]]></word>
<word key="tags_can_prefix" js="0">Prefixes Enabled?</word>
@@ -3947,6 +3976,8 @@
<word key="siteprofilelink_weibo" js="0">Weibo</word>
<word key="siteprofilelink_vk" js="0">VKontakte</word>
<word key="siteprofilelink_tumblr" js="0">Tumblr</word>
<word key="siteprofilelink_discord" js="0">Discord</word>
<word key="siteprofilelink_twitch" js="0">Twitch</word>
<word key="site_social_profiles" js="0">Social Profiles</word>
<word key="site_social_profiles_desc" js="0">Displays social media icons in the header or footer of your site, per your theme setting, linking to the entered social profile URLs.</word>
<word key="site_twitter_id" js="0">Website Twitter ID</word>
@@ -4143,6 +4174,7 @@
<word key="no_data" js="0">No data to show</word>
<word key="overview_stats_form" js="0">Configure filters</word>
<word key="overview_stats_curfilter" js="0">Limited to %s</word>
<word key="stats_overview_others" js="0">Others</word>
<word key="r__settings" js="0">Settings</word>
<word key="r__settings_manage" js="0">Can change settings?</word>
<word key="r__core_manage_apps" js="0">Manage Applications</word>
@@ -4796,8 +4828,10 @@
<word key="core_theme_set_header_and_footer_header" js="0">Header and Footer</word>
<word key="theme_simple_header_settings" js="0">Header HTML</word>
<word key="theme_simple_footer_settings" js="0">Footer HTML</word>
<word key="theme_simple_header_settings_desc" js="0"><![CDATA[This HTML code will be added directly after the opening &lt;body&gt; tag replacing the {theme="header"} tag]]></word>
<word key="theme_simple_footer_settings_desc" js="0"><![CDATA[This HTML code will be added directly before the closing &lt;body&gt; tag replacing the {theme="footer"} tag]]></word>
<word key="theme_simple_header_settings_desc" js="0"><![CDATA[This HTML code will be added directly after the opening &lt;body&gt; tag replacing the {theme="headerHtml"} tag]]></word>
<word key="theme_simple_footer_settings_desc" js="0"><![CDATA[This HTML code will be added directly before the closing &lt;body&gt; tag replacing the {theme="footerHtml"} tag]]></word>
<word key="acplog__theme_converted_custom" js="0">Theme converted from easy mode - %s</word>
<word key="acplog__theme_member_reset" js="0">Reset member themes</word>
<word key="theme_set_manage_resources" js="0">Manage resources</word>
<word key="theme_custom_resources_page_title" js="0">Theme Resources: %s</word>
<word key="core_theme_resources_resource_data" js="0">Preview</word>
@@ -4824,6 +4858,9 @@
<word key="core_theme_resource_name_choice_o_existing_desc" js="0"><![CDATA[It is recommended to keep the existing name, even if the file extension has changed.<br>This will not prevent this resource from being loaded and you will not need to update your templates.]]></word>
<word key="core_theme_resource_name_choice_o_filename" js="0">Use uploaded file's name</word>
<word key="core_theme_resource_name_choice_o_filename_desc" js="0">If the file's name is different from the original file, you will need to update all {resource=&quot;%s&quot;} references in your templates.</word>
<word key="acplog__theme_resource_deleted" js="0">Resource deleted - %s</word>
<word key="acplog__theme_resource_edited" js="0">Resource edited - %s</word>
<word key="acplog__theme_resource_added" js="0">Resource added - %s</word>
<word key="core_theme_set_diff" js="0">Differences</word>
<word key="theme_set_export" js="0">Download</word>
<word key="theme_set_export_title" js="0">Download %s</word>
@@ -4872,6 +4909,7 @@
<word key="acplogs__theme_setting_edited" js="0">Theme setting edited - %s</word>
<word key="acplogs__theme_setting_created" js="0">Theme setting created - %s</word>
<word key="acplogs__theme_setting_deleted" js="0">Theme setting deleted - %s</word>
<word key="acplogs__theme_setting_reverted" js="0">Theme setting reverted - %s</word>
<word key="theme_custom_setting_type" js="0">Type</word>
<word key="theme_custom_setting_type_other" js="0">Other / Manual</word>
<word key="theme_custom_setting_manual_code" js="0">Code</word>
@@ -5083,6 +5121,8 @@
<word key="google_maps_api_key" js="0">API Key</word>
<word key="google_maps_api_key_secret" js="0">API Key</word>
<word key="google_maps_create_restrictions" js="0"><![CDATA[Click <strong>Restrict Key</strong> and enter the following details:]]></word>
<word key="google_maps_static_use_embed" js="0">Interactive Map Embeds?</word>
<word key="google_maps_static_use_embed_desc" js="0">Use an Interactive Google Maps Embed instead of a statically generated image of the map.</word>
<word key="google_maps_api_key_name" js="0">Name</word>
<word key="google_maps_api_key_public" js="0">Public Key</word>
<word key="google_maps_api_key_secret_name" js="0">Secret Key</word>
@@ -5456,7 +5496,7 @@
<word key="emoji_style_desc" js="0">Regardless of option chosen, users will still be able to enter emoji using their device's emoji keyboard, which will display in native style. Non-native styles will not show in areas which show text only such as activity streams and search results.</word>
<word key="emoji_style_native" js="0">Native</word>
<word key="emoji_style_native_desc" js="0">The style provided by the user's device. Users on older platforms may not see emoji.</word>
<word key="emoji_style_twemoji" js="0"><![CDATA[Twitter Style<br><div class='ipsType_large ipsSpacer_top ipsSpacer_half'><img src='https://twemoji.maxcdn.com/2/72x72/1f600.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f609.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f602.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f60d.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f918.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f926-200d-2640-fe0f.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f937-200d-2642-fe0f.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f37f.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f680.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f389.png' class='ipsEmoji'> <img src='https://twemoji.maxcdn.com/2/72x72/1f3f3-fe0f-200d-1f308.png' class='ipsEmoji'></div>]]></word>
<word key="emoji_style_twemoji" js="0"><![CDATA[Twitter Style<br><div class='ipsType_large ipsSpacer_top ipsSpacer_half'><img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f600.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f609.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f602.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f60d.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f918.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f926-200d-2640-fe0f.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f937-200d-2642-fe0f.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f37f.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f680.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f389.png' class='ipsEmoji'> <img src='https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f3f3-fe0f-200d-1f308.png' class='ipsEmoji'></div>]]></word>
<word key="emoji_style_twemoji_desc" js="0">Will show consistently on all devices.</word>
<word key="emoji_style_disabled" js="0">Do not show standard emoji</word>
<word key="emoji_utf8mb4_required" js="0"><![CDATA[To enable standard emoji support, you must <a href='{internal.app=core&module=support&controller=utf8mb4}' target='_blank' rel='noopener'>convert your database to 4-Byte UTF-8 Encoding</a>.]]></word>
@@ -5465,6 +5505,7 @@
<word key="emoji_shortcodes_desc" js="0"><![CDATA[<mark>:smiley:</mark> <mark>:wink:</mark> <mark>:joy:</mark> <mark>:heart_eyes:</mark> <mark>:the_horns:</mark> <mark>:woman-facepalming:</mark> <mark>:man-shrugging:</mark> <mark>:popcorn:</mark> <mark>:rocket:</mark> <mark>:tada:</mark> <mark>:rainbow-flag:</mark><br>As the user types, suggestions will appear. Any custom emoji you have set up with text starting and ending with : will be included.]]></word>
<word key="emoji_ascii" js="0">Replace text with emoji?</word>
<word key="emoji_ascii_desc" js="0"><![CDATA[<mark>=)</mark> <mark>;)</mark>]]></word>
<word key="acplog__emoticon_set_deleted" js="0">Emoji set deleted</word>
<word key="storage_settings" js="0">Storage Settings</word>
<word key="image_settings" js="0">Image Settings</word>
<word key="image_suite" js="0">Image Suite</word>
@@ -5640,6 +5681,7 @@
<word key="rebuilding_content_images" js="0">Rebuilding %s images</word>
<word key="rebuilding_noncontent_images" js="0">Rebuilding %s images</word>
<word key="rebuilding_noncontent_posts" js="0">Rebuilding %s</word>
<word key="rebuilding_report_index_data" js="0">Rebuilding report center data</word>
<word key="recounting_posts" js="0">Recalculating members' content count</word>
<word key="recounting_reputation" js="0">Recalculating members' reputation count</word>
<word key="recounting_votes" js="0">Recounting poll votes</word>
@@ -5691,6 +5733,9 @@
<word key="profanity_block" js="0">Block Submission</word>
<word key="profanity_block_public_explanation" js="0">Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.</word>
<word key="profanity_already_exists" js="0">There is an existing filter for this word</word>
<word key="acplog__profanity_edited" js="0">Profanity edited</word>
<word key="acplog__profanity_added" js="0">Profanity added</word>
<word key="acplog__profanity_deleted" js="0">Profanity deleted</word>
<word key="menu__core_promotion" js="0">Site Promotion</word>
<word key="menu__core_promotion_seo" js="0">Search Engine Optimization</word>
<word key="button_link_seo" js="0">Search Engine Optimization Settings</word>
@@ -5811,7 +5856,7 @@
<word key="acplog_ad_disabled" js="0">Disabled an advertisement</word>
<word key="ad_toggled_visible" js="0">Advertisement is now enabled</word>
<word key="ad_toggled_notvisible" js="0">Advertisement is now disabled</word>
<word key="ad_script_disabled" js="0">Javascript disabled for security</word>
<word key="ad_script_disabled" js="0">Previews for adverts containing javascript are disabled in the admin control panel for security reasons.</word>
<word key="ad_not_found" js="0">We could not find the page that the advertisement intended to send you to</word>
<word key="ad_not_found_admin" js="0">An advertisement was clicked on, however we either could not find the advertisement record in the database, or no URL was supplied to send the user to when the image was clicked on.</word>
<word key="_ad_custom_" js="0">Define your own locations</word>
@@ -6048,7 +6093,6 @@
<word key="share_autoshare_Twitter" js="0">Users can share immediately when posting?</word>
<word key="share_autoshare_Twitter_desc" js="0">If a user has signed in with Twitter they will see a checkbox when submitting content to share it on Twitter after posting.</word>
<word key="share_autoshare_Twitter_disabled" js="0"><![CDATA[To enable this option, you need to <a href='{internal.app=core&module=settings&controller=login}'>set up Twitter login</a>.]]></word>
<word key="auto_share_facebook" js="0"><![CDATA[<i class='fa fa-facebook-official'></i> Share on Facebook]]></word>
<word key="auto_share_twitter" js="0"><![CDATA[<i class='fa fa-twitter'></i> Share on Twitter]]></word>
<word key="share_this_comment" js="0">Share this comment</word>
<word key="link_to_comment" js="0">Link to comment</word>
@@ -6157,6 +6201,9 @@
<word key="reviews_rating_out_of_desc" js="0"><![CDATA[Note: changing this setting will <strong>not</strong> recalculate current votes. This will mean that any current votes will be calculated at either half or double their true value.]]></word>
<word key="reviews_rating_out_of_5" js="0">5 stars</word>
<word key="reviews_rating_out_of_10" js="0">10 stars</word>
<word key="acplog__acronym_added" js="0">Acronym added</word>
<word key="acplog__acronym_edited" js="0">Acronym edited</word>
<word key="acplog__acronym_deleted" js="0">Acronym deleted</word>
<word key="task__postBeforeRegisterFollowup" js="0">Sends emails to guests who have made a post but haven't completed registration.</word>
<word key="unsubscribe_not_needed" js="0">If you do not take any action, we will delete your email address and not contact you again. There is no need to unsubscribe.</word>
<word key="post_before_register_followup_text" js="0">Thanks for your submission! Before your content can be seen by other members, we need to create an account for you.</word>
@@ -6363,6 +6410,9 @@
<word key="lang_author_name" js="0">Author Name</word>
<word key="lang_author_url" js="0">Author URL</word>
<word key="lang_installed" js="0">The language pack has been installed</word>
<word key="acplog__custom_word_added" js="0">Added phrase - %s</word>
<word key="acplog__custom_word_deleted" js="0">Custom phrase deleted - %s</word>
<word key="acplog__language_settings_edited" js="0">Edited language settings</word>
<word key="r__dashboard" js="0">Dashboard</word>
<word key="r__view_dashboard" js="0">Can view dashboard?</word>
<word key="manage_button" js="0">Manage</word>
@@ -6428,6 +6478,7 @@
<word key="backgroundQueue_membercontent_merge" js="0">Merging %s's %s</word>
<word key="backgroundQueue_importing_english" js="0">Importing %s English Language Pack for IPS Temp Admin Account</word>
<word key="background_process_more" js="0">and {# [?:more]}...</word>
<word key="acplog__background_tasks_ran" js="0">Ran background tasks</word>
<word key="dashboard_log_not_writeable" js="0">Log Directory Not Writeable</word>
<word key="dashboard_log_not_writeable_desc" js="0">Your install is configured to write certain logs to %s. Please make this folder writeable</word>
<word key="dashboard_tasks_broken" js="0">Locked Task: %s</word>
@@ -7444,9 +7495,16 @@
<word key="report_err_already_reported" js="0">You have already reported that.</word>
<word key="num_reports" js="0">{!#[1:report][?:reports]}</word>
<word key="report_center_header" js="0">User Reported Content</word>
<word key="filter_report_status_1" js="0">All New Reports</word>
<word key="filter_report_status_1_app" js="0">New Reports from %s</word>
<word key="filter_report_status_2" js="0">All Under Review</word>
<word key="filter_report_status_3" js="0">All Complete</word>
<word key="report_status_1" js="0">New Report</word>
<word key="report_status_2" js="0">Under Review</word>
<word key="report_status_3" js="0">Complete</word>
<word key="menu_report_status_1" js="0">New Report</word>
<word key="menu_report_status_2" js="0">Under Review</word>
<word key="menu_report_status_3" js="0">Complete</word>
<word key="report_from" js="0">From %s %s</word>
<word key="report__comment_placeholder" js="0">Comment on this report...</word>
<word key="report_submit_comment" js="0">Submit Comment</word>
@@ -7609,6 +7667,8 @@
<word key="plugin_already_installed" js="0"><![CDATA[That plugin is already installed. Did you mean to <a href='%s'>upload a new version</a>?]]></word>
<word key="plugins_disable_all" js="0">Disable All</word>
<word key="plugins_reenable_all" js="0">Re-enable All</word>
<word key="acplogs__all_plugins_disabled" js="0">Disabled all plugins</word>
<word key="acplogs__all_plugins_reenabled" js="0">Re-enabled all plugins</word>
<word key="empty_profile" js="0">This user doesn't have anything to show here right now.</word>
<word key="profile_contact" js="0">Contact Information</word>
<word key="profile_email" js="0">Email</word>
@@ -7902,6 +7962,7 @@
<word key="menu__core_diagnostics_errorLogs" js="0">Error Logs</word>
<word key="support" js="0">Support</word>
<word key="acplog__support_tool_ran" js="0">Support tool ran</word>
<word key="acplog__support_tool_admin" js="0">Created support administrator account</word>
<word key="acp_search_title_core_Members" js="0">Members</word>
<word key="acp_search_title_core_Groups" js="0">Groups</word>
<word key="acp_search_title_core_Settings" js="0">Settings</word>
@@ -8128,6 +8189,8 @@
<word key="search_month" js="0">Past month</word>
<word key="search_six_months" js="0">Past six months</word>
<word key="search_year" js="0">Past year</word>
<word key="show_all" js="0">Anytime</word>
<word key="reply" js="0">Reply</word>
<word key="search_user_reviewed" js="0">%s reviewed this</word>
<word key="search_user_commented" js="0">%s commented on this</word>
<word key="search_everything" js="0">All Content</word>
@@ -8556,6 +8619,7 @@
<word key="recovery_plugins_disabled" js="0">The following third party plugins were disabled:</word>
<word key="recovery_theme_restored" js="0">The default theme has been restored.</word>
<word key="recovery_end_blurb" js="0">You should now remove the following line from your constants.php file.</word>
<word key="acplog__enabled_recovery" js="0">Enabled recovery mode</word>
<word key="category_name" js="0">Name</word>
<word key="category_description" js="0">Description</word>
<word key="cdesc" js="0">Description</word>
@@ -8738,6 +8802,7 @@
<word key="__api_core_clubs" js="0">Clubs</word>
<word key="__api_core_warnreasons" js="0">Warn Reasons</word>
<word key="__api_core_webhooks" js="0">Webhooks</word>
<word key="__api_core_promotions" js="0">Promoted Items</word>
<word key="api_instructions_intro" js="0">In order to use the REST API:</word>
<word key="api_instructions_1" js="0"><![CDATA[Download <a href='{internal.app=core&module=applications&controller=api&do=htaccess}'>this file</a>.]]></word>
<word key="api_instructions_2" js="0"><![CDATA[Upload it to the <strong>/api</strong> folder in your site's directory (%s/api).]]></word>
@@ -9264,6 +9329,7 @@
<word key="received_x_points" js="0">{# [1:reputation point][?:reputation points]}</word>
<word key="repuation_points" js="0">Reputation Points</word>
<word key="removing_orphaned_reputation" js="0">Removing orphan %s reputation</word>
<word key="hooks_hooks_id" js="0">ID</word>
<word key="hooks_hooks_type" js="0">Type</word>
<word key="hooks_hooks_class" js="0">Class</word>
<word key="hooks_hooks_plugin" js="0">Plugin</word>
@@ -9277,26 +9343,12 @@
<word key="menu__core_promotion_promote" js="0">Social Media Promotion</word>
<word key="r__promote" js="0">Promote</word>
<word key="r__promote_manage" js="0">Can manage Promote settings?</word>
<word key="promote_tab_facebook" js="0">Facebook Promotion</word>
<word key="promote_tab_twitter" js="0">Twitter Promotion</word>
<word key="promote_tab_internal" js="0">Our Picks</word>
<word key="promote_tab_permissions" js="0">Permissions</word>
<word key="promote_facebook_setup_app" js="0">Facebook application not set up</word>
<word key="promote_facebook_setup_app_desc" js="0">To promote items to Facebook, you will need to first set up Facebook login.</word>
<word key="promote_facebook_setup_button" js="0">Set up Facebook Application</word>
<word key="promote_facebook_setup_user" js="0">Your account is not linked to a Facebook account</word>
<word key="promote_facebook_setup_user_desc" js="0">To promote items to Facebook, you will need to first link your user account to your Facebook account.</word>
<word key="promote_facebook_setup_user_button" js="0">Link your user account</word>
<word key="promote_facebook_setup_post" js="0">You have not granted Facebook permissions to manage pages</word>
<word key="promote_facebook_setup_post_desc" js="0">To post to a Facebook page, you first need to grant the following permissions: 'manage_pages' and 'publish_pages'.</word>
<word key="promote_facebook_setup_post_button" js="0">Grant Facebook Permissions</word>
<word key="promote_facebook_enabled" js="0">Enable</word>
<word key="promote_facebook_shareable" js="0">Allow promotion to</word>
<word key="promote_facebook_shareable_desc" js="0">When promoting an item, you can choose which of the selected Facebook properties to share to.</word>
<word key="promote_reload_page" js="0">I've done this...</word>
<word key="promote_facebook_remove_user" js="0">Disassociate Facebook User and Restart Process</word>
<word key="promote_service_name_missing" js="0">Facebook Page or Group</word>
<word key="promote_internal_enabled" js="0">Enable</word>
<word key="acplog__facebook_promote_auth_edited" js="0">Facebook promotion authentication edited</word>
<word key="promote_groups" js="0">Groups that can promote</word>
<word key="promote_groups_desc" js="0">You can optionally choose to allow entire groups to promote items.</word>
<word key="promote_members" js="0">Members that can promote</word>
@@ -9307,11 +9359,6 @@
<word key="promote_twitter_setup_user" js="0">You have not linked to a Twitter account</word>
<word key="promote_twitter_setup_user_desc" js="0">To promote items to Twitter, you will need to first link to your Twitter account.</word>
<word key="promote_twitter_setup_user_button" js="0">Link your user account</word>
<word key="promote_facebook_owned_by_you" js="0">You set up Facebook promotion</word>
<word key="promote_facebook_owned_by_user" js="0">%s set up Facebook promotion</word>
<word key="promote_facebook_owned_by_user_blurb" js="0"><![CDATA[Linked with <a href='https://facebook.com/%s' target='_blank' rel='noopener'>%s</a>.]]></word>
<word key="promote_facebook_remove_settings" js="0">Remove all current Facebook settings</word>
<word key="promote_facebook_remove_settings_other" js="0">Remove all of %s's Facebook settings</word>
<word key="promote_twitter_owned_by_you" js="0">You set up Twitter promotion</word>
<word key="promote_twitter_owned_by_user" js="0">%s set up Twitter promotion</word>
<word key="promote_twitter_owned_by_you_blurb" js="0"><![CDATA[Linked with <a href='https://twitter.com/%s' target='_blank' rel='noopener'>%s</a>]]></word>
@@ -9334,28 +9381,22 @@
<word key="bitly_auth_failed" js="0">Bitly authentication failed, please ensure the access token is correct.</word>
<word key="promote_twitter_tags" js="0">Hashtags</word>
<word key="promote_twitter_tags_desc" js="0">Enter hashtags to auto append to shared items. You can edit them before sharing to Twitter.</word>
<word key="promote_facebook_tags_desc" js="0">Enter hashtags to auto append to shared items. You can edit them before sharing to Facebook.</word>
<word key="promote_twitter_tags_method_fill" js="0">Fill up any free character space with as many hashtags as possible</word>
<word key="promote_twitter_tags_method_trim" js="0">Trim the tweet to use as many hashtags as possible</word>
<word key="promote_twitter_tags_method" js="0">How many hashtags to use?</word>
<word key="promote_twitter_sorted" js="0">Twitter Set Up Completed</word>
<word key="promote_facebook_tags" js="0">Hashtags</word>
<word key="promote_facebook_page_prefix" js="0">%s</word>
<word key="promote_facebook_group_prefix" js="0"><![CDATA[<i class='fa fa-users' aria-hidden='true'></i> %s]]></word>
<word key="promotes_no_facebook_properties" js="0">You haven't selected any Facebook Groups or Pages</word>
<word key="acplogs__promote_save" js="0">Promote settings updated - %s</word>
<word key="acplogs__promote_changed_links" js="0">link settings</word>
<word key="acplogs__promote_changed_twitter" js="0">Twitter settings</word>
<word key="acplogs__promote_changed_facebook" js="0">Facebook settings</word>
<word key="acplogs__promote_changed_community" js="0">Community settings</word>
<word key="acplogs__promote_changed_schedule" js="0">schedule settings</word>
<word key="acplogs__promote_changed_permissions" js="0">permission settings</word>
<word key="promote_internal_title" js="0">Our picks is a way to curate interesting content for your community</word>
<word key="promote_internal_desc" js="0">When sharing to social media, you can add notes to content and have them shown as a list, or via a widget to your members.</word>
<word key="promote_acp_blurb" js="0"><![CDATA[Promoting content from your community on your community's Facebook Page or Twitter account can help bring traffic to you.<br>You can link your accounts here and then select staff members to share content on your community to them.]]></word>
<word key="promote_acp_blurb" js="0"><![CDATA[Promoting content from your community on your community's Twitter account can help bring traffic to you.<br>You can link your accounts here and then select staff members to share content on your community to them.]]></word>
<word key="group_social_promotion" js="0">Social Media Promotion</word>
<word key="gbw_promote" js="0">Can promote to social media?</word>
<word key="gbw_promote_desc" js="0">Allows members to use the promote system to post to your community's Facebook and Twitter pages if set up, and also to add items to the 'Our Picks' list.</word>
<word key="gbw_promote_desc" js="0">Allows members to use the promote system to post to your community's Twitter pages if set up, and also to add items to the 'Our Picks' list.</word>
<word key="promote_permission_title" js="0">Which groups can promote to social media and add to 'Our Picks'?</word>
<word key="promote_permission_desc" js="0">The following groups all have permission: %s</word>
<word key="promote_permission_none_desc" js="0"><![CDATA[No groups are currently set up to share to social media. You can allow this via <a href='{internal.app=core&module=members&controller=groups}'>editing individual member groups</a> and allowing Social Media Promoting on the Content tab.]]></word>
@@ -9367,15 +9408,6 @@
<word key="promote_logs_response_json" js="0">Data returned</word>
<word key="promote_logs_response_failed" js="0">Success</word>
<word key="promote_logs_response_date" js="0">Date</word>
<word key="promote_facebook_auth_choose" js="0">Use Facebook application</word>
<word key="promote_facebook_auth_choose_default" js="0">Use the same Facebook application as the Facebook log in handler</word>
<word key="promote_facebook_auth_choose_custom" js="0">Use a different Facebook application for social promotion</word>
<word key="promote_facebook_auth_choose_custom_desc" js="0"><![CDATA[This can be used to complete a Facebook app review by setting up a <a href='{external.facebook-test-apps}' target='_blank'>Facebook test app</a>.]]></word>
<word key="promote_facebook_auth_id" js="0">App ID</word>
<word key="promote_facebook_auth_secret" js="0">App Secret</word>
<word key="promote_facebook_sorted" js="0">Facebook Set Up Completed</word>
<word key="promote_facebook_done" js="0">Thanks!</word>
<word key="promote_facebook_done_text" js="0">You've connected your account, you can now close this window and go back to the AdminCP.</word>
<word key="promote_link_long" js="0">Full link</word>
<word key="promote_link_short" js="0">Short link</word>
<word key="promote_social_title" js="0">Promote to social media</word>
@@ -9384,8 +9416,6 @@
<word key="promote_media" js="0"></word>
<word key="promote_meta_promote_media" js="0">Upload new images</word>
<word key="promote_meta_0" js="0">Optionally attach images from content</word>
<word key="promote_social_content_facebook" js="0"><![CDATA[<span class='cPromoteDialog_icon cPromoteDialog_icon_facebook'><i class='fa fa-facebook'></i></span><a href='#' title='Don&#39;t share to Facebook on this occasion' data-ipsTooltip class='cPromote_hide' data-action='cancelShare'>&times;</a>]]></word>
<word key="promote_social_content_facebook_desc" js="0"><![CDATA[<span class='cPromoteCount' data-action='counter' data-count-field='promote_social_content_facebook' data-limit='2000' data-ipsTooltip title='Characters Remaining'>2000</span>Content that will be shared to <span data-role='promoteFacebookOptions'></span>. <a href='#' id='elFacebookOptions' data-ipsMenu data-ipsMenu-appendTo='#elPromoteDialogContent'>Change <i class='fa fa-caret-down'></i></a>]]></word>
<word key="profilesync_extra_permissions_header" js="0">Extra permissions required</word>
<word key="profilesync_extra_permissions_required" js="0">To enable extra functionality, we need to request extra permissions. The extra permissions required are %s. To correct, sign in again below.</word>
<word key="promote_scheduling_header" js="0">Scheduling</word>
@@ -9414,9 +9444,6 @@
<word key="promote_social_content_internal" js="0"><![CDATA[<span class='cPromoteDialog_icon cPromoteDialog_icon_internal'><i class='fa fa-plus'></i></span><a href='#' title='Don&#39;t share to the community on this occasion' data-ipsTooltip class='cPromote_hide' data-action='cancelShare'>&times;</a>]]></word>
<word key="promote_social_content_internal_desc" js="0"><![CDATA[<span class='cPromoteCount' data-action='counter' data-count-field='promote_social_content_internal' data-limit='2000' data-ipsTooltip title='Characters Remaining'>2000</span>Content that will be shared to this community. <a href='#' id='elInternalTitle' data-ipsMenu data-ipsMenu-appendTo='#elPromoteDialogContent'>Set a custom 'Our Picks' title <i class='fa fa-caret-down'></i></a>]]></word>
<word key="promote_show_original_content" js="0">Show original content</word>
<word key="promotes_no_facebook_content" js="0">Facebook's platform policy prohibits pre-filling shareable text.
You can use the link and original content boxes above to curate your own content.</word>
<word key="promotes_box_empty" js="0">Why is this box empty?</word>
<word key="promote_twitter_done" js="0">Thanks %s!</word>
<word key="promote_twitter_done_text" js="0">You've connected your account, you can now close this window and go back to the AdminCP.</word>
<word key="promote_service_failed" js="0">This service failed</word>
@@ -9596,6 +9623,7 @@ You can use the link and original content boxes above to curate your own content
<word key="acplog__node_deleted_club" js="0">Deleted %s - %s in club %s</word>
<word key="club_delete_blurb" js="0">Choose where you want to move the content in the club to. Moving/deleting is handled in the background and may take a while to process.</word>
<word key="acplog__club_deleted" js="0">Deleted Club - %s</word>
<word key="acplog__club_approved" js="0">Approved Club - %s</word>
<word key="club_container_title" js="0">%s's %s</word>
<word key="club_node_selector_global" js="0">Community</word>
<word key="club_node_selector_clubs" js="0">Clubs</word>
@@ -9788,6 +9816,8 @@ You can use the link and original content boxes above to curate your own content
<word key="accept" js="0">Accept</word>
<word key="accepted" js="0">Accepted</word>
<word key="clubs_rules_accept_msg" js="0">Before you can join this club, you must accept these rules and guidelines.</word>
<word key="edit_page" js="0">Edit This Page</word>
<word key="delete_page" js="0">Delete This Page</word>
<word key="profile_settings_ignore" js="0">Ignoring</word>
<word key="ignore_system_on" js="0">Allow members to ignore other members?</word>
<word key="ignore_system_on_desc" js="0"><![CDATA[Ignoring a member hides all their posts. You can restrict <a href='{internal.app=core&module=members&controller=groups}' target='_blank' rel='noopener'>groups</a> and <a href='{internal.app=core&module=staff&controller=moderators}' target='_blank' rel='noopener'>moderators</a> from being able to be ignored in their settings.]]></word>
@@ -10034,6 +10064,8 @@ You can use the link and original content boxes above to curate your own content
<word key="profile_complete_blurb_desc" js="0">Create steps to have members complete. These steps can be required or optional. If you create a new required step, this step will be shown to all members for completion.</word>
<word key="complete_profile_registration" js="0">Complete your registration</word>
<word key="profile_complete_no_add" js="0">All available profile completion steps have been used. To create new profile completion steps, please delete existing steps, or edit them to remove methods.</word>
<word key="acplog__quick_register_enabled" js="0">Quick registration enabled</word>
<word key="acplog__profile_step_added" js="0">Profile step added: %s</word>
<word key="enhancements__core_FacebookPixel" js="0">Facebook Pixel</word>
<word key="enhancements__core_FacebookPixel_desc" js="0">The Facebook pixel is used to report conversions, optimize advert delivery, build audiences and get rich insights about how people are using your website.</word>
<word key="fb_pixel_id_req" js="0">You need to enter your Facebook Pixe ID</word>
@@ -10270,6 +10302,8 @@ You can use the link and original content boxes above to curate your own content
<word key="emailstats__notification_referral" js="0">New member referral notification</word>
<word key="emailtpl_notification_referral" js="0">Referral</word>
<word key="ref_member_id" js="0">Member</word>
<word key="acplog__referrals_enabled" js="0">Referrals enabled</word>
<word key="acplog__referrals_disabled" js="0">Referrals disabled</word>
<word key="rb_upload" js="0">Type</word>
<word key="rb_upload_yes" js="0">I will upload a banner image.</word>
<word key="rb_upload_no" js="0">I will provide a URL to a banner image.</word>
@@ -10284,6 +10318,8 @@ You can use the link and original content boxes above to curate your own content
<word key="top_solved_empty__month" js="0">Nothing has been solved this month.</word>
<word key="top_solved_empty__year" js="0">Nothing has been solved this year.</word>
<word key="top_solved_empty__all" js="0">Nothing has been solved yet.</word>
<word key="solved_did_it_tho_title" js="0">%s, which answer was the most helpful?</word>
<word key="solved_did_it_tho_desc" js="0"><![CDATA[If any of these replies answered your question, please take a moment to click the 'Mark as solution' button on the post with the best answer.<br>Marking posts as the solution will help other community members find answers to their questions quickly. Thank you for your help!]]></word>
<word key="comment_meta_date_years_later" js="0">{# [1:year][?:years]} later</word>
<word key="comment_meta_date_months_later" js="0">{# [1:month][?:months]} later</word>
<word key="comment_meta_date_weeks_later" js="0">{# [1:week][?:weeks]} later</word>
@@ -10426,6 +10462,7 @@ You can use the link and original content boxes above to curate your own content
<word key="health__version_title" js="0">Invision Community</word>
<word key="health__php_title" js="0">PHP</word>
<word key="health__mysql_title" js="0">MySQL Database</word>
<word key="health__scanner_title" js="0">PHP8 Compatibility Scanner</word>
<word key="health__mysql_title_cic" js="0">Database</word>
<word key="health__caching_title" js="0">Caching</word>
<word key="health__server_title" js="0">Server</word>
@@ -10485,7 +10522,7 @@ You can use the link and original content boxes above to curate your own content
<word key="health__repeat_logs_message" js="0">Message</word>
<word key="health__repeat_logs_count" js="0">Count</word>
<word key="health__cache_cloudflare" js="0">Cloudflare detected</word>
<word key="health__cache_cloudflare_details" js="0">We have detected that Cloudflare is processing requests to your Invision Community installation. Some clients have encountered issues using Cloudflare, including specific features such as Rocket Loader, and it is recommended to disable Cloudflare if you are encountering problems not solved by using these support tools in order to determine if Cloudflare may be the source of the problems.</word>
<word key="health__cache_cloudflare_details" js="0">We have detected that Cloudflare is processing requests to your Invision Community installation. Some clients have encountered issues using specific features such as Rocket Loader, and it is recommended to disable those Cloudflare features if you are encountering problems not solved by using these support tools in order to determine if Cloudflare may be the source of the problems.</word>
<word key="health__cache_varnish" js="0">Varnish detected</word>
<word key="health__cache_akamai" js="0">Akamai detected</word>
<word key="health__cache_redis" js="0">Redis %s in use (%s of %s memory used)</word>
@@ -10513,7 +10550,45 @@ You can use the link and original content boxes above to curate your own content
<word key="health_vapid_key_check_fail_fixed" js="0">Push Notification Keys Created</word>
<word key="health_customizations_overview" js="0">Customizations Overview</word>
<word key="health_fix_this" js="0">Fix This</word>
<word key="health_learn_more" js="0">Learn More</word>
<word key="health_intro" js="0"><![CDATA[If you are encountering problems on your community sometimes <a href='{internal.app=core&module=support&controller=support&do=clearcaches.csrf}' data-role='clearCaches'>clearing system caches</a> can help.<br><br>Please also try disabling any <a href='{internal.app=core&module=support&controller=support&do=thirdparty}' data-ipsDialog>third party customizations</a>.]]></word>
<word key="acplog__support_tool_db_check" js="0">Automatically ran database checker queries</word>
<word key="method_check_fail" js="0">PHP8 Incompatible Customizations</word>
<word key="method_check_fix" js="0">Outdated Overloaded 3rd Party Methods</word>
<word key="methodscanner_no_issues" js="0">No PHP8 Issues found</word>
<word key="invalid_php8_customization" js="0">Contains outdated code. Please contact the Author for an updated version.</word>
<word key="method_issue_security" js="0">Conflicting security level</word>
<word key="method_issue_static" js="0">Inconsistent static declaration</word>
<word key="method_issue_return_type" js="0">Conflicting return type hints</word>
<word key="method_issue_parameter_type" js="0">Conflicting parameter type</word>
<word key="method_issue_nullable" js="0">Conflicting parameter nullability</word>
<word key="method_issue_reference" js="0">Conflicting reference</word>
<word key="method_issue_packed" js="0">Packed status differs</word>
<word key="method_issue_final" js="0">Overloaded final method</word>
<word key="method_issue_parameters" js="0">Mismatching parameter list</word>
<word key="method_issue_security_desc" js="0">Overloading method in the app/plugin changes the security (public, private, or protected) level from the base class from which it inherits</word>
<word key="method_issue_static_desc" js="0">Base method is static and overloading method is not or vice versa</word>
<word key="method_issue_return_type_desc" js="0">Base method has a different return type hint than the subclass's method</word>
<word key="method_issue_parameter_type_desc" js="0">Overloading method changes a parameter's type</word>
<word key="method_issue_nullable_desc" js="0">Base method defined a parameter as nullable but the overloaded did not or vice versa</word>
<word key="method_issue_reference_desc" js="0">The parameter is passed by reference to the base method but not to the overloading method or vice versa</word>
<word key="method_issue_packed_desc" js="0">The parameter is &quot;packed&quot; in the base method but not in the overloading method or vice versa</word>
<word key="method_issue_final_desc" js="0">A class in the app/plugin overloaded a method that was declared final, meaning it cannot be overloaded</word>
<word key="method_issue_parameters_desc" js="0">A subclass method in the app/plugin defines a different set of parameters than the base class from which it inherits</word>
<word key="method_type" js="0">Type</word>
<word key="method_app" js="0">App</word>
<word key="method_reason" js="0">Issue</word>
<word key="method_scanner_method" js="0">Method</word>
<word key="method_subclassFile" js="0">Subclass/Hook File</word>
<word key="method_baseFile" js="0">Base Class File</word>
<word key="method_parameter" js="0">Bad Parameter</word>
<word key="method_na" js="0">N/A</word>
<word key="method_priority" js="0">Priority</word>
<word key="acp_notification_ManualInterventionMessage" js="0">PHP8 Incompatible Customizations</word>
<word key="advise_removal_of_php8_incompatible_code" js="0"><![CDATA[We are currently in the process of migrating our platform from PHP7 to PHP8 in order to provide you with the greatest level of performance and security. We've identified one or more Applications or Plugins currently installed on your site which contain PHP8 incompatible hooks and/or subclasses.
In PHP8, altering overloaded method signatures within a subclass results in a fatal error which can make a site completely inoperable. Also, our hook system relies on subclasses so this change applies to hooks as well. Therefore, this code must be either replaced with an updated version, removed, or disabled from your site as soon as possible.
<br><br>
<strong>If you are not sure what this means, you must contact the Author of any listed Application or Plugin for an updated version. If you cannot update to a PHP8 compatible version, the Application or Plugin will have to be disabled or removed.</strong>]]></word>
<word key="ext__AchievementAction" js="0">Define an action that can give members points and/or badges.</word>
<word key="notifications__core_Achievements" js="0">Achievements</word>
<word key="notifications__core_Achievements_desc" js="0">These notifications will be sent when you earn a new rank or badge.</word>
@@ -10883,6 +10958,21 @@ You can use the link and original content boxes above to curate your own content
<word key="achievement_who_suffix" js="0">reactions</word>
<word key="achievement_who_reciever" js="0">The content author reaches a total of</word>
<word key="achievement_who_giver" js="0">The user has given a total of</word>
<word key="menu__core_stats_rankprogression" js="0">Rank Progression</word>
<word key="core_stats_rank_progression_v" js="0">Time in Days</word>
<word key="core_stats_rank_progression_h" js="0">Rank</word>
<word key="core_stats_rank_progression_desc" js="0">The average time in days that it takes a member to receive each rank.</word>
<word key="r__rankprogression" js="0">Rank Progression</word>
<word key="r__rankprogression_manage" js="0">Can view rank progression statistics?</word>
<word key="rankprogression_rebuild" js="0">Building rank progression</word>
<word key="acplogs__exported_badges" js="0">Exported badges</word>
<word key="acplogs__imported_badges" js="0">Imported badges</word>
<word key="acplogs__exported_ranks" js="0">Exported ranks</word>
<word key="acplogs__imported_ranks" js="0">Imported ranks</word>
<word key="acplogs__rule_enabled" js="0">Achievement rule %s enabled</word>
<word key="acplogs__rule_disabled" js="0">Achievement rule %s paused</word>
<word key="acplogs__rules_exported" js="0">Achievement rules exported</word>
<word key="acplogs__rules_imported" js="0">Achievement rules imported</word>
<word key="menu__core_stats_spam" js="0">Spam Defense</word>
<word key="stats_spam_title" js="0">Spam defense results over time</word>
<word key="r__spamstats" js="0">Spam Statistics</word>
@@ -10898,6 +10988,7 @@ You can use the link and original content boxes above to curate your own content
<word key="r__preferences_manage" js="0">Can view user preference statistics?</word>
<word key="menu__core_stats_referrals" js="0">Top Referrers</word>
<word key="core_stats_referrer_count" js="0">{# [1:member][?:members]} referred others.</word>
<word key="acplog__referral_commission_settings_edited" js="0">Referral commission settings edited</word>
<word key="menu__core_stats_follow" js="0">Follow</word>
<word key="stats_followers_title" js="0">Followers</word>
<word key="stats_following_title" js="0">Following</word>
@@ -10944,6 +11035,7 @@ You can use the link and original content boxes above to curate your own content
<word key="moderator_stats_filter_form" js="0">Select Moderators</word>
<word key="stats_moderators_all" js="0">View total moderator activity count?</word>
<word key="stats_moderator_activity_all" js="0">Total Moderator Activity</word>
<word key="r__moderatorstats_manage" js="0">Can view Moderator Activity</word>
<word key="mf_points" js="0">Achievement Points</word>
<word key="mf_badges" js="0">Badges Earned</word>
<word key="mf_ranks" js="0">Ranks</word>
@@ -10990,6 +11082,7 @@ You can use the link and original content boxes above to curate your own content
<word key="use_robotstxt_warning_download" js="0"><![CDATA[As your community is in a directory, you must <a href='{internal.app=core&module=promotion&controller=seo&do=downloadRobotstxt}'><strong>download this file</strong></a> and upload to %s/robots.txt to use these rules.]]></word>
<word key="use_robotstxt_warning_existing_off" js="0">You have an existing robots.txt file. You will need to edit or remove %s/robots.txt to remove the community rules.</word>
<word key="use_robotstxt_warning_existing_download" js="0"><![CDATA[You have an existing robots.txt file. You must <a href='{internal.app=core&module=promotion&controller=seo&do=downloadRobotstxt}'><strong>download this file</strong></a> and manually add to your %s/robots.txt to use these rules.]]></word>
<word key="acplog__robotstxt_edited" js="0">Robots.txt edited</word>
<word key="editor_stored_replies_none_created_button" js="0">You have added the stock replies button to the editor but the button will not show on the editor until you create one or more stock replies.</word>
<word key="menu__core_activitystats_deletedcontent" js="0">Deleted Content</word>
<word key="stats_deletedcontent_title" js="0">Deleted Content</word>
@@ -11000,6 +11093,7 @@ You can use the link and original content boxes above to curate your own content
<word key="nulled_clear_caches" js="0">Clear caches</word>
<word key="nulled_clear_caches_done" js="0">All caches have been cleared</word>
<word key="nulled_delete_logs" js="0">Clear logs</word>
<word key="stats_deleted_tooltip" js="0">Deleted</word>
<word key="menu__core_applications_webhooks" js="0">Webhooks</word>
<word key="webhooks" js="0">Webhooks</word>
<word key="webhooks_reference" js="0">Webhooks Reference</word>
@@ -11013,17 +11107,25 @@ You can use the link and original content boxes above to curate your own content
<word key="class_no_apioutput_method" js="0">This class doesn't implement the apiOutput method, so all values will be sent.</word>
<word key="webhook_events" js="0">Webhook Events</word>
<word key="webhook_member_create" js="0">Fired when a member is created</word>
<word key="webhook_member_registration_complete" js="0">Fired when a member registration is completed</word>
<word key="webhook_member_edit_param_changes" js="0">Array containing the changed fields</word>
<word key="webhook_member_edited" js="0">Fired when a members data are changed</word>
<word key="webhook_member_delete" js="0">Fired when a member is deleted</word>
<word key="webhook_member_warned" js="0">Fired when a member is warned</word>
<word key="webhook_member_merged" js="0">Fired when a member gets merged with another account</word>
<word key="webhook_club_created" js="0">Fired when a club is created</word>
<word key="webhook_club_deleted" js="0">Fired when a club is deleted</word>
<word key="webhook_club_member_added" js="0">Fired when a member joins a club</word>
<word key="webhook_club_member_removed" js="0">Fired when a member leaves a club</word>
<word key="webhook_contentitem_created" js="0">Fired when %s is created</word>
<word key="webhook_content_promoted" js="0">Fired when a content item gets promoted</word>
<word key="webhook_content_marked_solved" js="0">Fired when a content item gets marked as solved</word>
<word key="webhook_contentitem_deleted" js="0">Fired when %s is deleted</word>
<word key="webhook_logs_success" js="0">Prune webhook success requests and responses</word>
<word key="acplog__webhook_settings" js="0">Adjusted webhook settings</word>
<word key="webhook_content_type" js="0">Content Type</word>
<word key="webhook_content_type_desc" js="0">The request content type.</word>
<word key="webhook_content_type_other" js="0">Custom</word>
<word key="datalayer_title" js="0">Custom Handlers</word>
<word key="datalayer_desc" js="0"><![CDATA[Data Layer Handlers are responsible for handling context and data generated by the software. Each handler can have a Data Layer Initializer, Head Snippet, Event Handler, Properties Handler, and Body Snippet, which are added to the page source in that order. The Head and Body snippets are HTML usually generated by your Tag Manager/CRM, and are pasted in the top of the <span class="ipsType_monospace">&lt;head&gt;</span> and <span class="ipsType_monospace">&lt;body&gt;</span> tags respectively. The Initializer, Event Handler and Properties handler are bits of JavaScript that contain your logic to handle events and properties.]]></word>
<word key="datalayer_custom_handler_none" js="0">No custom data layers have been configured.</word>
@@ -11040,6 +11142,11 @@ You can use the link and original content boxes above to curate your own content
<word key="datalayer_events_properties" js="0">Event Properties</word>
<word key="datalayer_no_events_use_property" js="0">No events use this property. If it is a custom property, you can optionally choose events that will include this property.</word>
<word key="datalayer_no_events_here" js="0">This event has no properties.</word>
<word key="acplog__datalayer_settings_edited" js="0">Data Layer settings edited</word>
<word key="acplog__data_layer_property_edited" js="0">Data Layer property edited: %s</word>
<word key="acplog__data_layer_property_added" js="0">Data Layer property added: %s</word>
<word key="acplog__data_layer_property_deleted" js="0">Data Layer property deleted: %s</word>
<word key="acplog__data_layer_event_edited" js="0">Data Layer event configuration edited: %s</word>
<word key="club_id" js="0">Club ID</word>
<word key="log_code" js="0">Log Code</word>
<word key="wl_reason" js="0">Reason</word>
@@ -11061,12 +11168,20 @@ You can use the link and original content boxes above to curate your own content
<word key="alert_recipient_user" js="0">User</word>
<word key="alert_recipient_group" js="0">Group</word>
<word key="alert_no_recipient_selected" js="0">You must choose a user</word>
<word key="alert_member_pm_disabled" js="0">%s has their messenger disabled and cannot reply</word>
<word key="alert_group_no_messenger" js="0"><![CDATA[<span class='ipsType ipsType_light'>%s cannot access messenger</span>]]></word>
<word key="alert_member_group_pm_disabled" js="0">%s are not able to access the messenger</word>
<word key="alert_send" js="0">Send Alert</word>
<word key="alert_anonymous" js="0">Send Anonymously?</word>
<word key="alert_must_reply_modal_but_no_messenger" js="0">You can dismiss this notice as you do not have access to messenger.</word>
<word key="alert_users_have_replied" js="0">{# [1:Reply][?:Replies]}</word>
<word key="inbox_filtered_by_alert" js="0">Messenger showing replies for alert: %s</word>
<word key="inbox_filtered_by_alert_undo" js="0">Show all messages</word>
<word key="alert_anonymous_desc" js="0">If alerts are sent anonymously then members will not be able to reply.</word>
<word key="alert_anon" js="0">Anonymous</word>
<word key="can_manage_alerts" js="0">Can manage alerts?</word>
<word key="alert_reply" js="0">Replies</word>
<word key="alert_reply__nopm_desc" js="0"><![CDATA[<div class='ipsMessage ipsMessage_warning'>Reply options are not available as you have your inbox disabled or messenger disabled via the AdminCP.</div>]]></word>
<word key="alert_no_reply" js="0">No replies</word>
<word key="alert_can_reply" js="0">Users can optionally reply</word>
<word key="alert_must_reply" js="0">Users must reply</word>
@@ -11089,6 +11204,38 @@ You can use the link and original content boxes above to curate your own content
<word key="alert_filter_active" js="0">Active</word>
<word key="alert_filter_inactive" js="0">Inactive</word>
<word key="alert_you_cannot_receive_messages" js="0">The reply options have been removed as your messenger is currently disabled.</word>
<word key="moderation_alert_name" js="0">Send an Alert to %s</word>
<word key="moderation_alert_title" js="0">Alert Title</word>
<word key="moderation_alert_content" js="0">Alert Content</word>
<word key="moderation_alert_reply" js="0">Reply</word>
<word key="moderation_alert_anonymous" js="0">Anonymous</word>
<word key="approval_reason_profanity" js="0">Posted a word that has been marked for manual approval: %s</word>
<word key="approval_reason_url" js="0">Posted a URL that has been marked for manual approval: %s</word>
<word key="approval_reason_email" js="0">Posted an email address that has been marked for manual approval: %s</word>
<word key="approval_reason_group" js="0">Member is in a group which requires approval for all content.</word>
<word key="approval_reason_user" js="0">Member has been manually flagged for requiring approval for all content.</word>
<word key="approval_reason_node" js="0"><![CDATA[Made %s in <a href='%s'>%s</a> which requires approval of %s.]]></word>
<word key="approval_reason_item" js="0"><![CDATA[<a href='%s'>%s</a> is set to require approval of comments.]]></word>
<word key="reason_for_approval" js="0">Reason for requiring approval</word>
<word key="hidden_with_reason" js="0">Hidden - %s</word>
<word key="hidden_awaiting_approval" js="0">Hidden - This content must be approved before it can be edited.</word>
<word key="approval_reason_unknown" js="0">Unknown</word>
<word key="pruning_pms" js="0">Pruning Conversations</word>
<word key="prune_pms" js="0">Prune conversations with no reply</word>
<word key="profile_settings_pms" js="0">Conversations</word>
<word key="menu__core_smartcommunity" js="0">Smart Community</word>
<word key="menu__core_smartcommunity_features" js="0">Features</word>
<word key="cloud_smart_community_title" js="0">Manage your Self Hosted benefits</word>
<word key="cloud_smart_community_desc" js="0"><![CDATA[These features are exclusive to our Cloud-platform.<br><br>Missing this feature or others that you need on your community? Consider <a href='{external.switch_to_cloud}' target='_blank'>switching to our cloud platform</a>.]]></word>
<word key="cloud_ai_service_imagescan" js="0">Image Scanner and Discoverability</word>
<word key="cloud_ai_service_imagescan_desc" js="0"><![CDATA[Use artificial intelligence (AI) technology to scan uploaded images for potentially inappropriate content and either reject or hold them for moderator approval. <br><br> After the image is posted, the image is labeled with what the image “could contain.” These terms optionally show when hovering over the image and allow the image to appear as a search result.]]></word>
<word key="cloud_ai_service_sentiment" js="0">Sentiment Analysis</word>
<word key="cloud_ai_service_sentiment_desc" js="0">Sentiment Analysis uses AI to score the sentiment of your community posted content. The four scoring metrics are Positive, Negative, Neutral, and Mixed.</word>
<word key="cloud_ai_service_trending" js="0">Trending Content</word>
<word key="cloud_ai_service_trending_desc" js="0">Shows the most active content on your community right now.</word>
<word key="cloud_ai_service_realtime" js="0">Live Community</word>
<word key="cloud_ai_service_realtime_desc" js="0">Show who else is reading forums, topics and replying at the same time as you, updated instantly.</word>
<word key="only_available_on_cloud" js="0">The feature is Cloud-platform exclusive.</word>
<word key="js_num_comments" js="1">{# [1:Comment][?:Comments]}</word>
<word key="js_num_reviews" js="1">{# [1:Review][?:Reviews]}</word>
<word key="js_num_mod_comments" js="1">{# Moderator [1:Comment][?:Comments]}</word>
@@ -11116,7 +11263,6 @@ You can use the link and original content boxes above to curate your own content
<word key="theme_diff_original_desc" js="1">(uneditable)</word>
<word key="theme_diff_custom_header" js="1">Custom version</word>
<word key="theme_diff_custom_desc" js="1">(make your changes here)</word>
<word key="promotes_no_facebook_selected" js="1"><![CDATA[<em>no pages or groups selected</em>]]></word>
<word key="address_region" js="1">State/Region</word>
<word key="specifyLocation" js="1">Specify a location...</word>
<word key="loading" js="1">Loading</word>
@@ -11500,7 +11646,7 @@ You can use the link and original content boxes above to curate your own content
<word key="followFrequency_weekly" js="1">Weekly notification</word>
<word key="followFrequency_none" js="1">No notifications</word>
<word key="promote_confirm_delete" js="1">Are you sure you want to delete this promoted item?</word>
<word key="promote_confirm_delete_desc" js="1">Deleting will not remove the original content item, or remove it from externally shared services such as Facebook and Twitter. It will be removed from the 'Our Picks' list.</word>
<word key="promote_confirm_delete_desc" js="1">Deleting will not remove the original content item, or remove it from externally shared services such as Twitter. It will be removed from the 'Our Picks' list.</word>
<word key="enablePromote" js="1">Enable</word>
<word key="promoteImmediate" js="1">Next Batch</word>
<word key="promoteAuto" js="1">Next Auto-scheduled Batch</word>
@@ -13441,5 +13587,6 @@ You can use the link and original content boxes above to curate your own content
<word key="health_caches_cleared" js="1">All caches have been cleared</word>
<word key="health_check_summary" js="1"><![CDATA[<span class='ipsType_warning ipsType_bold'>{# [1:critical issue][?:critical issues]}</span> and <span class='ipsType_issue'>{# [1:recommendation][?:recommendations]}</span>]]></word>
<word key="health_ticket_beforeproceeding" js="1">Before proceeding, it is strongly recommended that you address any issues detected as they may be the cause of the problem you are facing.</word>
<word key="hookscanner_error" js="1">There was an error loading the hook scanner results.</word>
</app>
</language>
+5
View File
@@ -124,6 +124,11 @@
"default_controller": "",
"protected": 0,
"default": 0
},
"smartcommunity": {
"default_controller": "",
"protected": false,
"default": null
}
},
"front": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"php": {
"required": "7.4.0",
"required": "8.0.0",
"recommended": "8.0.0"
},
"mysql": {
+203 -213
View File
@@ -430,6 +430,18 @@
"comment": "",
"unsigned": false,
"auto_increment": false
},
"app_requires_manual_intervention": {
"name": "app_requires_manual_intervention",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "If this is set, do NOT enable, the app likely has issues that will cause fatal errors in php8 that the author must address",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -9049,6 +9061,16 @@
"columns": [
"mt_title"
]
},
"mt_alert": {
"type": "key",
"name": "mt_alert",
"columns": [
"mt_alert"
],
"length": [
null
]
}
},
"comment": "",
@@ -10159,6 +10181,30 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"item_id": {
"name": "item_id",
"type": "INT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": true,
"auto_increment": false
},
"node_id": {
"name": "node_id",
"type": "INT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -10215,6 +10261,18 @@
"length": [
null
]
},
"class_node": {
"type": "key",
"name": "class_node",
"columns": [
"class",
"node_id"
],
"length": [
191,
null
]
}
},
"collation": "utf8mb4_unicode_ci",
@@ -11008,6 +11066,18 @@
"comment": "",
"unsigned": false,
"auto_increment": false
},
"plugin_requires_manual_intervention": {
"name": "plugin_requires_manual_intervention",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "If this is 1, do not enable plugin. it likely contains code that will cause fatal errors in php8, which needs to be addressed by the author",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -14011,18 +14081,16 @@
"zerofill": false
},
"meta_url": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "",
"length": 255,
"name": "meta_url",
"type": "VARCHAR",
"unsigned": false,
"type": "TEXT",
"length": 255,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": false,
"default": "",
"comment": "",
"unsigned": false,
"auto_increment": false
},
"meta_tags": {
"allow_null": true,
@@ -23555,11 +23623,6 @@
"collation": "utf8_general_ci",
"engine": "InnoDB",
"inserts": [
{
"sharer_id": "1",
"sharer_key": "Facebook",
"sharer_settings": "[]"
},
{
"sharer_id": "2",
"sharer_key": "Twitter",
@@ -24744,6 +24807,18 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"login_front": {
"name": "login_front",
"type": "INT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": "1",
"comment": "Boolean value indicating if method can be used for frontend logins",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -24964,55 +25039,6 @@
"comment": "",
"reporting": "count"
},
"core_members_feature_seen": {
"name": "core_members_feature_seen",
"columns": {
"member_id": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "Member ID",
"decimals": null,
"default": "0",
"length": 20,
"name": "member_id",
"type": "BIGINT",
"unsigned": true,
"values": [],
"zerofill": false
},
"feature_id": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 20,
"name": "feature_id",
"type": "BIGINT",
"unsigned": true,
"values": [],
"zerofill": false
}
},
"indexes": {
"PRIMARY": {
"type": "primary",
"name": "PRIMARY",
"columns": [
"feature_id",
"member_id"
],
"length": [
null,
null
]
}
},
"collation": "utf8mb4_unicode_ci",
"engine": "InnoDB"
},
"core_spam_whitelist": {
"name": "core_spam_whitelist",
"columns": {
@@ -26647,155 +26673,6 @@
}
}
},
"core_members_features": {
"name": "core_members_features",
"columns": {
"feature_id": {
"name": "feature_id",
"type": "BIGINT",
"length": 20,
"decimals": null,
"values": null,
"allow_null": false,
"default": null,
"comment": "ID Number",
"unsigned": true,
"zerofill": false,
"auto_increment": true,
"binary": false
},
"feature_title": {
"name": "feature_title",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"comment": "Feature highlight title",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"feature_text": {
"name": "feature_text",
"type": "TEXT",
"length": null,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "Feature highlight text",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"feature_url": {
"name": "feature_url",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "URL for more information",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"feature_version_added": {
"name": "feature_version_added",
"type": "BIGINT",
"length": 20,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "Version feature was added in",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"feature_app": {
"name": "feature_app",
"type": "VARCHAR",
"length": 64,
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"comment": "Application feature belongs to",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"feature_unique_key": {
"name": "feature_unique_key",
"type": "VARCHAR",
"length": 32,
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"comment": "Unique key for feature management",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
},
"feature_image": {
"name": "feature_image",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "Feature preview image",
"unsigned": false,
"zerofill": false,
"auto_increment": false,
"binary": false
}
},
"indexes": {
"PRIMARY": {
"type": "primary",
"name": "PRIMARY",
"columns": [
"feature_id"
],
"length": [
null
]
},
"feature_version_added": {
"type": "key",
"name": "feature_version_added",
"columns": [
"feature_version_added"
],
"length": [
null
]
},
"feature_app": {
"type": "key",
"name": "feature_app",
"columns": [
"feature_app"
],
"length": [
null
]
}
}
},
"core_rss_import": {
"name": "core_rss_import",
"columns": {
@@ -27466,6 +27343,18 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"content_type": {
"name": "content_type",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": true,
"default": "application\/x-www-form-urlencoded",
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
@@ -28411,6 +28300,18 @@
"comment": "core_member_recognize pkey",
"unsigned": true,
"auto_increment": false
},
"time_to_new_rank": {
"name": "time_to_new_rank",
"type": "INT",
"length": null,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "Time in seconds member took to receive this rank",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -29737,5 +29638,94 @@
},
"collation": "utf8_general_ci",
"engine": "InnoDB"
},
"core_approval_queue": {
"name": "core_approval_queue",
"columns": {
"approval_id": {
"name": "approval_id",
"type": "BIGINT",
"length": "20",
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "ID Number",
"unsigned": true,
"auto_increment": true
},
"approval_held_reason": {
"name": "approval_held_reason",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"approval_held_data": {
"name": "approval_held_data",
"type": "BLOB",
"length": null,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"approval_content_class": {
"name": "approval_content_class",
"type": "VARCHAR",
"length": 255,
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"comment": "",
"unsigned": false,
"auto_increment": false
},
"approval_content_id": {
"name": "approval_content_id",
"type": "BIGINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
"PRIMARY": {
"type": "primary",
"name": "PRIMARY",
"columns": [
"approval_id"
],
"length": [
null
]
},
"approval_content": {
"type": "key",
"name": "approval_content",
"columns": [
"approval_content_class",
"approval_content_id"
],
"length": [
191,
null
]
}
}
}
}
+10 -35
View File
@@ -749,6 +749,11 @@
"default": "",
"report": "bool"
},
{
"key": "google_maps_static_use_embed",
"default": "0",
"report": "none"
},
{
"key": "googleauth_enabled",
"default": "0",
@@ -1384,11 +1389,6 @@
"default": "0",
"report": "full"
},
{
"key": "promote_facebook_auth",
"default": "0",
"report": "none"
},
{
"key": "promote_groups",
"default": "",
@@ -1431,7 +1431,7 @@
},
{
"key": "prune_known_ips",
"default": "365",
"default": "180",
"report": "full"
},
{
@@ -1490,13 +1490,13 @@
"report": "full"
},
{
"key": "prune_points_log",
"default": "365",
"key": "prune_pms",
"default": "0",
"report": "full"
},
{
"key": "quick_register",
"default": "1",
"key": "prune_points_log",
"default": "365",
"report": "full"
},
{
@@ -2174,31 +2174,6 @@
"default": "",
"report": "none"
},
{
"key": "viglink_api_key",
"default": "",
"report": "none"
},
{
"key": "viglink_enabled",
"default": "0",
"report": "full"
},
{
"key": "viglink_groups",
"default": "",
"report": "bool"
},
{
"key": "viglink_norewrite",
"default": "",
"report": "bool"
},
{
"key": "viglink_subid",
"default": "",
"report": "none"
},
{
"key": "warn_on",
"default": "1",
File diff suppressed because it is too large. Load diff
+48 -1
View File
@@ -501,5 +501,52 @@
"107011": "4.7.0 Beta 9",
"107012": "4.7.0 Beta 10",
"107013": "4.7.0",
"107014": "4.7.0"
"107014": "4.7.0",
"107015": "4.7.0",
"107016": "4.7.0",
"107017": "4.7.0",
"107018": "4.7.1 Beta 1",
"107019": "4.7.1 Beta 1",
"107020": "4.7.1 Beta 2",
"107021": "4.7.1",
"107022": "4.7.1",
"107023": "4.7.1",
"107024": "4.7.1",
"107025": "4.7.2 Beta 1",
"107026": "4.7.2 Beta 1",
"107027": "4.7.2 Beta 2",
"107028": "4.7.2 Beta 3",
"107029": "4.7.2 Beta 4",
"107030": "4.7.2 Beta 5",
"107031": "4.7.2 Beta 6",
"107032": "4.7.2",
"107033": "4.7.2",
"107034": "4.7.2.1",
"107035": "4.7.2.1",
"107036": "4.7.2.1",
"107037": "4.7.2.1",
"107038": "4.7.2.1",
"107300": "4.7.3 Beta 1",
"107301": "4.7.3 Beta 2",
"107302": "4.7.3 Beta 3",
"107303": "4.7.3 Beta 4",
"107304": "4.7.3",
"107305": "4.7.3",
"107306": "4.7.3",
"107307": "4.7.3",
"107400": "4.7.4 Beta 1",
"107401": "4.7.4 Beta 2",
"107402": "4.7.4 Beta 3",
"107403": "4.7.4",
"107404": "4.7.4",
"107405": "4.7.4",
"107406": "4.7.4",
"107500": "4.7.5 Beta 1",
"107501": "4.7.5",
"107502": "4.7.5",
"107503": "4.7.5",
"107504": "4.7.5",
"107505": "4.7.5",
"107600": "4.7.6 Beta 1",
"107601": "4.7.6"
}
@@ -182,7 +182,7 @@ class _ConfigurationError extends \IPS\core\AdminNotification
else
{
\IPS\core\AdminNotification::remove( 'core', 'ConfigurationError', 'failedMail' );
\IPS\Db::i()->update( 'core_mail_error_logs', array( 'mlog_notification_sent' => TRUE ) );
\IPS\Db::i()->update( 'core_mail_error_logs', [ 'mlog_notification_sent' => TRUE ], [ 'mlog_notification_sent=?', 0 ] );
}
/* Username logins enabled */
@@ -195,6 +195,7 @@ class _ConfigurationError extends \IPS\core\AdminNotification
{
\IPS\core\AdminNotification::remove( 'core', 'ConfigurationError', 'usernameLoginEnabled' );
}
}
/**
@@ -628,7 +629,13 @@ class _ConfigurationError extends \IPS\core\AdminNotification
return static::STYLE_INFORMATION;
}
}
if ( mb_substr( $this->extra, 0, 12 ) === 'supportAdmin' or $this->extra === 'recommendations' or $this->extra === 'origTables' or $this->extra === 'marketplaceSetup' )
if( $this->extra === 'recommendations' )
{
return static::STYLE_ERROR;
}
if ( mb_substr( $this->extra, 0, 12 ) === 'supportAdmin' or $this->extra === 'origTables' or $this->extra === 'marketplaceSetup' )
{
return static::STYLE_INFORMATION;
}
@@ -92,7 +92,7 @@ class _License extends \IPS\core\AdminNotification
return \IPS\Member::loggedIn()->language()->addToStack('license_error');
case 'expireSoon':
$licenseKeyData = \IPS\IPS::licenseKey();
return \IPS\Member::loggedIn()->language()->addToStack( 'license_renewal_soon', FALSE, array( 'pluralize' => array( \intval( \IPS\DateTime::create()->diff( \IPS\DateTime::ts( strtotime( $licenseKeyData['expires'] ) ) )->format('%r%a') ) ) ) );
return \IPS\Member::loggedIn()->language()->addToStack( 'license_renewal_soon', FALSE, array( 'pluralize' => array( \intval( \IPS\DateTime::create()->diff( \IPS\DateTime::ts( strtotime( $licenseKeyData['expires'] ), TRUE ) )->format('%r%a') ) ) ) );
case 'expired':
return \IPS\Member::loggedIn()->language()->addToStack('license_expired');
}
@@ -0,0 +1,167 @@
<?php
/**
* @brief ACP Notification Extension
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @since 25 Aug 2022
*/
namespace IPS\core\extensions\core\AdminNotifications;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* ACP Notification Extension
*/
class _ManualInterventionMessage extends \IPS\core\AdminNotification
{
/**
* @brief Identifier for what to group this notification type with on the settings form
*/
public static $group = 'system';
/**
* @brief Priority 1-5 (1 being highest) for this group compared to others
*/
public static $groupPriority = 2;
/**
* @brief Priority 1-5 (1 being highest) for this notification type compared to others in the same group
*/
public static $itemPriority = 1;
/**
* Title for settings
*
* @return string
*/
public static function settingsTitle()
{
return 'acp_notification_ManualInterventionMessage';
}
/**
* Can a member access this type of notification?
*
* @param \IPS\Member $member The member
* @return bool
*/
public static function permissionCheck( \IPS\Member $member )
{
return \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'applications', 'app_manage' ) OR \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'applications', 'plugins_view' );
}
/**
* Is this type of notification ever optional (controls if it will be selectable as "viewable" in settings)
*
* @return string
*/
public static function mayBeOptional()
{
return FALSE;
}
/**
* Is this type of notification might recur (controls what options will be available for the email setting)
*
* @return bool
*/
public static function mayRecur()
{
return FALSE;
}
/**
* Notification Title (full HTML, must be escaped where necessary)
*
* @return string
*/
public function title()
{
return \IPS\Member::loggedIn()->language()->addToStack( 'method_check_fail' );
}
/**
* Notification Body (full HTML, must be escaped where necessary)
*
* @return string
*/
public function body()
{
return \IPS\Member::loggedIn()->language()->addToStack( 'advise_removal_of_php8_incompatible_code' );
}
/**
* Severity
*
* @return string
*/
public function severity()
{
return static::SEVERITY_HIGH;
}
/**
* Dismissible?
*
* @return string
*/
public function dismissible()
{
return static::DISMISSIBLE_UNTIL_RECUR;
}
/**
* Style
*
* @return bool
*/
public function style()
{
return $this->severity() === static::SEVERITY_HIGH ? static::STYLE_ERROR : static::STYLE_WARNING;
}
/**
* Quick link from popup menu
*
* @return \IPS\Http\Url
*/
public function link()
{
return \IPS\Http\Url::internal( 'app=core&module=support&controller=support&do=methodCheck' );
}
/**
* Delete
*
* @return void
*/
public function delete()
{
parent::delete();
}
/**
* Should this notification dismiss itself?
*
* @note This is checked every time the notification shows. Should be lightweight.
* @return bool
*/
public function selfDismiss()
{
if( \IPS\Db::i()->select( 'count(*)', 'core_applications', [ 'app_requires_manual_intervention=?', 1 ] )->first()
OR \IPS\Db::i()->select( 'count(*)', 'core_plugins', [ 'plugin_requires_manual_intervention=?', 1 ] )->first() )
{
return FALSE;
}
return TRUE;
}
}
@@ -64,7 +64,8 @@ class _GoogleMaps
{
$form = new \IPS\Helpers\Form( 'google_maps_enable_apis', 'continue' );
$form->addHeader('google_maps_choose_features');
$form->add( new \IPS\Helpers\Form\YesNo( 'googlemaps', isset( $data['googlemaps'] ) ? $data['googlemaps'] : \IPS\Settings::i()->googlemaps, FALSE, array( 'togglesOn' => array( 'googleApi_jsapi', 'googleApi_staticapi', 'googleApi_geocodeapi' ) ) ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'googlemaps', isset( $data['googlemaps'] ) ? $data['googlemaps'] : \IPS\Settings::i()->googlemaps, FALSE, array( 'togglesOn' => array( 'googleApi_jsapi', 'googleApi_staticapi', 'googleApi_geocodeapi', 'google_maps_enable_apis_google_maps_static_use_embed' ) ) ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'google_maps_static_use_embed', isset( $data['google_maps_static_use_embed'] ) ? $data['google_maps_static_use_embed'] : \IPS\Settings::i()->google_maps_static_use_embed, FALSE ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'googleplacesautocomplete', isset( $data['googleplacesautocomplete'] ) ? $data['googleplacesautocomplete'] : \IPS\Settings::i()->googleplacesautocomplete, FALSE, array( 'togglesOn' => array( 'googleApi_places' ) ) ) );
$form->addHeader('google_maps_enable_apis');
$form->addMessage('google_maps_create_project_message');
@@ -75,13 +76,13 @@ class _GoogleMaps
if ( $values = $form->values() )
{
if ( $values['googlemaps'] or $values['googleplacesautocomplete'] )
if ( $values['googlemaps'] or $values['googleplacesautocomplete'] or $values['google_maps_static_use_embed'] )
{
return $values;
}
else
{
\IPS\Settings::i()->changeValues( array( 'googlemaps' => 0, 'googleplacesautocomplete' => 0 ) );
\IPS\Settings::i()->changeValues( array( 'googlemaps' => 0, 'googleplacesautocomplete' => 0, 'google_maps_static_use_embed' => 0 ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal('app=core&module=applications&controller=enhancements'), 'saved' );
}
}
@@ -152,6 +153,7 @@ class _GoogleMaps
$form->saveAsSettings( array(
'googlemaps' => $data['googlemaps'],
'googleplacesautocomplete' => $data['googleplacesautocomplete'],
'google_maps_static_use_embed' => $data['google_maps_static_use_embed'],
'google_maps_api_key' => $values['google_maps_api_key'],
'google_maps_api_key_secret' => $data['googlemaps'] ? $values['google_maps_api_key_secret'] : ''
) );
@@ -1,157 +0,0 @@
<?php
/**
* @brief Community Enhancements: Viglink integration
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @since 20 June 2013
*/
namespace IPS\core\extensions\core\CommunityEnhancements;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Community Enhancements: Viglink
*/
class _Viglink
{
/**
* @brief IPS-provided enhancement?
*/
public $ips = FALSE;
/**
* @brief Enhancement is enabled?
*/
public $enabled = FALSE;
/**
* @brief Enhancement has configuration options?
*/
public $hasOptions = TRUE;
/**
* @brief Icon data
*/
public $icon = "viglink.png";
/**
* Constructor
*
* @return void
*/
public function __construct()
{
$this->enabled = ( \IPS\Settings::i()->viglink_enabled );
}
/**
* Edit
*
* @return void
*/
public function edit()
{
\IPS\Output::i()->sidebar['actions'] = array(
'help' => array(
'title' => 'learn_more',
'icon' => 'question-circle',
'link' => \IPS\Http\Url::ips( 'docs/viglink' ),
'target' => '_blank'
)
);
if ( \IPS\Settings::i()->viglink_api_key )
{
$form = new \IPS\Helpers\Form;
$form->add( new \IPS\Helpers\Form\YesNo( 'viglink_enabled', \IPS\Settings::i()->viglink_enabled, FALSE, array( 'togglesOn' => array( 'viglink_api_key', 'viglink_subid', 'viglink_groups', 'viglink_norewrite' ) ) ) );
if ( !\IPS\Settings::i()->viglink_subid )
{
$form->add( new \IPS\Helpers\Form\Text( 'viglink_api_key', \IPS\Settings::i()->viglink_api_key, FALSE, array(), NULL, NULL, NULL, 'viglink_api_key' ) );
}
$form->add( new \IPS\Helpers\Form\CheckboxSet( 'viglink_groups', ( \IPS\Settings::i()->viglink_groups == 'all' ) ? 'all' : explode( ',', \IPS\Settings::i()->viglink_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(), 'parse' => 'normal', 'multiple' => true, 'unlimited' => 'all', 'unlimitedLang' => 'all_groups', 'impliedUnlimited' => TRUE ), NULL, NULL, NULL, 'viglink_groups' ) );
$form->add( new \IPS\Helpers\Form\CheckboxSet( 'viglink_norewrite', explode( ',', \IPS\Settings::i()->viglink_norewrite ), FALSE, array( 'options' => \IPS\Member\Group::groups(), 'parse' => 'normal', 'multiple' => true ), NULL, NULL, NULL, 'viglink_norewrite' ) );
if ( $values = $form->values( TRUE ) )
{
if ( !$values['viglink_enabled'] )
{
$values['viglink_api_key'] = '';
}
$form->saveAsSettings( $values );
\IPS\Session::i()->log( 'acplog__enhancements_edited', array( 'enhancements__core_Viglink' => TRUE ) );
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('saved');
}
\IPS\Output::i()->sidebar['actions']['signup'] = array(
'title' => 'viglink_account_type',
'icon' => 'external-link-square',
'link' => \IPS\Http\Url::ips('docs/viglink_account'),
'target' => '_blank'
);
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'global' )->block( 'enhancements__core_Viglink', $form );
}
else
{
$form = new \IPS\Helpers\Form;
$form->add( new \IPS\Helpers\Form\Text( 'viglink_api_key', NULL, FALSE, array(), function( $val ){
if( !$val && \IPS\Request::i()->viglink_account_type == 'existing' )
{
throw new \InvalidArgumentException("required");
}
}, NULL, NULL, 'viglink_api_key' ) );
if ( $values = $form->values() )
{
$values['viglink_subid'] = '';
$values['viglink_enabled'] = TRUE;
unset( $values['viglink_account_type'] );
$form->saveAsSettings( $values );
\IPS\Session::i()->log( 'acplog__enhancements_edited', array( 'enhancements__core_Viglink' => TRUE ) );
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('saved');
}
}
\IPS\Output::i()->output = $form;
}
/**
* Enable/Disable
*
* @param $enabled bool Enable/Disable
* @return void
* @throws \DomainException
*/
public function toggle( $enabled )
{
/* If we're disabling, just disable */
if( !$enabled )
{
\IPS\Settings::i()->changeValues( array( 'viglink_enabled' => 0 ) );
}
/* Otherwise if we already have an API key, just toggle on */
if( $enabled && \IPS\Settings::i()->viglink_api_key )
{
\IPS\Settings::i()->changeValues( array( 'viglink_enabled' => 1 ) );
}
/* Otherwise we need to let them enter an API key before we can enable. Throwing an exception causes you to be redirected to the settings page. */
else
{
throw new \DomainException;
}
}
}
@@ -26,21 +26,27 @@ class _Zapier
/**
* Get the permissions needed for the Zapier API key
*
* Since 4.7.1 we don't need to call any other methods while the upgrade, just adjust the permission here, everything else will be handled automatically.
*
* @return array
*/
public static function apiKeyPermissions()
{
$return = array(
'core/clubs/GETindex' => array( 'access' => TRUE ),
'core/clubs/GETitem' => array( 'access' => TRUE ),
'core/groups/GETindex' => array( 'access' => TRUE ),
'core/hello/GETindex' => array( 'access' => TRUE ),
'core/members/GETindex' => array( 'access' => TRUE ),
'core/members/GETitem' => array( 'access' => TRUE ),
'core/members/POSTindex' => array( 'access' => TRUE ),
'core/members/POSTitem' => array( 'access' => TRUE ),
'core/webhooks/POSTindex' => array( 'access' => TRUE ),
'core/webhooks/DELETEitem' => array( 'access' => TRUE ),
'core/clubs/GETindex' => array( 'access' => TRUE ),
'core/clubs/GETitem' => array( 'access' => TRUE ),
'core/groups/GETindex' => array( 'access' => TRUE ),
'core/hello/GETindex' => array( 'access' => TRUE ),
'core/members/GETindex' => array( 'access' => TRUE ),
'core/members/GETitem' => array( 'access' => TRUE ),
'core/members/POSTindex' => array( 'access' => TRUE ),
'core/members/POSTitem_secgroup' => array( 'access' => TRUE ),
'core/members/DELETEitem_secgroup' => array( 'access' => TRUE ),
'core/members/POSTitem' => array( 'access' => TRUE ),
'core/webhooks/POSTindex' => array( 'access' => TRUE ),
'core/webhooks/DELETEitem' => array( 'access' => TRUE ),
'core/promotions/GETindex' => array( 'access' => TRUE ),
'core/promotions/GETitem' => array( 'access' => TRUE ),
);
if ( \IPS\Application::appIsEnabled('forums') )
@@ -309,4 +315,32 @@ class _Zapier
throw new \DomainException( 'zapier_error_api' );
}
}
/**
* Give the Zapier REST Key all required permissions.
*
* @return void
*/
public static function rebuildRESTApiPermissions()
{
/* Rebuild Zapier REST API Key Permissions */
if( \IPS\Settings::i()->zapier_api_key )
{
try
{
$apiKey = \IPS\Api\Key::load( \IPS\Settings::i()->zapier_api_key );
$correctPermissions = json_encode( static::apiKeyPermissions() );
if ( $apiKey->permissions != $correctPermissions )
{
$apiKey->permissions = $correctPermissions;
$apiKey->save();
}
}
catch ( \OutOfRangeException $e )
{
}
}
}
}
@@ -28,6 +28,11 @@ class _Clubs
*/
public $classes = array();
/**
* @brief Can be shown in similar content
*/
public $similarContent = FALSE;
/**
* Constructor
*
@@ -28,6 +28,11 @@ class _Status
*/
public $classes = array();
/**
* @brief Can be shown in similar content
*/
public $similarContent = FALSE;
/**
* Constructor
*
@@ -136,22 +136,24 @@ class _Attachment
if ( isset( static::$loadedExtensions[ $map['location_key'] ] ) )
{
try
if( method_exists( static::$loadedExtensions[$map['location_key']], 'attachmentLookup'))
{
$url = static::$loadedExtensions[ $map['location_key'] ]->attachmentLookup( $map['id1'], $map['id2'], $map['id3'] );
try {
$url = static::$loadedExtensions[$map['location_key']]->attachmentLookup($map['id1'], $map['id2'], $map['id3']);
/* Test url() method to prevent BadMethodCallException from the template below - an attachment may be
located within a Node class that doesn't support urls, such as CMS Blocks. */
/* Test url() method to prevent BadMethodCallException from the template below - an attachment may be
located within a Node class that doesn't support urls, such as CMS Blocks. */
if( $url instanceof \IPS\Content or $url instanceof \IPS\Node\Model )
{
$url->url();
if ($url instanceof \IPS\Content or $url instanceof \IPS\Node\Model){
$url->url();
}
static::$locations[$attachId][] = $url;
} catch (\LogicException $e) {
} catch (\BadMethodCallException $e) {
}
static::$locations[ $attachId ][] = $url;
}
catch ( \LogicException $e ) { }
catch ( \BadMethodCallException $e ){ }
}
}
}
@@ -71,50 +71,60 @@ class _Achievements
/* If all *available* options are selected, we want to choose 'all' for consistency on create vs edit */
$_options = array_keys( $ranks['options'] );
return array(
$return = array(
new \IPS\Helpers\Form\Custom( 'mf_points', array( 0 => isset( $criteria['achievement_points_operator'] ) ? $criteria['achievement_points_operator'] : NULL, 1 => isset( $criteria['achievement_points_value'] ) ? $criteria['achievement_points_value'] : NULL ), FALSE, array(
'getHtml' => function( $element )
{
return \IPS\Theme::i()->getTemplate( 'forms', 'core' )->select( "{$element->name}[0]", $element->value[0], $element->required, array(
'any' => \IPS\Member::loggedIn()->language()->addToStack('any'),
'gt' => \IPS\Member::loggedIn()->language()->addToStack('gt'),
'lt' => \IPS\Member::loggedIn()->language()->addToStack('lt'),
'eq' => \IPS\Member::loggedIn()->language()->addToStack('exactly'),
),
FALSE,
NULL,
FALSE,
array(
'any' => array(),
'gt' => array( 'elNumber_' . $element->name . '-qty' ),
'lt' => array( 'elNumber_' . $element->name . '-qty' ),
'eq' => array( 'elNumber_' . $element->name . '-qty' ),
) )
. ' '
. \IPS\Theme::i()->getTemplate( 'forms', 'core', 'global' )->number( "{$element->name}[1]", $element->value[1], $element->required, NULL, FALSE, NULL, NULL, NULL, 0, NULL, FALSE, NULL, array(), array(), array(), $element->name . '-qty' );
'any' => \IPS\Member::loggedIn()->language()->addToStack('any'),
'gt' => \IPS\Member::loggedIn()->language()->addToStack('gt'),
'lt' => \IPS\Member::loggedIn()->language()->addToStack('lt'),
'eq' => \IPS\Member::loggedIn()->language()->addToStack('exactly'),
),
FALSE,
NULL,
FALSE,
array(
'any' => array(),
'gt' => array( 'elNumber_' . $element->name . '-qty' ),
'lt' => array( 'elNumber_' . $element->name . '-qty' ),
'eq' => array( 'elNumber_' . $element->name . '-qty' ),
) )
. ' '
. \IPS\Theme::i()->getTemplate( 'forms', 'core', 'global' )->number( "{$element->name}[1]", $element->value[1], $element->required, NULL, FALSE, NULL, NULL, NULL, 0, NULL, FALSE, NULL, array(), array(), array(), $element->name . '-qty' );
}
), NULL, NULL, NULL, 'mp_points' ),
new \IPS\Helpers\Form\YesNo( 'mf_badges_choose', ( isset( $criteria['achievement_badges'] ) AND $criteria['achievement_badges'] != 'ignore' ), FALSE, array(
), NULL, NULL, NULL, 'mp_points' )
);
if( \count( $badges['options'] ) )
{
$return[] = new \IPS\Helpers\Form\YesNo( 'mf_badges_choose', ( !empty( $criteria['achievement_badges'] ) AND $criteria['achievement_badges'] !== 'ignore' ), FALSE, array(
'togglesOn' => [ 'mf_badges' ]
), NULL, NULL, NULL, 'mf_badges_choose' ),
new \IPS\Helpers\Form\CheckboxSet( 'mf_badges', ( isset( $criteria['achievement_badges'] ) AND $criteria['achievement_badges'] != 'ignore' ) ? explode( ',', $criteria['achievement_badges'] ) : [], FALSE, array(
), NULL, NULL, NULL, 'mf_badges_choose' );
$return[] = new \IPS\Helpers\Form\CheckboxSet( 'mf_badges', ( isset( $criteria['achievement_badges'] ) AND $criteria['achievement_badges'] != 'ignore' ) ? ( $criteria['achievement_badges'] === 'all' ? 'all' : explode( ',', $criteria['achievement_badges'] ) ) : [], FALSE, array(
'options' => $badges['options'],
'multiple' => TRUE,
'unlimited' => 'all',
'unlimitedLang' => 'mf_achievements_all_badges',
'impliedUnlimited' => TRUE
), NULL, NULL, NULL, 'mf_badges' ),
new \IPS\Helpers\Form\YesNo( 'mf_ranks_choose', ( isset( $criteria['achievement_ranks'] ) AND $criteria['achievement_ranks'] != 'ignore' ), FALSE, array(
), NULL, NULL, NULL, 'mf_badges' );
}
if( \count( $ranks['options'] ) )
{
$return[] = new \IPS\Helpers\Form\YesNo( 'mf_ranks_choose', ( !empty( $criteria['achievement_ranks'] ) AND $criteria['achievement_ranks'] !== 'ignore' ), FALSE, array(
'togglesOn' => [ 'mf_ranks' ]
), NULL, NULL, NULL, 'mf_ranks_choose' ),
new \IPS\Helpers\Form\CheckboxSet( 'mf_ranks', ( isset( $criteria['achievement_ranks'] ) AND $criteria['achievement_ranks'] != 'ignore' ) ? explode( ',', $criteria['achievement_ranks'] ) : [], FALSE, array(
), NULL, NULL, NULL, 'mf_ranks_choose' );
$return[] = new \IPS\Helpers\Form\CheckboxSet( 'mf_ranks', ( isset( $criteria['achievement_ranks'] ) AND $criteria['achievement_ranks'] !== 'ignore' ) ? ( $criteria['achievement_ranks'] === 'all' ? 'all' : explode( ',', $criteria['achievement_ranks'] ) ) : [], FALSE, array(
'options' => $ranks['options'],
'multiple' => TRUE,
'unlimited' => 'all',
'unlimitedLang' => 'mf_achievements_all_ranks',
'impliedUnlimited' => TRUE
), NULL, NULL, NULL, 'mf_ranks' )
);
), NULL, NULL, NULL, 'mf_ranks' );
}
return $return;
}
/**
@@ -129,8 +139,8 @@ class _Achievements
return array(
'achievement_points_operator' => $post['mf_points'][0],
'achievement_points_value' => $post['mf_points'][1],
'achievement_badges' => ( $post['mf_badges_choose'] ) ? implode( ',', $post['mf_badges'] ) : 'ignore',
'achievement_ranks' => ( $post['mf_ranks_choose'] ) ? implode( ',', $post['mf_ranks'] ) : 'ignore'
'achievement_badges' => ( !empty( $post['mf_badges_choose'] ) ) ? ( $post['mf_badges'] == 'all' ? 'all' : implode( ',', $post['mf_badges'] ) ) : 'ignore',
'achievement_ranks' => ( !empty( $post['mf_ranks_choose'] ) ) ? ( $post['mf_ranks'] == 'all' ? 'all' : implode( ',', $post['mf_ranks'] ) ) : 'ignore',
);
}
@@ -161,7 +171,16 @@ class _Achievements
if ( $data['achievement_badges'] != 'ignore' )
{
$badgeSelect = \IPS\Db::i()->select( 'member', 'core_member_badges', \IPS\Db::i()->in( 'badge', explode( ',', $data['achievement_badges'] ) ), NULL, NULL, NULL, NULL, \IPS\Db::SELECT_DISTINCT );
if( $data['achievement_ranks'] == 'all' )
{
$badgeWhere = NULL;
}
else
{
$badgeWhere = \IPS\Db::i()->in( 'badge', explode( ',', $data['achievement_badges'] ) );
}
$badgeSelect = \IPS\Db::i()->select( 'member', 'core_member_badges', $badgeWhere, NULL, NULL, NULL, NULL, \IPS\Db::SELECT_DISTINCT );
$where[] = 'core_members.member_id IN(' . $badgeSelect . ')';
}
@@ -170,7 +189,16 @@ class _Achievements
$ranks = \IPS\core\Achievements\Rank::getStore();
$rankWhere = [];
foreach( explode( ',', $data['achievement_ranks'] ) as $val )
if( $data['achievement_ranks'] == 'all' )
{
$rankIds = array_keys( $ranks );
}
else
{
$rankIds = explode( ',', $data['achievement_ranks'] );
}
foreach( $rankIds as $val )
{
$minPoints = 0;
$maxPoints = 0;
@@ -263,7 +291,16 @@ class _Achievements
$ranks = \IPS\core\Achievements\Rank::getStore();
$pass = FALSE;
foreach( explode( ',', $filters['achievement_ranks'] ) as $val )
if( $filters['achievement_ranks'] == 'all' )
{
$rankIds = array_keys( $ranks );
}
else
{
$rankIds = explode( ',', $filters['achievement_ranks'] );
}
foreach( $rankIds as $val )
{
$minPoints = 0;
$maxPoints = 0;
@@ -90,8 +90,25 @@ class _ProfileFields
}
) );
break;
case 'IPS\Helpers\Form\Checkbox':
$options = array(
'' => 'any_value',
1 => 'checked',
0 => 'unchecked'
);
$helper = new \IPS\Helpers\Form\Select( $langKey, $criteria[ $langKey ] ?? NULL, FALSE, array( 'options' => $options ) );
break;
case 'IPS\Helpers\Form\YesNo':
$options = array(
'' => 'any_value',
1 => 'yes',
0 => 'no'
);
$helper = new \IPS\Helpers\Form\Select( $langKey, $criteria[ $langKey ] ?? NULL, FALSE, array( 'options' => $options ) );
break;
case 'IPS\Helpers\Form\Select':
case 'IPS\Helpers\Form\Radio':
case 'IPS\Helpers\Form\CheckboxSet':
if( $field['pf_multiple'] )
{
$options = array();
@@ -174,7 +191,7 @@ class _ProfileFields
$helper = NULL;
$langKey = "core_pfield_{$id}";
if( !isset( $data[ $langKey ] ) OR !$data[ $langKey ] )
if( empty( $data[ $langKey ] ) )
{
continue;
}
@@ -217,8 +234,13 @@ class _ProfileFields
break;
}
break;
case 'IPS\Helpers\Form\Checkbox':
case 'IPS\Helpers\Form\YesNo':
$where[] = "field_{$id}='" . $data[ $langKey ] . "'";
break;
case 'IPS\Helpers\Form\Select':
case 'IPS\Helpers\Form\Radio':
case 'IPS\Helpers\Form\CheckboxSet':
if ( isset( $field['pf_multiple'] ) AND $field['pf_multiple'] == TRUE )
{
$where[] = \IPS\Db::i()->findInSet( 'field_' . $id, $data[ $langKey ] );
@@ -30,7 +30,12 @@ class _System
*/
public function onCreateAccount( $member )
{
\IPS\Api\Webhook::fire( 'member_create', $member );
\IPS\Api\Webhook::fire( 'member_create', $member, $member->webhookFilters() );
if( $member->id AND $member->completed )
{
\IPS\Api\Webhook::fire( 'member_registration_complete', $member, $member->webhookFilters() );
}
if ( \IPS\Dispatcher::hasInstance() and \IPS\Dispatcher::i()->controllerLocation === 'front' and isset( \IPS\Request::i()->cookie[ 'referred_by' ] ) )
{
@@ -149,7 +154,6 @@ class _System
/* Delete duplicate stuff */
\IPS\Db::i()->delete( 'core_item_markers', array( 'item_member_id=?', $member2->member_id ) );
\IPS\Db::i()->delete( 'core_members_feature_seen', array( 'member_id=?', $member2->member_id ) );
\IPS\Db::i()->delete( 'core_security_answers', array( 'answer_member_id=?', $member2->member_id ) );
\IPS\Db::i()->delete( 'core_sessions', array( 'member_id=?', $member2->member_id ) );
\IPS\Db::i()->delete( 'core_sys_cp_sessions', array( 'session_member_id=?', $member2->member_id ) );
@@ -241,6 +245,8 @@ class _System
/* Rebuild permission array */
$member->rebuildPermissionArray();
\IPS\Api\Webhook::fire( 'member_merged', ['kept' => $member->apiOutput(), 'removed' => $member2->apiOutput()] );
}
/**
@@ -308,7 +314,6 @@ class _System
array( 'core_member_status_updates', 'status_author_id' ),
array( 'core_member_status_replies', 'reply_member_id' ),
array( 'core_login_links', 'token_member' ),
array( 'core_members_feature_seen', 'member_id' ),
array( 'core_saved_charts', 'chart_member' ),
array( 'core_members_known_devices', 'member_id' ),
array( 'core_members_known_ip_addresses', 'member_id' ),
@@ -368,7 +373,7 @@ class _System
$member->deletePhoto();
$member->coverPhoto()->delete();
\IPS\Api\Webhook::fire( 'member_delete', $member );
\IPS\Api\Webhook::fire( 'member_delete', $member, $member->webhookFilters() );
}
/**
@@ -407,6 +412,14 @@ class _System
$member->members_bitoptions['profile_completed'] = 0;
}
foreach( $member::$changesToSkipForMemberEditWebhooks as $fieldToRemove )
{
if( \in_array($fieldToRemove, $changes ) )
{
unset( $changes[$fieldToRemove] );
}
}
if( \count( $changes ) )
{
$params = [
@@ -414,7 +427,7 @@ class _System
'changes' => $changes
];
\IPS\Api\Webhook::fire( 'member_edited', $params );
\IPS\Api\Webhook::fire( 'member_edited', $params, $member->webhookFilters() );
}
}
}
}
@@ -169,17 +169,36 @@ class _FeaturedComments
'note' => isset( $comment['note'] ) ? $comment['note'] : '',
);
$commentIds[] = $comment['comment'];
$memberIds[ $comment['featured_by'] ][] = $comment['comment'];
}
$commentClass = $item::$commentClass;
$commentIdField = $commentClass::$databaseColumnId;
if ( isset( $commentClass::$databaseColumnMap['hidden'] ) )
{
$col = $commentClass::$databaseColumnMap['hidden'];
}
else if ( isset( $commentClass::$databaseColumnMap['approved'] ) )
{
$col = $commentClass::$databaseColumnMap['approved'];
}
$softDeleted = [];
foreach( new \IPS\Patterns\ActiveRecordIterator( \IPS\Db::i()->select( '*', $commentClass::$databaseTable, array( \IPS\Db::i()->in( $commentClass::$databasePrefix . $commentIdField, $commentIds ) ), $commentClass::$databasePrefix . $commentClass::$databaseColumnMap['date'] . " DESC" ), $commentClass ) AS $row )
{
$comments[ $row->$commentIdField ]['comment'] = $row;
if( $row->$col < 0 )
{
unset( $comments[$row->$commentIdField] );
$softDeleted[] = $row->$commentIdField;
}
else
{
$comments[ $row->$commentIdField ]['comment'] = $row;
}
}
/* And finally, who featured them */
if ( \count( $memberIds ) )
{
@@ -187,11 +206,16 @@ class _FeaturedComments
{
foreach( $memberIds[ $m->member_id ] AS $attach )
{
if( \in_array( $attach, $softDeleted ) )
{
continue;
}
$comments[ $attach ]['featured_by'] = $m;
}
}
}
/* And off we go! */
return $comments;
}
@@ -228,4 +252,4 @@ class _FeaturedComments
return FALSE;
}
}
}
}
@@ -95,7 +95,7 @@ class _Alerts
if ( $values = $form->values() )
{
$alert = \IPS\Core\Alerts\Alert::_createFromForm( $values, $current );
$alert = \IPS\core\Alerts\Alert::_createFromForm( $values, $current );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=modcp&tab=alerts", 'front', 'modcp_alerts' ) );
}
@@ -72,47 +72,16 @@ class _Reports extends \IPS\Content\Controller
* @return void
*/
public function manage()
{
$where = [];
{
/* Make sure we're only loading reports where we have permission to view the content */
$classWhere = [];
$classBinds = [];
$viewPermIds = iterator_to_array( \IPS\Db::i()->select( 'perm_id', 'core_permission_index', \IPS\Db::i()->findInSet( 'perm_view', \IPS\Member::loggedIn()->permissionArray() ) . " OR perm_view='*'" ) );
$permIds = [];
foreach ( array_merge( [ 'IPS\core\Messenger\Conversation', 'IPS\core\Messenger\Message' ], array_values( \IPS\Content::routedClasses( FALSE, TRUE ) ) ) as $class )
{
$workingClass = $class;
if ( isset( $workingClass::$itemClass ) )
{
$workingClass = $workingClass::$itemClass;
}
if ( isset( $workingClass::$containerNodeClass ) )
{
$workingClass = $workingClass::$containerNodeClass;
}
if ( isset( $workingClass::$permissionMap ) and isset( $workingClass::$permissionMap['read'] ) and $workingClass::$permissionMap['read'] !== 'view' )
{
if ( !isset( $permIds[ $workingClass::$permissionMap['read'] ] ) )
{
$permIds[ $workingClass::$permissionMap['read'] ] = iterator_to_array( \IPS\Db::i()->select( 'perm_id', 'core_permission_index', \IPS\Db::i()->findInSet( 'perm_' . $workingClass::$permissionMap['read'], \IPS\Member::loggedIn()->permissionArray() ) . " OR perm_" . $workingClass::$permissionMap['read'] . "='*'" ) );
}
$classWhere[] = "( class='" . str_replace( '\\', '\\\\', $class ) . "' AND ( perm_id IN(" . implode( ',', array_intersect( $viewPermIds, $permIds[ $workingClass::$permissionMap['read'] ] ) ) . ") ) OR perm_id IS NULL )";
}
else
{
$classWhere[] = "( class='" . str_replace( '\\', '\\\\', $class ) . "' AND ( perm_id IN(" . implode( ',', $viewPermIds ) . ") ) OR perm_id IS NULL )";
}
}
$where[] = array( '(' . implode( ' OR ', $classWhere ) . ')' );
$where = [ \IPS\core\Reports\Report::where() ];
/* Make sure we're loading the correct statuses */
if( \IPS\Request::i()->isAjax() and isset( \IPS\Request::i()->overview ) )
{
$where[] = array( "status IN( 1,2 )" );
}
/* Create table */
$table = new \IPS\Helpers\Table\Content( '\IPS\core\Reports\Report', \IPS\Http\Url::internal( 'app=core&module=modcp&controller=modcp&tab=reports', NULL, 'modcp_reports' ), $where );
$table->sortBy = $table->sortBy ?: 'first_report_date';
@@ -121,8 +90,38 @@ class _Reports extends \IPS\Content\Controller
/* Title is a special case in the Report center class that isn't available in the core_rc_index table so attempting to sort on it throws an error and does nothing */
unset( $table->sortOptions['title'] );
$table->filters = array( 'report_status_1' => array( 'status=1' ), 'report_status_2' => array( 'status=2' ), 'report_status_3' => array( 'status=3' ) );
$table->filters = [
'filter_report_status_1' => array( 'status=1' )
];
foreach ( \IPS\Application::allExtensions( 'core', 'ContentRouter') as $app => $classes )
{
$appKey = explode('_', $app)[0];
$apps[ $appKey ] = $classes;
}
foreach( $apps as $appKey => $data )
{
$classes = $data->classes;
foreach( $classes as $class )
{
if ( is_subclass_of( $class, "IPS\Content\Item" ) )
{
$classes[] = $class::$commentClass;
if ( isset( $class::$reviewClass ) )
{
$classes[] = $class::$reviewClass;
}
}
}
$table->filters['filter_report_status_1_' . $appKey ] = [ 'status=1 and ' . \IPS\Db::i()->in( 'class', $classes ) ];
\IPS\Member::loggedIn()->language()->words[ 'filter_report_status_1_' . $appKey ] = \IPS\Member::loggedIn()->language()->addToStack( 'filter_report_status_1_app', NULL, [ 'sprintf' => [ \IPS\Application::applications()[ $appKey ]->_title ] ] );
}
$table->filters['filter_report_status_2'] = [ 'status=2' ];
$table->filters['filter_report_status_3'] = [ 'status=3' ];
$table->title = \IPS\Member::loggedIn()->language()->addToStack( 'report_center_header' );
if ( \IPS\Request::i()->isAjax() and isset( \IPS\Request::i()->overview ) )
@@ -137,7 +136,7 @@ class _Reports extends \IPS\Content\Controller
return \IPS\Theme::i()->getTemplate( 'modcp' )->reportList( (string) $table );
}
}
/**
* View a report
*
@@ -311,7 +311,82 @@ class _MyStuff
'author' => ( \IPS\Member::loggedIn()->group['gbw_view_reps'] ) ? \IPS\Member::load( $first['member_id'] ) : new \IPS\Member
);
}
/**
* Parse notification: parse_rest_new_likes
*
* @param \IPS\Notification\Inline $notification The notification
* @param bool $htmlEscape TRUE to escape HTML in title
* @return array|NULL
* @code
return array(
'title' => "Mark has replied to A Topic", // The notification title
'url' => \IPS\Http\Url::internal( ... ), // The URL the notification should link to
'content' => "Lorem ipsum dolar sit", // [Optional] Any appropriate content. Do not format this like an email where the text
// explains what the notification is about - just include any appropriate content.
// For example, if the notification is about a post, set this as the body of the post.
'author' => \IPS\Member::load( 1 ), // [Optional] The user whose photo should be displayed for this notification
);
* @endcode
*/
public function parse_rest_new_likes( $notification, $htmlEscape=TRUE )
{
$comment = $notification->item;
if ( !$comment )
{
throw new \OutOfRangeException;
}
$item = ( $comment instanceof \IPS\Content\Item ) ? $comment : $comment->item();
$idColumn = $comment::$databaseColumnId;
$between = time();
try
{
/* Is there a newer notification for this item? */
$between = \IPS\Db::i()->select( 'sent_time', 'core_notifications', array( '`member`=? AND item_id=? AND item_class=? AND sent_time>? AND notification_key=?', \IPS\Member::loggedIn()->member_id, $comment->$idColumn, \get_class( $comment ), $notification->sent_time->getTimestamp(), $notification->notification_key ) )->first();
}
catch( \UnderflowException $e ) {}
$likers = \IPS\Db::i()->select( 'DISTINCT member_id, rep_date', 'core_reputation_index', array( 'app=? AND type=? AND rep_date>=? AND rep_date<? AND type_id=?', $comment::$application, $comment::reactionType(), $notification->sent_time->getTimestamp(), $between, $comment->$idColumn ), 'rep_date desc' );
$names = array();
$first = array();
foreach( $likers AS $member )
{
if( empty( $first ) )
{
$first = $member;
}
if ( \count( $names ) > 2 )
{
$names[] = \IPS\Member::loggedIn()->language()->addToStack( 'x_others', FALSE, array( 'pluralize' => array( \count( $likers ) - 3 ) ) );
break;
}
$names[] = \IPS\Member::load( $member['member_id'] )->name;
}
if( empty( $first ) )
{
throw new \OutOfRangeException;
}
return array(
'title' => \IPS\Member::loggedIn()->language()->addToStack( \IPS\Content\Reaction::isLikeMode() ? 'notification__new_likes' : 'notification__new_react', FALSE, array(
'pluralize' => array( \count( $likers ) ),
( $htmlEscape ? 'sprintf' : 'htmlsprintf' ) => array(
\IPS\Member::loggedIn()->language()->formatList( $names ),
mb_strtolower( $comment->indefiniteArticle() )
)
) ) . ' ' . $item->mapped('title'),
'url' => ( $comment instanceof \IPS\Content\Comment ) ? $comment->url('find') : $comment->url(),
'content' => $comment->truncated(),
'author' => \IPS\Member::load( $first['member_id'] )
);
}
/**
* Parse notification for mobile: new_likes
*
@@ -0,0 +1,52 @@
<?php
/**
* @brief Template Plugin
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @since 01 Sep 2022
*/
namespace IPS\core\extensions\core\OutputPlugins;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Template Plugin
*/
class _GraphQl
{
/**
* @brief Can be used when compiling CSS
*/
public static $canBeUsedInCss = FALSE;
/**
* Run the plug-in
*
* @param string $data The initial data from the tag
* @param array $options Array of options
* @return string Code to eval
*/
public static function runPlugin( $data, $options )
{
if( !isset( $options['variables']))
{
$options['variables'] = [];
}
$response = \IPS\Api\GraphQL::execute($data, $options['variables']);
if( isset( $response['data']))
{
return "'" . json_encode($response['data'] ) . "'";
}
}
}
@@ -107,18 +107,30 @@ class _ProfileFields
/* Init Chart */
$pieBarData = array();
$results = array();
$limit = 15;
/* Add Rows */
$select = \IPS\Db::i()->select( 'COUNT(*) as total, field_' . $field['pf_id'], 'core_pfields_content', NULL, NULL, NULL, 'field_' . $field['pf_id'] );
$select = \IPS\Db::i()->select( 'COUNT(*) as total, field_' . $field['pf_id'], 'core_pfields_content', NULL, 'total DESC', NULL, 'field_' . $field['pf_id'] );
$total = 0;
$i = 0;
foreach( $select as $row )
{
if( $row['field_' . $field['pf_id'] ] !== NULL )
{
$total += $row['total'];
$results[ $row['field_' . $field['pf_id'] ] ] = $row;
if( $i <= $limit )
{
$results[ $row['field_' . $field['pf_id'] ] ] = $row;
}
else
{
$otherKey = \IPS\Member::loggedIn()->language()->addToStack('stats_overview_others');
$results[$otherKey] = [ 'total' => 5 ];
}
$i++;
}
}
@@ -165,6 +177,7 @@ class _ProfileFields
elseif( $field['pf_content'] )
{
$options = json_decode( $field['pf_content'], TRUE );
$options = array_keys( $results);
foreach( $options as $k => $v )
{
@@ -0,0 +1,96 @@
<?php
/**
* @brief Background Task
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @since 27 Jun 2022
*/
namespace IPS\core\extensions\core\Queue;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Background Task
*/
class _BuildTimeToRank
{
/**
* @brief Number of topics to build per cycle
*/
public $perCycle = \IPS\REBUILD_QUICK;
/**
* Parse data before queuing
*
* @param array $data
* @return array
*/
public function preQueueData( $data )
{
try
{
$data['count'] = \IPS\Db::i()->select( 'COUNT(*)', 'core_points_log', array( 'new_rank IS NOT NULL') )->first();
}
catch( \Exception $ex )
{
throw new \OutOfRangeException;
}
if( $data['count'] == 0 )
{
return null;
}
return $data;
}
/**
* Run Background Task
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int New offset
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( $data, $offset )
{
$count = 0;
foreach( \IPS\Db::i()->select( '*', 'core_points_log', array( 'new_rank IS NOT NULL'), 'id ASC', array( $offset, $this->perCycle ) )->join( 'core_members', 'core_members.member_id = core_points_log.member' ) as $log )
{
$count++;
\IPS\Db::i()->update( 'core_points_log', array( 'time_to_new_rank' => $log['datetime'] - $log['joined'] ), array( 'id=?', $log['id'] ) );
$offset = $log['id'];
}
if( !$count )
{
throw new \IPS\Task\Queue\OutOfRangeException;
}
return ( $offset );
}
/**
* Get Progress
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return array( 'text' => 'Doing something...', 'complete' => 50 ) Text explaining task and percentage complete
* @throws \OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function getProgress( $data, $offset )
{
return array( 'text' => \IPS\Member::loggedIn()->language()->addToStack('rankprogression_rebuild'), 'complete' => round( 100 / $data['count'] * $offset, 2 ) );
}
}
@@ -63,10 +63,10 @@ class _Follow
throw new \IPS\Task\Queue\OutOfRangeException;
}
/* Check soft delete */
if( $item->hidden() == -2 )
/* Only send notifications for approved items */
if( $item->hidden() !== 0 )
{
/* Item is pending deletion, do not sent notifications */
/* Item is pending deletion or hidden, do not send notifications */
throw new \IPS\Task\Queue\OutOfRangeException;
}
@@ -0,0 +1,86 @@
<?php
/**
* @brief Background Task
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @since 27 Sep 2022
*/
namespace IPS\core\extensions\core\Queue;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Background Task
*/
class _PrunePms
{
/**
* Parse data before queuing
*
* @param array $data
* @return array
*/
public function preQueueData( $data )
{
$rows = new \IPS\Patterns\ActiveRecordIterator( \IPS\Db::i()->select( '*', 'core_message_topics', array( 'mt_last_post_time < ?', \IPS\DateTime::create()->sub( new \DateInterval( 'P' . \IPS\Settings::i()->prune_pms . 'D' ) )->getTimestamp() ) ), '\IPS\core\Messenger\Conversation');
$data['count'] = $rows->count();
if( $data['count'] == 0 )
{
return null;
}
return $data;
}
/**
* Run Background Task
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int New offset
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( &$data, $offset )
{
$rows = new \IPS\Patterns\ActiveRecordIterator( \IPS\Db::i()->select( '*', 'core_message_topics', array( 'mt_last_post_time < ?', \IPS\DateTime::create()->sub( new \DateInterval( 'P' . \IPS\Settings::i()->prune_pms . 'D' ) )->getTimestamp() ), 'mt_last_post_time ASC', 100 ), '\IPS\core\Messenger\Conversation');
if ( !$rows->count() )
{
throw new \IPS\Task\Queue\OutOfRangeException;
}
foreach( $rows AS $conversation )
{
$conversation->delete();
$offset++;
}
return $offset;
}
/**
* Get Progress
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return array( 'text' => 'Doing something...', 'complete' => 50 ) Text explaining task and percentage complete
* @throws \OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function getProgress( $data, $offset )
{
$text = \IPS\Member::loggedIn()->language()->addToStack('pruning_pms', FALSE, array() );
return array( 'text' => $text, 'complete' => $data['count'] ? ( round( 100 / $data['count'] * $offset, 2 ) ) : 100 );
}
}
@@ -63,7 +63,7 @@ class _RebuildAchievements
}
catch( \Exception $ex )
{
throw new \OutOfRangeException;
return null;
}
if( $data['count'] == 0 )
@@ -104,7 +104,15 @@ class _RebuildAchievements
}
list( $app, $extension ) = explode( '_', $data['extension'] );
$extensionObject = \IPS\Application::load( $app )->extensions( 'core', 'AchievementAction' )[ $extension ];
try
{
$extensionObject = \IPS\Application::load( $app )->extensions( 'core', 'AchievementAction' )[ $extension ];
}
catch( \OutOfRangeException $e )
{
\IPS\Log::debug("App {$app} deleted. Nothing to do.", "achievements");
throw new \IPS\Task\Queue\OutOfRangeException;
}
$where = $process['where'];
if ( \stristr( $process['pkey'], '(' ) )
@@ -0,0 +1,148 @@
<?php
/**
* @brief Background Task: Rebuild Report Index Data
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @since 16 Sept 2022
*/
namespace IPS\core\extensions\core\Queue;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Background Task: Rebuild Item Counts (comments, etc)
*/
class _RebuildReportIndexData
{
/**
* @brief Number of content items to index per cycle
*/
public $index = \IPS\REBUILD_QUICK;
/**
* Parse data before queuing
*
* @param array $data
* @return array
*/
public function preQueueData( $data )
{
try
{
$data['count'] = \IPS\Db::i()->select( 'MAX(id)', 'core_rc_index' )->first();
$data['realCount'] = \IPS\Db::i()->select( 'COUNT(*)', 'core_rc_index' )->first();
}
catch( \IPS\Db\Exception $ex )
{
return NULL;
}
catch( \Exception $ex )
{
throw new \OutOfRangeException;
}
if( $data['count'] == 0 )
{
return null;
}
$data['indexed'] = 0;
return $data;
}
/**
* Run Background Task
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return int New offset
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
*/
public function run( &$data, $offset )
{
$last = NULL;
try
{
foreach( \IPS\Db::i()->select( '*', 'core_rc_index', array( 'id > ?', $offset ), 'id ASC', array( 0, $this->index ) ) as $report )
{
$last = $report['id'];
$classname = $report['class'];
$exploded = explode( '\\', $classname );
if ( ! class_exists( $classname ) or ! \IPS\Application::appIsEnabled( $exploded[1] ) )
{
continue;
}
try
{
$content = $classname::load( $report['content_id'] );
$itemId = 0;
$nodeId = 0;
$item = null;
if ( $content instanceof \IPS\Content\Item )
{
$item = $content;
}
else
{
$item = $content->item();
}
$idColumn = $item::$databaseColumnId;
$itemId = $item->$idColumn;
if ( $node = $item->containerWrapper() )
{
$nodeId = $node->_id;
}
\IPS\Db::i()->update( 'core_rc_index', [
'item_id' => $itemId,
'node_id' => $nodeId
],
[
'id=?', $report['id']
] );
}
catch( \Exception $e )
{
continue;
}
}
}
catch( \Exception $e )
{
throw new \IPS\Task\Queue\OutOfRangeException;
}
if( $last === NULL )
{
throw new \IPS\Task\Queue\OutOfRangeException;
}
return $last;
}
/**
* Get Progress
*
* @param mixed $data Data as it was passed to \IPS\Task::queue()
* @param int $offset Offset
* @return array( 'text' => 'Doing something...', 'complete' => 50 ) Text explaining task and percentage complete
*/
public function getProgress( $data, $offset )
{
return array( 'text' => \IPS\Member::loggedIn()->language()->addToStack('rebuilding_report_index_data'), 'complete' => $data['realCount'] ? ( round( 100 / $data['realCount'] * $data['indexed'], 2 ) ) : 100 );
}
}
@@ -169,6 +169,11 @@ class _RebuildSearchIndex
$indexer->index($item);
}
}
catch( \OutOfRangeException $e )
{
/* This can happen if there are older, orphaned posts/comments. Just do nothing here,
don't even log it, because we end up with pages and pages of logs. */
}
catch ( \Exception $e )
{
/* There was an issue indexing the item - skip and log it */
@@ -1,6 +1,35 @@
CKEditor 4 Changelog
====================
## CKEditor 4.19.1
Fixed Issues:
* [#5125](https://github.com/ckeditor/ckeditor4/issues/5125): Fixed: Deleting a widget with disabled [autoParagraph](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-autoParagraph) by the keyboard `backspace` key removes the editor editable area and crashes the editor.
* [#5135](https://github.com/ckeditor/ckeditor4/issues/5135): Fixed: The [`checkbox.setValue`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ui_dialog_checkbox.html#method-setValue) and [`radio.setValue`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ui_dialog_radio.html#method-setValue) methods are not chainable as stated in the documentation. Thanks to [Jordan Bradford](https://github.com/LordPachelbel)!
* [#5085](https://github.com/ckeditor/ckeditor4/issues/5085): Fixed: The [Language](https://ckeditor.com/cke4/addon/language) plugin removes the element marking the text in foreign language if said element does not have an information about the text direction.
* [#4284](https://github.com/ckeditor/ckeditor4/issues/4284): Fixed: [Tableselection](https://ckeditor.com/cke4/addon/tableselection) Merging cells with a rowspan throws an unexpected error and does not create an undo step.
* [#5184](https://github.com/ckeditor/ckeditor4/issues/5184): Fixed: The [Editor Placeholder](https://ckeditor.com/cke4/addon/wysiwygarea) plugin degrades typing performance.
* [#5158](https://github.com/ckeditor/ckeditor4/issues/5158): Fixed: [`CKEDITOR.tools#convertToPx()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-convertToPx) gives invalid results if the helper calculator element was deleted from the DOM.
* [#5234](https://github.com/ckeditor/ckeditor4/issues/5234): Fixed: [Easy Image](https://ckeditor.com/cke4/addon/easyimage) doesn't allow to upload images files using toolbar button.
* [#438](https://github.com/ckeditor/ckeditor4/issues/438): Fixed: It is impossible to navigate to the [elementspath](https://ckeditor.com/cke4/addon/elementspath) from the [toolbar](https://ckeditor.com/cke4/addon/toolbar) by keyboard and vice versa.
* [#4449](https://github.com/ckeditor/ckeditor4/issues/4449): Fixed: [`dialog.validate#functions`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-functions) incorrectly composes functions that return an optional error message, like e.g. [`dialog.validate.number`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-number) due to unnecessary return type coercion.
* [#4473](https://github.com/ckeditor/ckeditor4/issues/4473): Fixed: The [dialog.validate](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html) method does not accept parameter value. The issue originated in [dialog.validate.functions](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-functions) method that did not properly propagate parameter value to validator. Affected validators:
* [`functions`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-functions)
* [`equals`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-equals)
* [`notEqual`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-notEqual)
* [`cssLength`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-cssLength)
* [`htmlLength`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-htmlLength)
* [`inlineStyle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_validate.html#method-inlineStyle)
* [#5147](https://github.com/ckeditor/ckeditor4/issues/5147): Fixed: The [Accessibility Help](https://ckeditor.com/cke4/addon/a11yhelp) dialog does not contain info about focus being moved back to the editing area upon leaving dialogs.
* [#5144](https://github.com/ckeditor/ckeditor4/issues/5144): Fixed: [Menu buttons](https://ckeditor.com/cke4/addon/menubutton) and [panel buttons](https://ckeditor.com/cke4/addon/panelbutton) incorrectly indicate the open status of their associated pop-up menus in the browser's accessibility tree.
* [#5022](https://github.com/ckeditor/ckeditor4/issues/5022): Fixed: [Find and Replace](https://ckeditor.com/cke4/addon/find) does not respond to the `Enter` key.
API changes:
* [#5184](https://github.com/ckeditor/ckeditor4/issues/5184): Added the [`config.editorplaceholder_delay`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-editorplaceholder_delay) configuration option allowing to delay placeholder before it is toggled when changing editor content.
* [#5184](https://github.com/ckeditor/ckeditor4/issues/5184): Added the [`CKEDITOR.tools#debounce()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-debounce) function allowing to postpone a passed function execution until the given milliseconds have elapsed since the last time it was invoked.
## CKEditor 4.19.0
New features:
File diff suppressed because it is too large. Load diff
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['az']={"widget":{"move":"Tıklayın və aparın","label":"%1 vidjet"},"undo":{"redo":"Təkrar et","undo":"İmtina et"},"toolbar":{"toolbarCollapse":"Paneli gizlət","toolbarExpand":"Paneli göstər","toolbarGroups":{"document":"Mətn","clipboard":"Mübadilə buferi/İmtina et","editing":"Redaktə edilməsi","forms":"Formalar","basicstyles":"Əsas üslublar","paragraph":"Abzas","links":"Link","insert":"Əlavə et","styles":"Üslublar","colors":"Rənqlər","tools":"Alətləri"},"toolbars":"Redaktorun panelləri"},"sourcearea":{"toolbar":"HTML mənbəyini göstər"},"notification":{"closed":"Xəbərdarlıq pəncərəsi bağlanıb"},"list":{"bulletedlist":"Markerlənmiş siyahını başlat/sil","numberedlist":"Nömrələnmiş siyahını başlat/sil"},"justify":{"block":"Eninə görə","center":"Mərkəz","left":"Soldan düzləndir","right":"Sağdan düzləndir"},"indent":{"indent":"Sol boşluqu artır","outdent":"Sol boşluqu azalt"},"font":{"fontSize":{"label":"Şrift ölçüsü","voiceLabel":"Şrift ölçüsü","panelTitle":"Şrift ölçüsü"},"label":"Şrift","panelTitle":"Şrift","voiceLabel":"Şrift"},"elementspath":{"eleLabel":"Elementin izləri","eleTitle":"%1 element"},"colordialog":{"clear":"Təmizlə","highlight":"Ayırmaq","options":"Rəng seçimləri","selected":"Seçilmiş rəng","title":"Rəngi seç"},"colorbutton":{"auto":"Avtomatik","bgColorTitle":"Doldurma rəngi","colors":{"000":"Qara","800000":"Şabalıdı","8B4513":"Açıq şabalı","2F4F4F":"Açıq boz","008080":"Firuzəyi göy","000080":"Tünd göy","4B0082":"İndigo","696969":"Tünd boz","B22222":"Kərpiç","A52A2A":"Şabalıdı","DAA520":"Qızıl ağcaqayın","006400":"Tünd yaşıl","40E0D0":"Firuzəyi","0000CD":"Göy","800080":"Bənövşəyi","808080":"Boz","F00":"Qırmızı","FF8C00":"Tünd narıncı","FFD700":"Qızılı","008000":"Yaşıl","0FF":"Mavi","00F":"Göy","EE82EE":"Açıq bənövşəyi","A9A9A9":"Asfalt rəngi","FFA07A":"Qızılbalıq","FFA500":"Narıncı","FFFF00":"Sarı","00FF00":"Laym","AFEEEE":"Acıq firuzəyi","ADD8E6":"Acıq göy","DDA0DD":"Gavalı","D3D3D3":"Acıq boz","FFF0F5":"Yasəmən","FAEBD7":"Kağız","FFFFE0":"Acıq sarı","F0FFF0":"Yemişi","F0FFFF":"Gömgöy","F0F8FF":"Solğun göy","E6E6FA":"Lavanda","FFF":"Ağ","1ABC9C":"Güclü mavi","2ECC71":"Zümrüd","3498DB":"Parlaq göy","9B59B6":"Ametist","4E5F70":"Bozlu göy","F1C40F":"Sapsarı","16A085":"Tünd mavi","27AE60":"Tünd zümrüd","2980B9":"Güclü göy","8E44AD":"Tünd bənövşəyi","2C3E50":"Rəngsiz göy","F39C12":"Narıncı","E67E22":"Yerkökülü","E74C3C":"Solğun qırmızı","ECF0F1":"Parlaq gümüşü","95A5A6":"Acıq bozlu mavi","DDD":"Acıq boz","D35400":"Balqabaqlı","C0392B":"Güclü qırmızı","BDC3C7":"Gümüşü","7F8C8D":"Bozlu mavi","999":"Tünd boz"},"more":"Digər rənglər...","panelTitle":"Rənglər","textColorTitle":"Mətnin rəngi"},"clipboard":{"copy":"Köçür","copyError":"Avtomatik köçürülməsi mümkün deyil. Ctrl+C basın.","cut":"Kəs","cutError":"Avtomatik kəsmə mümkün deyil. Ctrl+X basın.","paste":"Əlavə et","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (seçilib)"},"basicstyles":{"bold":"Qalın","italic":"Kursiv","strike":"Üstüxətli","subscript":"Aşağı indeks","superscript":"Yuxarı indeks","underline":"Altdan xətt"},"application":"Rich Text Editor","editor":"Mətn Redaktoru","editorPanel":"Mətn Redaktorun Paneli","common":{"editorHelp":"Yardım üçün ALT 0 düymələrini basın","browseServer":"Fayların siyahı","url":"URL","protocol":"Protokol","upload":"Serverə yüklə","uploadSubmit":"Göndər","image":"Şəkil","form":"Forma","checkbox":"Çekboks","radio":"Radio düyməsi","textField":"Mətn xanası","textarea":"Mətn","hiddenField":"Gizli xana","button":"Düymə","select":"Opsiyaların seçilməsi","imageButton":"Şəkil tipli düymə","notSet":"<seçilməmiş>","id":"Id","name":"Ad","langDir":"Yaziların istiqaməti","langDirLtr":"Soldan sağa (LTR)","langDirRtl":"Sağdan sola (RTL)","langCode":"Dilin kodu","longDescr":"URL-ın ətraflı izahı","cssClass":"CSS klassları","advisoryTitle":"Başlıq","cssStyle":"CSS","ok":"Tədbiq et","cancel":"İmtina et","close":"Bağla","preview":"Baxış","resize":"Eni dəyiş","generalTab":"Əsas","advancedTab":"Əlavə","validateNumberFailed":"Rəqəm deyil.","confirmNewPage":"Yadda saxlanılmamış dəyişikliklər itiriləcək. Davam etmək istədiyinizə əminsinizmi?","confirmCancel":"Dəyişikliklər edilib. Pəncərəni bağlamaq istəyirsizə əminsinizmi?","options":"Seçimlər","target":"Hədəf çərçivə","targetNew":"Yeni pəncərə (_blank)","targetTop":Line truncated
CKEDITOR.lang['az']={"widget":{"move":"Tıklayın və aparın","label":"%1 vidjet"},"undo":{"redo":"Təkrar et","undo":"İmtina et"},"toolbar":{"toolbarCollapse":"Paneli gizlət","toolbarExpand":"Paneli göstər","toolbarGroups":{"document":"Mətn","clipboard":"Mübadilə buferi/İmtina et","editing":"Redaktə edilməsi","forms":"Formalar","basicstyles":"Əsas üslublar","paragraph":"Abzas","links":"Link","insert":"Əlavə et","styles":"Üslublar","colors":"Rənqlər","tools":"Alətləri"},"toolbars":"Redaktorun panelləri"},"sourcearea":{"toolbar":"HTML mənbəyini göstər"},"notification":{"closed":"Xəbərdarlıq pəncərəsi bağlanıb"},"list":{"bulletedlist":"Markerlənmiş siyahını başlat/sil","numberedlist":"Nömrələnmiş siyahını başlat/sil"},"justify":{"block":"Eninə görə","center":"Mərkəz","left":"Soldan düzləndir","right":"Sağdan düzləndir"},"indent":{"indent":"Sol boşluqu artır","outdent":"Sol boşluqu azalt"},"font":{"fontSize":{"label":"Şrift ölçüsü","voiceLabel":"Şrift ölçüsü","panelTitle":"Şrift ölçüsü"},"label":"Şrift","panelTitle":"Şrift","voiceLabel":"Şrift"},"elementspath":{"eleLabel":"Elementin izləri","eleTitle":"%1 element"},"colordialog":{"clear":"Təmizlə","highlight":"Ayırmaq","options":"Rəng seçimləri","selected":"Seçilmiş rəng","title":"Rəngi seç"},"colorbutton":{"auto":"Avtomatik","bgColorTitle":"Doldurma rəngi","colors":{"000":"Qara","800000":"Şabalıdı","8B4513":"Açıq şabalı","2F4F4F":"Açıq boz","008080":"Firuzəyi göy","000080":"Tünd göy","4B0082":"İndigo","696969":"Tünd boz","B22222":"Kərpiç","A52A2A":"Şabalıdı","DAA520":"Qızıl ağcaqayın","006400":"Tünd yaşıl","40E0D0":"Firuzəyi","0000CD":"Göy","800080":"Bənövşəyi","808080":"Boz","F00":"Qırmızı","FF8C00":"Tünd narıncı","FFD700":"Qızılı","008000":"Yaşıl","0FF":"Mavi","00F":"Göy","EE82EE":"Açıq bənövşəyi","A9A9A9":"Asfalt rəngi","FFA07A":"Qızılbalıq","FFA500":"Narıncı","FFFF00":"Sarı","00FF00":"Laym","AFEEEE":"Acıq firuzəyi","ADD8E6":"Acıq göy","DDA0DD":"Gavalı","D3D3D3":"Acıq boz","FFF0F5":"Yasəmən","FAEBD7":"Kağız","FFFFE0":"Acıq sarı","F0FFF0":"Yemişi","F0FFFF":"Gömgöy","F0F8FF":"Solğun göy","E6E6FA":"Lavanda","FFF":"Ağ","1ABC9C":"Güclü mavi","2ECC71":"Zümrüd","3498DB":"Parlaq göy","9B59B6":"Ametist","4E5F70":"Bozlu göy","F1C40F":"Sapsarı","16A085":"Tünd mavi","27AE60":"Tünd zümrüd","2980B9":"Güclü göy","8E44AD":"Tünd bənövşəyi","2C3E50":"Rəngsiz göy","F39C12":"Narıncı","E67E22":"Yerkökülü","E74C3C":"Solğun qırmızı","ECF0F1":"Parlaq gümüşü","95A5A6":"Acıq bozlu mavi","DDD":"Acıq boz","D35400":"Balqabaqlı","C0392B":"Güclü qırmızı","BDC3C7":"Gümüşü","7F8C8D":"Bozlu mavi","999":"Tünd boz"},"more":"Digər rənglər...","panelTitle":"Rənglər","textColorTitle":"Mətnin rəngi"},"clipboard":{"copy":"Köçür","copyError":"Avtomatik köçürülməsi mümkün deyil. Ctrl+C basın.","cut":"Kəs","cutError":"Avtomatik kəsmə mümkün deyil. Ctrl+X basın.","paste":"Əlavə et","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (seçilib)"},"basicstyles":{"bold":"Qalın","italic":"Kursiv","strike":"Üstüxətli","subscript":"Aşağı indeks","superscript":"Yuxarı indeks","underline":"Altdan xətt"},"application":"Rich Text Redaktoru","editor":"Redaktor","editorPanel":"Mətn Redaktorun Paneli","common":{"editorHelp":"Yardım üçün ALT 0 düymələrini basın","browseServer":"Fayların siyahı","url":"URL","protocol":"Protokol","upload":"Serverə yüklə","uploadSubmit":"Göndər","image":"Şəkil","form":"Forma","checkbox":"Çekboks","radio":"Radio düyməsi","textField":"Mətn xanası","textarea":"Mətn","hiddenField":"Gizli xana","button":"Düymə","select":"Opsiyaların seçilməsi","imageButton":"Şəkil tipli düymə","notSet":"<seçilməmiş>","id":"Id","name":"Ad","langDir":"Yaziların istiqaməti","langDirLtr":"Soldan sağa (LTR)","langDirRtl":"Sağdan sola (RTL)","langCode":"Dilin kodu","longDescr":"URL-ın ətraflı izahı","cssClass":"CSS klassları","advisoryTitle":"Başlıq","cssStyle":"CSS","ok":"Tədbiq et","cancel":"İmtina et","close":"Bağla","preview":"Baxış","resize":"Eni dəyiş","generalTab":"Əsas","advancedTab":"Əlavə","validateNumberFailed":"Rəqəm deyil.","confirmNewPage":"Yadda saxlanılmamış dəyişikliklər itiriləcək. Davam etmək istədiyinizə əminsinizmi?","confirmCancel":"Dəyişikliklər edilib. Pəncərəni bağlamaq istəyirsizə əminsinizmi?","options":"Seçimlər","target":"Hədəf çərçivə","targetNew":"Yeni pəncərə (_blank)","targetTop":"ƏsLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['el']={"widget":{"move":"Κάνετε κλικ και σύρετε το ποντίκι για να μετακινήστε","label":"%1 widget"},"undo":{"redo":"Επανάληψη","undo":"Αναίρεση"},"toolbar":{"toolbarCollapse":"Σύμπτυξη Εργαλειοθήκης","toolbarExpand":"Ανάπτυξη Εργαλειοθήκης","toolbarGroups":{"document":"Έγγραφο","clipboard":"Πρόχειρο/Αναίρεση","editing":"Επεξεργασία","forms":"Φόρμες","basicstyles":"Βασικά Στυλ","paragraph":"Παράγραφος","links":"Σύνδεσμοι","insert":"Εισαγωγή","styles":"Στυλ","colors":"Χρώματα","tools":"Εργαλεία"},"toolbars":"Εργαλειοθήκες επεξεργαστή"},"sourcearea":{"toolbar":"Κώδικας"},"notification":{"closed":"Notification closed."},"list":{"bulletedlist":"Εισαγωγή/Απομάκρυνση Λίστας Κουκκίδων","numberedlist":"Εισαγωγή/Απομάκρυνση Αριθμημένης Λίστας"},"justify":{"block":"Πλήρης Στοίχιση","center":"Στο Κέντρο","left":"Στοίχιση Αριστερά","right":"Στοίχιση Δεξιά"},"indent":{"indent":"Αύξηση Εσοχής","outdent":"Μείωση Εσοχής"},"font":{"fontSize":{"label":"Μέγεθος","voiceLabel":"Μέγεθος Γραμματοσειράς","panelTitle":"Μέγεθος Γραμματοσειράς"},"label":"Γραμματοσειρά","panelTitle":"Όνομα Γραμματοσειράς","voiceLabel":"Γραμματοσειρά"},"elementspath":{"eleLabel":"Διαδρομή Στοιχείων","eleTitle":"Στοιχείο %1"},"colordialog":{"clear":"Εκκαθάριση","highlight":"Σήμανση","options":"Επιλογές Χρωμάτων","selected":"Επιλεγμένο Χρώμα","title":"Επιλογή χρώματος"},"colorbutton":{"auto":"Αυτόματα","bgColorTitle":"Χρώμα Φόντου","colors":{"000":"Μαύρο","800000":"Καστανέρυθρο","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Βαθυκύανο","000080":"Μπλε μαρέν","4B0082":"Ινδικό","696969":"Σκούρο Γκρι","B22222":"Ανοικτό Κόκκινο","A52A2A":"Καφέ","DAA520":"Golden Rod","006400":"Σκούρο Πράσινο","40E0D0":"Τυρκουάζ","0000CD":"Medium Blue","800080":"Μοβ","808080":"Γκρι","F00":"Κόκκινο","FF8C00":"Σκούρο Πορτοκαλί","FFD700":"Χρυσαφί","008000":"Πράσινο","0FF":"Κυανό","00F":"Μπλε","EE82EE":"Μενεξεδί","A9A9A9":"Ποντικί","FFA07A":"Ανοικτό Σομόν","FFA500":"Πορτοκαλί","FFFF00":"Κίτρινο","00FF00":"Μοσχολέμονο","AFEEEE":"Pale Turquoise","ADD8E6":"Γαλάζιο","DDA0DD":"Δαμασκηνί","D3D3D3":"Ανοικτό Γκρι","FFF0F5":"Lavender Blush","FAEBD7":"Antique White","FFFFE0":"Ανοικτό Κίτρινο","F0FFF0":"Honeydew","F0FFFF":"Γαλανό","F0F8FF":"Alice Blue","E6E6FA":"Ελαφρός Ιώδες","FFF":"Λευκό","1ABC9C":"Έντονο Κυανό","2ECC71":"Σμαραγδί","3498DB":"Φωτεινό Μπλε","9B59B6":"Αμέθυστος","4E5F70":"Γκριζωπό Μπλε","F1C40F":"Ζωντανό Κίτρινο","16A085":"Σκοτεινό Κυανό","27AE60":"Σκοτεινό Σμαραγδί","2980B9":"Έντονο Μπλε","8E44AD":"Σκοτεινό Βιολετί","2C3E50":"Αποκορρεσμένο Μπλε","F39C12":"Πορτοκαλί","E67E22":"Καροτί","E74C3C":"Απαλό Κόκκινο","ECF0F1":"Φωτεινό Ασημί","95A5A6":"Φωτεινό Γκριζωπό Κυανό","DDD":"Φωτεινό Γκρι","D35400":"Κολοκυθί","C0392B":"Έντονο Κόκκινο","BDC3C7":"Αργυρό","7F8C8D":"Γκριζωπό Κυανό","999":"Σκοτεινό Γκρι"},"more":"Περισσότερα Χρώματα…","panelTitle":"Χρώματα","textColorTitle":"Χρώμα Κειμένου"},"clipboard":{"copy":"Αντιγραφή","copyError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).","cut":"Αποκοπή","cutError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).","paste":"Επικόλληση","pasteNotification":"Πατήστε %1 για επικόλληση. Ο φυλλομετρητής σας δεν υποστηρίζει επικόλληση με το κουμπί της γραμμής εργαλείων ή την επιλογή από το μενού δεξιού κλικ.","pasteArea":"Περιοχή ΕπικόLine truncated
CKEDITOR.lang['el']={"widget":{"move":"Κάνετε κλικ και σύρετε το ποντίκι για να μετακινήστε","label":"%1 widget"},"undo":{"redo":"Επανάληψη","undo":"Αναίρεση"},"toolbar":{"toolbarCollapse":"Σύμπτυξη Εργαλειοθήκης","toolbarExpand":"Ανάπτυξη Εργαλειοθήκης","toolbarGroups":{"document":"Έγγραφο","clipboard":"Πρόχειρο/Αναίρεση","editing":"Επεξεργασία","forms":"Φόρμες","basicstyles":"Βασικά Στυλ","paragraph":"Παράγραφος","links":"Σύνδεσμοι","insert":"Εισαγωγή","styles":"Στυλ","colors":"Χρώματα","tools":"Εργαλεία"},"toolbars":"Εργαλειοθήκες επεξεργαστή"},"sourcearea":{"toolbar":"Κώδικας"},"notification":{"closed":"Η ειδοποίηση έκλεισε."},"list":{"bulletedlist":"Εισαγωγή/Απομάκρυνση Λίστας Κουκκίδων","numberedlist":"Εισαγωγή/Απομάκρυνση Αριθμημένης Λίστας"},"justify":{"block":"Πλήρης Στοίχιση","center":"Στο Κέντρο","left":"Στοίχιση Αριστερά","right":"Στοίχιση Δεξιά"},"indent":{"indent":"Αύξηση Εσοχής","outdent":"Μείωση Εσοχής"},"font":{"fontSize":{"label":"Μέγεθος","voiceLabel":"Μέγεθος Γραμματοσειράς","panelTitle":"Μέγεθος Γραμματοσειράς"},"label":"Γραμματοσειρά","panelTitle":"Όνομα Γραμματοσειράς","voiceLabel":"Γραμματοσειρά"},"elementspath":{"eleLabel":"Διαδρομή Στοιχείων","eleTitle":"Στοιχείο %1"},"colordialog":{"clear":"Εκκαθάριση","highlight":"Σήμανση","options":"Επιλογές Χρωμάτων","selected":"Επιλεγμένο Χρώμα","title":"Επιλογή χρώματος"},"colorbutton":{"auto":"Αυτόματα","bgColorTitle":"Χρώμα Φόντου","colors":{"000":"Μαύρο","800000":"Καστανέρυθρο","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Βαθυκύανο","000080":"Μπλε μαρέν","4B0082":"Ινδικό","696969":"Σκούρο Γκρι","B22222":"Ανοικτό Κόκκινο","A52A2A":"Καφέ","DAA520":"Golden Rod","006400":"Σκούρο Πράσινο","40E0D0":"Τυρκουάζ","0000CD":"Medium Blue","800080":"Μοβ","808080":"Γκρι","F00":"Κόκκινο","FF8C00":"Σκούρο Πορτοκαλί","FFD700":"Χρυσαφί","008000":"Πράσινο","0FF":"Κυανό","00F":"Μπλε","EE82EE":"Μενεξεδί","A9A9A9":"Ποντικί","FFA07A":"Ανοικτό Σομόν","FFA500":"Πορτοκαλί","FFFF00":"Κίτρινο","00FF00":"Μοσχολέμονο","AFEEEE":"Pale Turquoise","ADD8E6":"Γαλάζιο","DDA0DD":"Δαμασκηνί","D3D3D3":"Ανοικτό Γκρι","FFF0F5":"Lavender Blush","FAEBD7":"Antique White","FFFFE0":"Ανοικτό Κίτρινο","F0FFF0":"Honeydew","F0FFFF":"Γαλανό","F0F8FF":"Alice Blue","E6E6FA":"Ελαφρός Ιώδες","FFF":"Λευκό","1ABC9C":"Έντονο Κυανό","2ECC71":"Σμαραγδί","3498DB":"Φωτεινό Μπλε","9B59B6":"Αμέθυστος","4E5F70":"Γκριζωπό Μπλε","F1C40F":"Ζωντανό Κίτρινο","16A085":"Σκοτεινό Κυανό","27AE60":"Σκοτεινό Σμαραγδί","2980B9":"Έντονο Μπλε","8E44AD":"Σκοτεινό Βιολετί","2C3E50":"Αποκορρεσμένο Μπλε","F39C12":"Πορτοκαλί","E67E22":"Καροτί","E74C3C":"Απαλό Κόκκινο","ECF0F1":"Φωτεινό Ασημί","95A5A6":"Φωτεινό Γκριζωπό Κυανό","DDD":"Φωτεινό Γκρι","D35400":"Κολοκυθί","C0392B":"Έντονο Κόκκινο","BDC3C7":"Αργυρό","7F8C8D":"Γκριζωπό Κυανό","999":"Σκοτεινό Γκρι"},"more":"Περισσότερα Χρώματα…","panelTitle":"Χρώματα","textColorTitle":"Χρώμα Κειμένου"},"clipboard":{"copy":"Αντιγραφή","copyError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).","cut":"Αποκοπή","cutError":"Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).","paste":"Επικόλληση","pasteNotification":"Πατήστε %1 για επικόλληση. Ο φυλλομετρητής σας δεν υποστηρίζει επικόλληση με το κουμπί της γραμμής εργαλείων ή την επιλογή από το μενού δεξιού κλικ.","pasteArea":"ΠερLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['gl']={"widget":{"move":"Prema e arrastre para mover","label":"Trebello %1"},"undo":{"redo":"Refacer","undo":"Desfacer"},"toolbar":{"toolbarCollapse":"Contraer a barra de ferramentas","toolbarExpand":"Expandir a barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeis/desfacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Paragrafo","links":"Ligazóns","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barras de ferramentas do editor"},"sourcearea":{"toolbar":"Orixe"},"notification":{"closed":"Notificación pechada."},"list":{"bulletedlist":"Inserir/retirar lista viñeteada","numberedlist":"Inserir/retirar lista numerada"},"justify":{"block":"Xustificado","center":"Centrado","left":"Aliñar á esquerda","right":"Aliñar á dereita"},"indent":{"indent":"Aumentar a sangría","outdent":"Reducir a sangría"},"font":{"fontSize":{"label":"Tamaño","voiceLabel":"Tamaño da letra","panelTitle":"Tamaño da letra"},"label":"Tipo de letra","panelTitle":"Nome do tipo de letra","voiceLabel":"Tipo de letra"},"elementspath":{"eleLabel":"Ruta dos elementos","eleTitle":"Elemento %1"},"colordialog":{"clear":"Limpar","highlight":"Resaltar","options":"Opcións de cor","selected":"Cor seleccionado","title":"Seleccione unha cor"},"colorbutton":{"auto":"Automático","bgColorTitle":"Cor do fondo","colors":{"000":"Negro","800000":"Marrón escuro","8B4513":"Ocre","2F4F4F":"Pizarra escuro","008080":"Verde azulado","000080":"Azul mariño","4B0082":"Índigo","696969":"Gris escuro","B22222":"Ladrillo","A52A2A":"Marrón","DAA520":"Dourado escuro","006400":"Verde escuro","40E0D0":"Turquesa","0000CD":"Azul medio","800080":"Púrpura","808080":"Gris","F00":"Vermello","FF8C00":"Laranxa escuro","FFD700":"Dourado","008000":"Verde","0FF":"Cian","00F":"Azul","EE82EE":"Violeta","A9A9A9":"Gris medio","FFA07A":"Salmón claro","FFA500":"Laranxa","FFFF00":"Amarelo","00FF00":"Lima","AFEEEE":"Turquesa pálido","ADD8E6":"Azul claro","DDA0DD":"Violeta pálido","D3D3D3":"Verde claro","FFF0F5":"Lavanda vermello","FAEBD7":"Branco antigo","FFFFE0":"Amarelo claro","F0FFF0":"Mel","F0FFFF":"Azul celeste","F0F8FF":"Azul pálido","E6E6FA":"Lavanda","FFF":"Branco","1ABC9C":"Cian forte","2ECC71":"Esmeralda","3498DB":"Azul brillante","9B59B6":"Amatista","4E5F70":"Azul agrisado","F1C40F":"Amarelo vívido","16A085":"Cian escuro","27AE60":"Esmeralda escuro","2980B9":"Azul forte","8E44AD":"Violeta escuro","2C3E50":"Azul desaturado","F39C12":"Laranxa","E67E22":"Cenoria","E74C3C":"Vermello pálido","ECF0F1":"Plata brillante","95A5A6":"Cian agrisado claro","DDD":"Gris claro","D35400":"Cabaza","C0392B":"Vermello forte","BDC3C7":"Plata","7F8C8D":"Cian agrisado","999":"Gris escuro"},"more":"Máis cores...","panelTitle":"Cores","textColorTitle":"Cor do texto"},"clipboard":{"copy":"Copiar","copyError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).","cut":"Cortar","cutError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Prema %1 para pegar. O seu navegador non admite pegar co botón da barra de ferramentas ou coa opción do menú contextual.","pasteArea":"Zona de pegado","pasteMsg":"Pegue o contido dentro da área de abaixo e prema Aceptar.","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (seleccionado)"},"basicstyles":{"bold":"Negra","italic":"Cursiva","strike":"Riscado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subliñado"},"application":"Rich Text Editor","editor":"Editor de texto mellorado","editorPanel":"Panel do editor de texto mellorado","common":{"editorHelp":"Prema ALT 0 para obter axuda","browseServer":"Examinar o servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar ao servidor","image":"Imaxe","form":"Formulario","checkbox":"Caixa de selección","radio":"Botón de opción","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo agochado","button":"Botón","select":"Campo de selección","imageButton":"Botón de imaxe","notSet":"<sen estabelecer>","id":"ID","name":"Nome","langDir":"Dirección de escritura do idioma","langDirLtr":"Esquerda a dereita (LTR)","langDirRtl":"Dereita a esquerda (RTL)","langCode":"Código do idioma","longDescr":"Descrición completa do URL","cssClass":"Clases da folla de estilos","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Pechar","preview":"Vista previa","resize":"Redimensionar","generalTab":"Xeral","advancedTab":"Avanzado","validateNumberFailed":"Este valor non é un número.","confirmNewPage":"Calquera caLine truncated
CKEDITOR.lang['gl']={"widget":{"move":"Prema e arrastre para mover","label":"Trebello %1"},"undo":{"redo":"Refacer","undo":"Desfacer"},"toolbar":{"toolbarCollapse":"Contraer a barra de ferramentas","toolbarExpand":"Expandir a barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeis/desfacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Paragrafo","links":"Ligazóns","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barras de ferramentas do editor"},"sourcearea":{"toolbar":"Orixe"},"notification":{"closed":"Notificación pechada."},"list":{"bulletedlist":"Inserir/retirar lista viñeteada","numberedlist":"Inserir/retirar lista numerada"},"justify":{"block":"Xustificado","center":"Centrado","left":"Aliñar á esquerda","right":"Aliñar á dereita"},"indent":{"indent":"Aumentar a sangría","outdent":"Reducir a sangría"},"font":{"fontSize":{"label":"Tamaño","voiceLabel":"Tamaño da letra","panelTitle":"Tamaño da letra"},"label":"Tipo de letra","panelTitle":"Nome do tipo de letra","voiceLabel":"Tipo de letra"},"elementspath":{"eleLabel":"Ruta dos elementos","eleTitle":"Elemento %1"},"colordialog":{"clear":"Limpar","highlight":"Resaltar","options":"Opcións de cor","selected":"Cor seleccionado","title":"Seleccione unha cor"},"colorbutton":{"auto":"Automático","bgColorTitle":"Cor do fondo","colors":{"000":"Negro","800000":"Marrón escuro","8B4513":"Ocre","2F4F4F":"Pizarra escuro","008080":"Verde azulado","000080":"Azul mariño","4B0082":"Índigo","696969":"Gris escuro","B22222":"Ladrillo","A52A2A":"Marrón","DAA520":"Dourado escuro","006400":"Verde escuro","40E0D0":"Turquesa","0000CD":"Azul medio","800080":"Púrpura","808080":"Gris","F00":"Vermello","FF8C00":"Laranxa escuro","FFD700":"Dourado","008000":"Verde","0FF":"Cian","00F":"Azul","EE82EE":"Violeta","A9A9A9":"Gris medio","FFA07A":"Salmón claro","FFA500":"Laranxa","FFFF00":"Amarelo","00FF00":"Lima","AFEEEE":"Turquesa pálido","ADD8E6":"Azul claro","DDA0DD":"Violeta pálido","D3D3D3":"Verde claro","FFF0F5":"Lavanda vermello","FAEBD7":"Branco antigo","FFFFE0":"Amarelo claro","F0FFF0":"Mel","F0FFFF":"Azul celeste","F0F8FF":"Azul pálido","E6E6FA":"Lavanda","FFF":"Branco","1ABC9C":"Cian forte","2ECC71":"Esmeralda","3498DB":"Azul brillante","9B59B6":"Amatista","4E5F70":"Azul agrisado","F1C40F":"Amarelo vívido","16A085":"Cian escuro","27AE60":"Esmeralda escuro","2980B9":"Azul forte","8E44AD":"Violeta escuro","2C3E50":"Azul desaturado","F39C12":"Laranxa","E67E22":"Cenoria","E74C3C":"Vermello pálido","ECF0F1":"Plata brillante","95A5A6":"Cian agrisado claro","DDD":"Gris claro","D35400":"Cabaza","C0392B":"Vermello forte","BDC3C7":"Plata","7F8C8D":"Cian agrisado","999":"Gris escuro"},"more":"Máis cores...","panelTitle":"Cores","textColorTitle":"Cor do texto"},"clipboard":{"copy":"Copiar","copyError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).","cut":"Cortar","cutError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Prema %1 para pegar. O seu navegador non admite pegar co botón da barra de ferramentas ou coa opción do menú contextual.","pasteArea":"Zona de pegado","pasteMsg":"Pegue o contido dentro da área de abaixo e prema Aceptar.","fileFormatNotSupportedNotification":"Os formatos de ficheiro ${formats} non son compatíbeis.","fileWithoutFormatNotSupportedNotification":"O formato de ficheiro non está admitido."},"button":{"selectedLabel":"%1 (seleccionado)"},"basicstyles":{"bold":"Negra","italic":"Cursiva","strike":"Riscado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subliñado"},"application":"Editor de texto mellorado","editor":"Editor de texto mellorado","editorPanel":"Panel do editor de texto mellorado","common":{"editorHelp":"Prema ALT 0 para obter axuda","browseServer":"Examinar o servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar ao servidor","image":"Imaxe","form":"Formulario","checkbox":"Caixa de selección","radio":"Botón de opción","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo agochado","button":"Botón","select":"Campo de selección","imageButton":"Botón de imaxe","notSet":"<sen estabelecer>","id":"ID","name":"Nome","langDir":"Dirección de escritura do idioma","langDirLtr":"Esquerda a dereita (LTR)","langDirRtl":"Dereita a esquerda (RTL)","langCode":"Código do idioma","longDescr":"Descrición completa do URL","cssClass":"Clases da folla de estilos","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Pechar","preview":"Vista previa","resize":"Redimensionar","generalTab":"Xeral","advancedTab":"Avanzado","validateNumberFailed":"Este valor non é un número.","conLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['it']={"widget":{"move":"Fare clic e trascinare per spostare","label":"Widget %1"},"undo":{"redo":"Ripristina","undo":"Annulla"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"sourcearea":{"toolbar":"Sorgente"},"notification":{"closed":"Notifica chiusa."},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"justify":{"block":"Giustifica","center":"Centra","left":"Allinea a sinistra","right":"Allinea a destra"},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"font":{"fontSize":{"label":"Dimensione","voiceLabel":"Dimensione Carattere","panelTitle":"Dimensione"},"label":"Carattere","panelTitle":"Carattere","voiceLabel":"Carattere"},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"colordialog":{"clear":"cancella","highlight":"Evidenzia","options":"Opzioni colore","selected":"Seleziona il colore","title":"Selezionare il colore"},"colorbutton":{"auto":"Automatico","bgColorTitle":"Colore sfondo","colors":{"000":"Nero","800000":"Marrone Castagna","8B4513":"Marrone Cuoio","2F4F4F":"Grigio Fumo di Londra","008080":"Acquamarina","000080":"Blu Oceano","4B0082":"Indigo","696969":"Grigio Scuro","B22222":"Giallo Fiamma","A52A2A":"Marrone","DAA520":"Giallo Mimosa","006400":"Verde Scuro","40E0D0":"Turchese","0000CD":"Blue Scuro","800080":"Viola","808080":"Grigio","F00":"Rosso","FF8C00":"Arancio Scuro","FFD700":"Oro","008000":"Verde","0FF":"Ciano","00F":"Blu","EE82EE":"Violetto","A9A9A9":"Grigio Scuro","FFA07A":"Salmone","FFA500":"Arancio","FFFF00":"Giallo","00FF00":"Lime","AFEEEE":"Turchese Chiaro","ADD8E6":"Blu Chiaro","DDA0DD":"Rosso Ciliegia","D3D3D3":"Grigio Chiaro","FFF0F5":"Lavanda Chiara","FAEBD7":"Bianco Antico","FFFFE0":"Giallo Chiaro","F0FFF0":"Verde Mela","F0FFFF":"Azzurro","F0F8FF":"Celeste","E6E6FA":"Lavanda","FFF":"Bianco","1ABC9C":"Ciano intenso","2ECC71":"Smeraldo","3498DB":"Blu luminoso","9B59B6":"Ametista","4E5F70":"Blu grigiastro","F1C40F":"Giallo vivido","16A085":"Ciano scuro","27AE60":"Smeraldo scuro","2980B9":"Blu intenso","8E44AD":"Viola scuro","2C3E50":"Blu desaturato","F39C12":"Arancio","E67E22":"Carota","E74C3C":"Rosso pallido","ECF0F1":"Argento luminoso","95A5A6":"Ciano grigiastro chiaro","DDD":"Grigio chiaro","D35400":"Zucca","C0392B":"Rosso intenso","BDC3C7":"Argento","7F8C8D":"Ciano grigiastro","999":"Grigio scuro"},"more":"Altri colori...","panelTitle":"Colori","textColorTitle":"Colore testo"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteNotification":"Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.","pasteArea":"Area dove incollare","pasteMsg":"Incollare il proprio contenuto all'interno dell'area sottostante e premere OK.","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (selezionato)"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"application":"Rich Text Editor","editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambiate.Line truncated
CKEDITOR.lang['it']={"widget":{"move":"Fare clic e trascinare per spostare","label":"Widget %1"},"undo":{"redo":"Ripristina","undo":"Annulla"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"sourcearea":{"toolbar":"Sorgente"},"notification":{"closed":"Notifica chiusa."},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"justify":{"block":"Giustifica","center":"Centra","left":"Allinea a sinistra","right":"Allinea a destra"},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"font":{"fontSize":{"label":"Dimensione","voiceLabel":"Dimensione Carattere","panelTitle":"Dimensione"},"label":"Carattere","panelTitle":"Carattere","voiceLabel":"Carattere"},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"colordialog":{"clear":"cancella","highlight":"Evidenzia","options":"Opzioni colore","selected":"Seleziona il colore","title":"Selezionare il colore"},"colorbutton":{"auto":"Automatico","bgColorTitle":"Colore sfondo","colors":{"000":"Nero","800000":"Marrone Castagna","8B4513":"Marrone Cuoio","2F4F4F":"Grigio Fumo di Londra","008080":"Acquamarina","000080":"Blu Oceano","4B0082":"Indigo","696969":"Grigio Scuro","B22222":"Giallo Fiamma","A52A2A":"Marrone","DAA520":"Giallo Mimosa","006400":"Verde Scuro","40E0D0":"Turchese","0000CD":"Blue Scuro","800080":"Viola","808080":"Grigio","F00":"Rosso","FF8C00":"Arancio Scuro","FFD700":"Oro","008000":"Verde","0FF":"Ciano","00F":"Blu","EE82EE":"Violetto","A9A9A9":"Grigio Scuro","FFA07A":"Salmone","FFA500":"Arancio","FFFF00":"Giallo","00FF00":"Lime","AFEEEE":"Turchese Chiaro","ADD8E6":"Blu Chiaro","DDA0DD":"Rosso Ciliegia","D3D3D3":"Grigio Chiaro","FFF0F5":"Lavanda Chiara","FAEBD7":"Bianco Antico","FFFFE0":"Giallo Chiaro","F0FFF0":"Verde Mela","F0FFFF":"Azzurro","F0F8FF":"Celeste","E6E6FA":"Lavanda","FFF":"Bianco","1ABC9C":"Ciano intenso","2ECC71":"Smeraldo","3498DB":"Blu luminoso","9B59B6":"Ametista","4E5F70":"Blu grigiastro","F1C40F":"Giallo vivido","16A085":"Ciano scuro","27AE60":"Smeraldo scuro","2980B9":"Blu intenso","8E44AD":"Viola scuro","2C3E50":"Blu desaturato","F39C12":"Arancio","E67E22":"Carota","E74C3C":"Rosso pallido","ECF0F1":"Argento luminoso","95A5A6":"Ciano grigiastro chiaro","DDD":"Grigio chiaro","D35400":"Zucca","C0392B":"Rosso intenso","BDC3C7":"Argento","7F8C8D":"Ciano grigiastro","999":"Grigio scuro"},"more":"Altri colori...","panelTitle":"Colori","textColorTitle":"Colore testo"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteNotification":"Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.","pasteArea":"Area dove incollare","pasteMsg":"Incollare il proprio contenuto all'interno dell'area sottostante e premere OK.","fileFormatNotSupportedNotification":"I file in formato ${formats} non sono supportati.","fileWithoutFormatNotSupportedNotification":"Il formato di file non è supportato."},"button":{"selectedLabel":"%1 (selezionato)"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"application":"Rich Text Editor","editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['pt']={"widget":{"move":"Clique e arraste para mover","label":"%1 widget"},"undo":{"redo":"Refazer","undo":"Anular"},"toolbar":{"toolbarCollapse":"Ocultar barra de ferramentas","toolbarExpand":"Expandir barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Área de transferência/Anular","editing":"Edição","forms":"Formulários","basicstyles":"Estilos básicos","paragraph":"Parágrafo","links":"Hiperligações","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Editor de barras de ferramentas"},"sourcearea":{"toolbar":"Fonte"},"notification":{"closed":"Notificação encerrada."},"list":{"bulletedlist":"Marcas","numberedlist":"Numeração"},"justify":{"block":"Justificado","center":"Alinhar ao centro","left":"Alinhar à esquerda","right":"Alinhar à direita"},"indent":{"indent":"Aumentar avanço","outdent":"Diminuir avanço"},"font":{"fontSize":{"label":"Tamanho","voiceLabel":"Tamanho da letra","panelTitle":"Tamanho da letra"},"label":"Fonte","panelTitle":"Nome do tipo de letra","voiceLabel":"Tipo de letra"},"elementspath":{"eleLabel":"Caminho dos elementos","eleTitle":"Elemento %1"},"colordialog":{"clear":"Limpar","highlight":"Realçar","options":"Opções de cor","selected":"Cor selecionada","title":"Selecionar cor"},"colorbutton":{"auto":"Automático","bgColorTitle":"Cor de fundo","colors":{"000":"Black","800000":"Castanho","8B4513":"Saddle Brown","2F4F4F":"Cinza lousa escuro","008080":"Teal","000080":"Azul naval","4B0082":"Indigo","696969":"Cinza escuro","B22222":"Vermelho tijolo","A52A2A":"Castanho","DAA520":"Dourado (daa520)","006400":"Verde escuro (006400)","40E0D0":"Turquesa","0000CD":"Azul médio (0000cd)","800080":"Purple","808080":"Cinza","F00":"Vermelho","FF8C00":"Laranja escuro","FFD700":"Dourado","008000":"Verde","0FF":"Ciano","00F":"Azul","EE82EE":"Violeta","A9A9A9":"Cinza fosco","FFA07A":"Salmão claro","FFA500":"Laranja","FFFF00":"Amarelo","00FF00":"Limão (Verde espectro)","AFEEEE":"Turquesa pálida (afeeee)","ADD8E6":"Light Blue","DDA0DD":"Ameixa","D3D3D3":"Cinza claro","FFF0F5":"Lavanda avermelhada","FAEBD7":"Branco velho","FFFFE0":"Amarelo claro","F0FFF0":"Maná (f0fff0)","F0FFFF":"Azul celeste","F0F8FF":"Azul Alice (f0f8ff)","E6E6FA":"Lavanda","FFF":"Branco","1ABC9C":"Ciano forte","2ECC71":"Esmeralda","3498DB":"Azul brilhante","9B59B6":"Amethyst","4E5F70":"Azul acinzentado","F1C40F":"Amarelo vívido","16A085":"Ciano escuro","27AE60":"Esmeralda escuro","2980B9":"Azul forte","8E44AD":"Violeta escuro","2C3E50":"Desaturated Blue","F39C12":"Laranja","E67E22":"Cenoura","E74C3C":"Vermelho claro","ECF0F1":"Prateado brilhante","95A5A6":"Ciano acinzentado claro","DDD":"Cinza claro","D35400":"Abóbora","C0392B":"Strong Red","BDC3C7":"Prateado","7F8C8D":"Ciano acinzentado","999":"Cinza escuro"},"more":"Mais cores...","panelTitle":"Cores","textColorTitle":"Cor do texto"},"clipboard":{"copy":"Copiar","copyError":"A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Área de colagem","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (Selecionado)"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Rasurado","subscript":"Superior à linha","superscript":"Superior à linha","underline":"Sublinhado"},"application":"Rich Text Editor","editor":"Editor de texto enriquecido","editorPanel":"Painel do editor de texto enriquecido","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Navegar no servidor","url":"URL","protocol":"Protocolo","upload":"Carregar","uploadSubmit":"Enviar para o servidor","image":"Imagem","form":"Formulário","checkbox":"Caixa de verificação","radio":"Botão","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo oculto","button":"Botão","select":"Campo de seleção","imageButton":"Botão da imagem","notSet":"<Não definido>","id":"ID","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para a Direita (EPD)","langDirRtl":"Direita para a Esquerda (DPE)","langCode":"Código do idioma","longDescr":"Descrição completa do URL","cssClass":"Classes de estilo das folhas","advisoryTitle":"Título consultivo","cssStyle":"Estilo","ok":"CONFIRMAR","cancel":"Cancelar","close":"Fechar","preview":"Pré-visualização","resize":"Redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor nLine truncated
CKEDITOR.lang['pt']={"widget":{"move":"Clique e arraste para mover","label":"%1 widget"},"undo":{"redo":"Refazer","undo":"Anular"},"toolbar":{"toolbarCollapse":"Ocultar barra de ferramentas","toolbarExpand":"Expandir barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Área de transferência/Anular","editing":"Edição","forms":"Formulários","basicstyles":"Estilos básicos","paragraph":"Parágrafo","links":"Hiperligações","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Editor de barras de ferramentas"},"sourcearea":{"toolbar":"Fonte"},"notification":{"closed":"Notificação encerrada."},"list":{"bulletedlist":"Marcas","numberedlist":"Numeração"},"justify":{"block":"Justificado","center":"Alinhar ao centro","left":"Alinhar à esquerda","right":"Alinhar à direita"},"indent":{"indent":"Aumentar avanço","outdent":"Diminuir avanço"},"font":{"fontSize":{"label":"Tamanho","voiceLabel":"Tamanho da letra","panelTitle":"Tamanho da letra"},"label":"Fonte","panelTitle":"Nome do tipo de letra","voiceLabel":"Tipo de letra"},"elementspath":{"eleLabel":"Caminho dos elementos","eleTitle":"Elemento %1"},"colordialog":{"clear":"Limpar","highlight":"Realçar","options":"Opções de cor","selected":"Cor selecionada","title":"Selecionar cor"},"colorbutton":{"auto":"Automático","bgColorTitle":"Cor de fundo","colors":{"000":"Black","800000":"Castanho","8B4513":"Saddle Brown","2F4F4F":"Cinza lousa escuro","008080":"Teal","000080":"Azul naval","4B0082":"Indigo","696969":"Cinza escuro","B22222":"Vermelho tijolo","A52A2A":"Castanho","DAA520":"Dourado (daa520)","006400":"Verde escuro (006400)","40E0D0":"Turquesa","0000CD":"Azul médio (0000cd)","800080":"Purple","808080":"Cinza","F00":"Vermelho","FF8C00":"Laranja escuro","FFD700":"Dourado","008000":"Verde","0FF":"Ciano","00F":"Azul","EE82EE":"Violeta","A9A9A9":"Cinza fosco","FFA07A":"Salmão claro","FFA500":"Laranja","FFFF00":"Amarelo","00FF00":"Limão (Verde espectro)","AFEEEE":"Turquesa pálida (afeeee)","ADD8E6":"Light Blue","DDA0DD":"Ameixa","D3D3D3":"Cinza claro","FFF0F5":"Lavanda avermelhada","FAEBD7":"Branco velho","FFFFE0":"Amarelo claro","F0FFF0":"Maná (f0fff0)","F0FFFF":"Azul celeste","F0F8FF":"Azul Alice (f0f8ff)","E6E6FA":"Lavanda","FFF":"Branco","1ABC9C":"Ciano forte","2ECC71":"Esmeralda","3498DB":"Azul brilhante","9B59B6":"Amethyst","4E5F70":"Azul acinzentado","F1C40F":"Amarelo vívido","16A085":"Ciano escuro","27AE60":"Esmeralda escuro","2980B9":"Azul forte","8E44AD":"Violeta escuro","2C3E50":"Desaturated Blue","F39C12":"Laranja","E67E22":"Cenoura","E74C3C":"Vermelho claro","ECF0F1":"Prateado brilhante","95A5A6":"Ciano acinzentado claro","DDD":"Cinza claro","D35400":"Abóbora","C0392B":"Strong Red","BDC3C7":"Prateado","7F8C8D":"Ciano acinzentado","999":"Cinza escuro"},"more":"Mais cores...","panelTitle":"Cores","textColorTitle":"Cor do texto"},"clipboard":{"copy":"Copiar","copyError":"A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Área de colagem","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (Selecionado)"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Rasurado","subscript":"Superior à linha","superscript":"Superior à linha","underline":"Sublinhado"},"application":"Rich Text Editor","editor":"Editor de texto enriquecido","editorPanel":"Painel do editor de texto enriquecido","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Navegar no servidor","url":"URL","protocol":"Protocolo","upload":"Carregar","uploadSubmit":"Enviar para o servidor","image":"Imagem","form":"Formulário","checkbox":"Caixa de verificação","radio":"Botão","textField":"Campo de texto","textarea":"Área de texto","hiddenField":"Campo oculto","button":"Botão","select":"Campo de seleção","imageButton":"Botão da imagem","notSet":"<Não definido>","id":"ID","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para a Direita (EPD)","langDirRtl":"Direita para a Esquerda (DPE)","langCode":"Código do idioma","longDescr":"Descrição completa do URL","cssClass":"Classes de estilo das folhas","advisoryTitle":"Título consultivo","cssStyle":"Estilo","ok":"CONFIRMAR","cancel":"Cancelar","close":"Fechar","preview":"Pré-visualização","resize":"Redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor nLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['zh-cn']={"widget":{"move":"点击并拖拽以移动","label":"%1 小部件"},"undo":{"redo":"重做","undo":"撤消"},"toolbar":{"toolbarCollapse":"折叠工具栏","toolbarExpand":"展开工具栏","toolbarGroups":{"document":"文档","clipboard":"剪贴板/撤销","editing":"编辑","forms":"表单","basicstyles":"基本格式","paragraph":"段落","links":"链接","insert":"插入","styles":"样式","colors":"颜色","tools":"工具"},"toolbars":"工具栏"},"sourcearea":{"toolbar":"源码"},"notification":{"closed":"通知已关闭"},"list":{"bulletedlist":"项目列表","numberedlist":"编号列表"},"justify":{"block":"两端对齐","center":"居中","left":"左对齐","right":"右对齐"},"indent":{"indent":"增加缩进量","outdent":"减少缩进量"},"font":{"fontSize":{"label":"大小","voiceLabel":"文字大小","panelTitle":"大小"},"label":"字体","panelTitle":"字体","voiceLabel":"字体"},"elementspath":{"eleLabel":"元素路径","eleTitle":"%1 元素"},"colordialog":{"clear":"清除","highlight":"高亮","options":"颜色选项","selected":"选择颜色","title":"选择颜色"},"colorbutton":{"auto":"自动","bgColorTitle":"背景颜色","colors":{"000":"黑色","800000":"栗色","8B4513":"鞍褐色","2F4F4F":"深岩灰色","008080":"凫绿色","000080":"海军蓝色","4B0082":"靛色","696969":"深灰色","B22222":"火砖红色","A52A2A":"褐色","DAA520":"金菊色","006400":"深绿色","40E0D0":"绿松石色","0000CD":"中蓝色","800080":"紫色","808080":"灰色","F00":"红色","FF8C00":"深橙色","FFD700":"金色","008000":"绿色","0FF":"青色","00F":"蓝色","EE82EE":"紫罗兰色","A9A9A9":"暗灰色","FFA07A":"浅鲑红色","FFA500":"橙色","FFFF00":"黄色","00FF00":"鲜绿色","AFEEEE":"灰绿松石色","ADD8E6":"浅蓝色","DDA0DD":"梅红色","D3D3D3":"浅灰色","FFF0F5":"薰衣草紫红色","FAEBD7":"古董白色","FFFFE0":"浅黄色","F0FFF0":"蜜瓜绿色","F0FFFF":"浅蓝色","F0F8FF":"爱丽丝蓝色","E6E6FA":"薰衣草紫色","FFF":"白色","1ABC9C":"浓青色","2ECC71":"碧绿色","3498DB":"亮蓝色","9B59B6":"紫水晶色","4E5F70":"灰蓝色","F1C40F":"鲜黄色","16A085":"深青色","27AE60":"深碧绿色","2980B9":"浓蓝色","8E44AD":"深紫罗兰色","2C3E50":"不饱和蓝色","F39C12":"橙色","E67E22":"红萝卜红色","E74C3C":"灰红色","ECF0F1":"亮银色","95A5A6":"浅灰青色","DDD":"浅灰色","D35400":"南瓜黄色","C0392B":"浓红色","BDC3C7":"银色","7F8C8D":"灰青色","999":"深灰色"},"more":"其它颜色...","panelTitle":"颜色","textColorTitle":"文本颜色"},"clipboard":{"copy":"复制","copyError":"您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。","cut":"剪切","cutError":"您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。","paste":"粘贴","pasteNotification":"您的浏览器不支持通过工具栏或右键菜单进行粘贴,请按 %1 进行粘贴。","pasteArea":"粘贴区域","pasteMsg":"将您的内容粘贴到下方区域,然后按确定。","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"已选中 %1 项"},"basicstyles":{"bold":"加粗","italic":"倾斜","strike":"删除线","subscript":"下标","superscript":"上标","underline":"下划线"},"application":"Rich Text Editor","editor":"所见即所得编辑器","editorPanel":"所见即所得编辑器面板","common":{"editorHelp":"按 ALT+0 获得帮助","browseServer":"浏览服务器","url":"URL","protocol":"协议","upload":"上传","uploadSubmit":"上传到服务器","image":"图像","form":"表单","checkbox":"复选框","radio":"单选按钮","textField":"单行文本","textarea":"多行文本","hiddenField":"隐藏域","button":"按钮","select":"列表/菜单","imageButton":"图像按钮","notSet":"<没有设置>","id":"ID","name":"名称","langDir":"语言方向","langDirLtr":"从左到右 (LTR)","langDirRtl":"从右到左 (RTL)","langCode":"语言代码","longDescr":"详细说明 URL","cssClass":"样式类名称","advisoryTitle":"标题","cssStyle":"行内样式","ok":"确定","cancel":"取消","close":"关闭","preview":"预览","resize":"拖拽以改变大小","generalTab":"常规","advancedTab":"高级","validateNumberFailed":"需要输入数字格式","confirmNewPage":"当前文档内容未保存,是否确认新建文档?","confirmCancel":"部分修改尚未保存,是否确认关闭对话框?","options":"选项","target":"目标窗口","targetNew":"新窗口 (_blank)","targetTop":"整页 (_top)","targetSelf":"本窗口 (_self)","targetParent":"父窗口 (_parent)","langDirLTR":"从左到右 (LTR)","langDirRTL":"从右到左 (RTL)","styles":"样式","cssClasses":"样式类","width":"宽度","height":"高度","align":"对齐方式","left":"左对齐Line truncated
CKEDITOR.lang['zh-cn']={"widget":{"move":"点击并拖拽以移动","label":"%1 小部件"},"undo":{"redo":"重做","undo":"撤消"},"toolbar":{"toolbarCollapse":"折叠工具栏","toolbarExpand":"展开工具栏","toolbarGroups":{"document":"文档","clipboard":"剪贴板/撤销","editing":"编辑","forms":"表单","basicstyles":"基本格式","paragraph":"段落","links":"链接","insert":"插入","styles":"样式","colors":"颜色","tools":"工具"},"toolbars":"工具栏"},"sourcearea":{"toolbar":"源码"},"notification":{"closed":"通知已关闭"},"list":{"bulletedlist":"项目列表","numberedlist":"编号列表"},"justify":{"block":"两端对齐","center":"居中","left":"左对齐","right":"右对齐"},"indent":{"indent":"增加缩进量","outdent":"减少缩进量"},"font":{"fontSize":{"label":"大小","voiceLabel":"文字大小","panelTitle":"大小"},"label":"字体","panelTitle":"字体","voiceLabel":"字体"},"elementspath":{"eleLabel":"元素路径","eleTitle":"%1 元素"},"colordialog":{"clear":"清除","highlight":"高亮","options":"颜色选项","selected":"选择颜色","title":"选择颜色"},"colorbutton":{"auto":"自动","bgColorTitle":"背景颜色","colors":{"000":"黑色","800000":"栗色","8B4513":"鞍褐色","2F4F4F":"深岩灰色","008080":"凫绿色","000080":"海军蓝色","4B0082":"靛色","696969":"深灰色","B22222":"火砖红色","A52A2A":"褐色","DAA520":"金菊色","006400":"深绿色","40E0D0":"绿松石色","0000CD":"中蓝色","800080":"紫色","808080":"灰色","F00":"红色","FF8C00":"深橙色","FFD700":"金色","008000":"绿色","0FF":"青色","00F":"蓝色","EE82EE":"紫罗兰色","A9A9A9":"暗灰色","FFA07A":"浅鲑红色","FFA500":"橙色","FFFF00":"黄色","00FF00":"鲜绿色","AFEEEE":"灰绿松石色","ADD8E6":"浅蓝色","DDA0DD":"梅红色","D3D3D3":"浅灰色","FFF0F5":"薰衣草紫红色","FAEBD7":"古董白色","FFFFE0":"浅黄色","F0FFF0":"蜜瓜绿色","F0FFFF":"浅蓝色","F0F8FF":"爱丽丝蓝色","E6E6FA":"薰衣草紫色","FFF":"白色","1ABC9C":"浓青色","2ECC71":"碧绿色","3498DB":"亮蓝色","9B59B6":"紫水晶色","4E5F70":"灰蓝色","F1C40F":"鲜黄色","16A085":"深青色","27AE60":"深碧绿色","2980B9":"浓蓝色","8E44AD":"深紫罗兰色","2C3E50":"不饱和蓝色","F39C12":"橙色","E67E22":"红萝卜红色","E74C3C":"灰红色","ECF0F1":"亮银色","95A5A6":"浅灰青色","DDD":"浅灰色","D35400":"南瓜黄色","C0392B":"浓红色","BDC3C7":"银色","7F8C8D":"灰青色","999":"深灰色"},"more":"其它颜色...","panelTitle":"颜色","textColorTitle":"文本颜色"},"clipboard":{"copy":"复制","copyError":"您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。","cut":"剪切","cutError":"您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。","paste":"粘贴","pasteNotification":"您的浏览器不支持通过工具栏或右键菜单进行粘贴,请按 %1 进行粘贴。","pasteArea":"粘贴区域","pasteMsg":"将您的内容粘贴到下方区域,然后按确定。","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"已选中 %1 项"},"basicstyles":{"bold":"加粗","italic":"倾斜","strike":"删除线","subscript":"下标","superscript":"上标","underline":"下划线"},"application":"富文本编辑器","editor":"编辑器","editorPanel":"所见即所得编辑器面板","common":{"editorHelp":"按 ALT+0 获得帮助","browseServer":"浏览服务器","url":"URL","protocol":"协议","upload":"上传","uploadSubmit":"上传到服务器","image":"图像","form":"表单","checkbox":"复选框","radio":"单选按钮","textField":"单行文本","textarea":"多行文本","hiddenField":"隐藏域","button":"按钮","select":"列表/菜单","imageButton":"图像按钮","notSet":"<没有设置>","id":"ID","name":"名称","langDir":"语言方向","langDirLtr":"从左到右 (LTR)","langDirRtl":"从右到左 (RTL)","langCode":"语言代码","longDescr":"详细说明 URL","cssClass":"样式类名称","advisoryTitle":"标题","cssStyle":"行内样式","ok":"确定","cancel":"取消","close":"关闭","preview":"预览","resize":"拖拽以改变大小","generalTab":"常规","advancedTab":"高级","validateNumberFailed":"需要输入数字格式","confirmNewPage":"当前文档内容未保存,是否确认新建文档?","confirmCancel":"部分修改尚未保存,是否确认关闭对话框?","options":"选项","target":"目标窗口","targetNew":"新窗口 (_blank)","targetTop":"整页 (_top)","targetSelf":"本窗口 (_self)","targetParent":"父窗口 (_parent)","langDirLTR":"从左到右 (LTR)","langDirRTL":"从右到左 (RTL)","styles":"样式","cssClasses":"样式类","width":"宽度","height":"高度","align":"对齐方式","left":"左对齐","right":"Line truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.lang['zh']={"widget":{"move":"拖曳以移動","label":"%1 小工具"},"undo":{"redo":"取消復原","undo":"復原"},"toolbar":{"toolbarCollapse":"摺疊工具列","toolbarExpand":"展開工具列","toolbarGroups":{"document":"文件","clipboard":"剪貼簿/復原","editing":"編輯選項","forms":"格式","basicstyles":"基本樣式","paragraph":"段落","links":"連結","insert":"插入","styles":"樣式","colors":"顏色","tools":"工具"},"toolbars":"編輯器工具列"},"sourcearea":{"toolbar":"原始碼"},"notification":{"closed":"通知已關閉。"},"list":{"bulletedlist":"插入/移除項目符號清單","numberedlist":"插入/移除編號清單清單"},"justify":{"block":"左右對齊","center":"置中","left":"靠左對齊","right":"靠右對齊"},"indent":{"indent":"增加縮排","outdent":"減少縮排"},"font":{"fontSize":{"label":"大小","voiceLabel":"字型大小","panelTitle":"字型大小"},"label":"字型","panelTitle":"字型名稱","voiceLabel":"字型"},"elementspath":{"eleLabel":"元件路徑","eleTitle":"%1 個元件"},"colordialog":{"clear":"清除","highlight":"高亮","options":"色彩選項","selected":"選取的色彩","title":"選取色彩"},"colorbutton":{"auto":"自動","bgColorTitle":"背景顏色","colors":{"000":"黑色","800000":"栗色","8B4513":"鞍褐色","2F4F4F":"暗瓦灰色","008080":"水壓色","000080":"丈青澀","4B0082":"靛青","696969":"深灰色","B22222":"磚紅色","A52A2A":"褐色","DAA520":"金黃色","006400":"深綠色","40E0D0":"青綠色","0000CD":"藍色","800080":"紫色","808080":"灰色","F00":"紅色","FF8C00":"深橘色","FFD700":"金色","008000":"綠色","0FF":"青色","00F":"藍色","EE82EE":"紫色","A9A9A9":"暗灰色","FFA07A":"亮鮭紅","FFA500":"橘色","FFFF00":"黃色","00FF00":"鮮綠色","AFEEEE":"綠松色","ADD8E6":"淺藍色","DDA0DD":"枚紅色","D3D3D3":"淺灰色","FFF0F5":"淺紫色","FAEBD7":"骨董白","FFFFE0":"淺黃色","F0FFF0":"蜜瓜綠","F0FFFF":"天藍色","F0F8FF":"愛麗斯蘭","E6E6FA":"淺紫色","FFF":"白色","1ABC9C":"深青色","2ECC71":"翠綠色","3498DB":"亮藍色","9B59B6":"紫色","4E5F70":"藍灰色","F1C40F":"鮮黃色","16A085":"暗青色","27AE60":"暗綠色","2980B9":"深藍色","8E44AD":"暗紫色","2C3E50":"不飽和藍色","F39C12":"橘色","E67E22":"胡蘿蔔色","E74C3C":"淡紅色","ECF0F1":"亮銀色","95A5A6":"淺灰青色","DDD":"淺灰色","D35400":"南瓜色","C0392B":"深紅色","BDC3C7":"銀色","7F8C8D":"灰青色","999":"深灰色"},"more":"更多顏色","panelTitle":"顏色","textColorTitle":"文字顏色"},"clipboard":{"copy":"複製","copyError":"瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。","cut":"剪下","cutError":"瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。","paste":"貼上","pasteNotification":"請按下「%1」貼上。您的瀏覽器不支援工具列按鈕或是內容功能表選項。","pasteArea":"貼上區","pasteMsg":"請將您的內容貼於下方區域中並按下「OK」。","fileFormatNotSupportedNotification":"The ${formats} file format(s) are not supported.","fileWithoutFormatNotSupportedNotification":"The file format is not supported."},"button":{"selectedLabel":"%1 (已選取)"},"basicstyles":{"bold":"粗體","italic":"斜體","strike":"刪除線","subscript":"下標","superscript":"上標","underline":"底線"},"application":"Rich Text Editor","editor":"RTF 編輯器","editorPanel":"RTF 編輯器面板","common":{"editorHelp":"按下 ALT 0 取得說明。","browseServer":"瀏覽伺服器","url":"URL","protocol":"通訊協定","upload":"上傳","uploadSubmit":"傳送至伺服器","image":"圖像","form":"表格","checkbox":"核取方塊","radio":"選項按鈕","textField":"文字欄位","textarea":"文字區域","hiddenField":"隱藏欄位","button":"按鈕","select":"選取欄位","imageButton":"影像按鈕","notSet":"<未設定>","id":"ID","name":"名稱","langDir":"語言方向","langDirLtr":"由左至右 (LTR)","langDirRtl":"由右至左 (RTL)","langCode":"語言代碼","longDescr":"完整描述 URL","cssClass":"樣式表類別","advisoryTitle":"標題","cssStyle":"樣式","ok":"確定","cancel":"取消","close":"關閉","preview":"預覽","resize":"調整大小","generalTab":"一般","advancedTab":"進階","validateNumberFailed":"此值不是數值。","confirmNewPage":"現存的修改尚未儲存,要開新檔案?","confirmCancel":"部份選項尚未儲存,要關閉對話框?","options":"選項","target":"目標","targetNew":"開新視窗 (_blank)","targetTop":"最上層視窗 (_top)","targetSelf":"相同視窗 (_self)","targetParent":"父視窗 (_parent)","langDirLTR":"由左至右 (LTR)","langDirRTL":"由右至左 (RTL)","styles":"樣式","cssClasses":"樣式表類別","width":"寬度","height":"高度","align":"對齊方式","left":"靠左對齊","right":"靠右對齊","center":"Line truncated
CKEDITOR.lang['zh']={"widget":{"move":"拖曳以移動","label":"%1 小工具"},"undo":{"redo":"取消復原","undo":"復原"},"toolbar":{"toolbarCollapse":"摺疊工具列","toolbarExpand":"展開工具列","toolbarGroups":{"document":"文件","clipboard":"剪貼簿/復原","editing":"編輯選項","forms":"格式","basicstyles":"基本樣式","paragraph":"段落","links":"連結","insert":"插入","styles":"樣式","colors":"顏色","tools":"工具"},"toolbars":"編輯器工具列"},"sourcearea":{"toolbar":"原始碼"},"notification":{"closed":"通知已關閉。"},"list":{"bulletedlist":"插入/移除項目符號清單","numberedlist":"插入/移除編號清單清單"},"justify":{"block":"左右對齊","center":"置中","left":"靠左對齊","right":"靠右對齊"},"indent":{"indent":"增加縮排","outdent":"減少縮排"},"font":{"fontSize":{"label":"大小","voiceLabel":"字型大小","panelTitle":"字型大小"},"label":"字型","panelTitle":"字型名稱","voiceLabel":"字型"},"elementspath":{"eleLabel":"元件路徑","eleTitle":"%1 個元件"},"colordialog":{"clear":"清除","highlight":"高亮","options":"色彩選項","selected":"選取的色彩","title":"選取色彩"},"colorbutton":{"auto":"自動","bgColorTitle":"背景顏色","colors":{"000":"黑色","800000":"栗色","8B4513":"鞍褐色","2F4F4F":"暗瓦灰色","008080":"水壓色","000080":"丈青澀","4B0082":"靛青","696969":"深灰色","B22222":"磚紅色","A52A2A":"褐色","DAA520":"金黃色","006400":"深綠色","40E0D0":"青綠色","0000CD":"藍色","800080":"紫色","808080":"灰色","F00":"紅色","FF8C00":"深橘色","FFD700":"金色","008000":"綠色","0FF":"青色","00F":"藍色","EE82EE":"紫色","A9A9A9":"暗灰色","FFA07A":"亮鮭紅","FFA500":"橘色","FFFF00":"黃色","00FF00":"鮮綠色","AFEEEE":"綠松色","ADD8E6":"淺藍色","DDA0DD":"枚紅色","D3D3D3":"淺灰色","FFF0F5":"淺紫色","FAEBD7":"骨董白","FFFFE0":"淺黃色","F0FFF0":"蜜瓜綠","F0FFFF":"天藍色","F0F8FF":"愛麗斯蘭","E6E6FA":"淺紫色","FFF":"白色","1ABC9C":"深青色","2ECC71":"翠綠色","3498DB":"亮藍色","9B59B6":"紫色","4E5F70":"藍灰色","F1C40F":"鮮黃色","16A085":"暗青色","27AE60":"暗綠色","2980B9":"深藍色","8E44AD":"暗紫色","2C3E50":"不飽和藍色","F39C12":"橘色","E67E22":"胡蘿蔔色","E74C3C":"淡紅色","ECF0F1":"亮銀色","95A5A6":"淺灰青色","DDD":"淺灰色","D35400":"南瓜色","C0392B":"深紅色","BDC3C7":"銀色","7F8C8D":"灰青色","999":"深灰色"},"more":"更多顏色","panelTitle":"顏色","textColorTitle":"文字顏色"},"clipboard":{"copy":"複製","copyError":"瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。","cut":"剪下","cutError":"瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。","paste":"貼上","pasteNotification":"請按下「%1」貼上。您的瀏覽器不支援工具列按鈕或是內容功能表選項。","pasteArea":"貼上區","pasteMsg":"請將您的內容貼於下方區域中並按下「OK」。","fileFormatNotSupportedNotification":"不支援 ${formats} 檔案格式。","fileWithoutFormatNotSupportedNotification":"檔案格式不支援。"},"button":{"selectedLabel":"%1 (已選取)"},"basicstyles":{"bold":"粗體","italic":"斜體","strike":"刪除線","subscript":"下標","superscript":"上標","underline":"底線"},"application":"格式化文字編輯器","editor":"編輯器","editorPanel":"RTF 編輯器面板","common":{"editorHelp":"按下 ALT 0 取得說明。","browseServer":"瀏覽伺服器","url":"URL","protocol":"通訊協定","upload":"上傳","uploadSubmit":"傳送至伺服器","image":"圖像","form":"表格","checkbox":"核取方塊","radio":"選項按鈕","textField":"文字欄位","textarea":"文字區域","hiddenField":"隱藏欄位","button":"按鈕","select":"選取欄位","imageButton":"影像按鈕","notSet":"<未設定>","id":"ID","name":"名稱","langDir":"語言方向","langDirLtr":"由左至右 (LTR)","langDirRtl":"由右至左 (RTL)","langCode":"語言代碼","longDescr":"完整描述 URL","cssClass":"樣式表類別","advisoryTitle":"標題","cssStyle":"樣式","ok":"確定","cancel":"取消","close":"關閉","preview":"預覽","resize":"調整大小","generalTab":"一般","advancedTab":"進階","validateNumberFailed":"此值不是數值。","confirmNewPage":"現存的修改尚未儲存,要開新檔案?","confirmCancel":"部份選項尚未儲存,要關閉對話框?","options":"選項","target":"目標","targetNew":"開新視窗 (_blank)","targetTop":"最上層視窗 (_top)","targetSelf":"相同視窗 (_self)","targetParent":"父視窗 (_parent)","langDirLTR":"由左至右 (LTR)","langDirRTL":"由右至左 (RTL)","styles":"樣式","cssClasses":"樣式表類別","width":"寬度","height":"高度","align":"對齊方式","left":"靠左對齊","right":"靠右對齊","center":"置中對齊","justLine truncated
@@ -6,7 +6,8 @@ c.getSelection().selectRanges([b]);this.mentionLengthAtLastResult=this.callsWith
this)}};this.positionResults=function(a){a={trigger:$(this.currentMention.$),target:this.results,center:!0,above:!1,stemOffset:{left:25,top:0}};a=ips.utils.position.positionElem(a);ips.utils.position.getElemPosition($(this.currentMention.$));this.results.css({left:a.left+"px",top:a.top+"px",position:a.fixed?"fixed":"absolute"});var c=[];$.each("topLeft topRight topCenter bottomLeft bottomRight bottomCenter".split(" "),function(a,b){c[a]="ipsMenu_"+b});this.results.removeClass(c.join(" "));var b;b=
""+a.location.vertical;b+=a.location.horizontal.charAt(0).toUpperCase();b+=a.location.horizontal.slice(1);this.results.addClass("ipsMenu_"+b)};this.listenForDestructEvent=function(a){this.cancelMention();this.closeResults()};this.listenWithinMentionEvent=function(a){if(27==a.data.keyCode)this.cancelMention(),this.closeResults();else if(40==a.data.keyCode||38==a.data.keyCode){var d=this.results.children("[data-selected]");d.length?(d.removeAttr("data-selected"),40==a.data.keyCode?d.next().attr("data-selected",
!0):d.prev().attr("data-selected",!0)):40==a.data.keyCode?this.results.children(":first-child").attr("data-selected",!0):this.results.children(":last-child").attr("data-selected",!0);a.cancel()}else 13==a.data.keyCode||9==a.data.keyCode?(d=this.results.children("[data-selected]"),d.length?(d.click(),a.cancel()):13==a.data.keyCode&&(this.cancelMention(),this.closeResults())):(8==a.data.keyCode&&(this.callsWithNoResults=0),CKEDITOR.tools.setTimeout(function(){if(null!=this.currentMention&&this.currentMention.getText().length){for(var a=
c.getSelection().getRanges(),d=0;d<a.length;d++)if(!a[d].getCommonAncestor(!0,!0).equals(this.currentMention)){this.cancelMention();this.closeResults();return}var e=this.currentMention.getText().substr(1).trim();this.results.show();this.positionResults();if(this.ajaxObj&&_.isFunction(this.ajaxObj.abort))try{this.ajaxObj.abort()}catch(g){}this.ajaxObj=ips.getAjax()(c.config.controller+"\x26do\x3dmention\x26input\x3d"+encodeURIComponent(e),{context:this}).done(function(a){a?(this.mentionLengthAtLastResult=
e.length,this.results.removeClass("ipsLoading"),this.results.html(a),this.results.children().click($.proxy(this.selectMentionResult,this))):e.length&&(this.callsWithNoResults++,3<=this.callsWithNoResults?(this.cancelMention(),this.closeResults()):this.mentionLengthAtLastResult<=e.length-5&&this.results.hide())})}else this.closeResults()},50,this))};this.selectMentionResult=function(a){a=$(a.currentTarget);this.currentMention.renameNode("a");this.currentMention.setAttribute("href",a.attr("data-mentionhref"));
this.currentMention.setAttribute("contenteditable","false");this.currentMention.setAttribute("data-ipsHover","");this.currentMention.setAttribute("data-ipsHover-target",a.attr("data-mentionhover"));this.currentMention.setAttribute("data-mentionid",a.attr("data-mentionid"));this.currentMention.setHtml("@"+a.find('[data-role\x3d"mentionname"]').html());c.focus();a=c.createRange();a.moveToElementEditEnd(this.currentMention);c.getSelection().selectRanges([a]);this.closeResults()};this.cancelMention=function(){this.currentMention&&
this.currentMention.remove(!0)};this.closeResults=function(){$(c.element.$).closest("[data-ipsEditor]").trigger("ips.editorMenuClosed",{type:"mention"});this.currentMention=null;this.results&&this.results.remove();this.listenWithinMention&&!_.isUndefined(this.listenWithinMention)&&c.removeListener("key",this.listenWithinMentionEvent);this.listenForAtSymbolEvent=c.on("change",this.listenForAtSymbol,this)};this.listenForAtSymbolEvent=c.on("change",this.listenForAtSymbol,this)};
c.getSelection().getRanges(),d=0;d<a.length;d++)if(!a[d].getCommonAncestor(!0,!0).equals(this.currentMention)){this.cancelMention();this.closeResults();return}var e=this.currentMention.getText().substr(1).trim();this.results.show();this.positionResults();if(this.ajaxObj&&_.isFunction(this.ajaxObj.abort))try{this.ajaxObj.abort()}catch(h){}var a=c.config.controller+"\x26do\x3dmention\x26input\x3d"+encodeURIComponent(e),d=$(c.element.$).closest("[data-ipsEditor]").attr("data-ipsEditor-contentClass"),
g=$(c.element.$).closest("[data-ipsEditor]").attr("data-ipsEditor-contentId");_.isUndefined(d)||_.isUndefined(g)||(a=a+"\x26contentClass\x3d"+encodeURIComponent(d)+"\x26contentId\x3d"+g);this.ajaxObj=ips.getAjax()(a,{context:this}).done(function(a){a?(this.mentionLengthAtLastResult=e.length,this.results.removeClass("ipsLoading"),this.results.html(a),this.results.children().click($.proxy(this.selectMentionResult,this))):e.length&&(this.callsWithNoResults++,3<=this.callsWithNoResults?(this.cancelMention(),
this.closeResults()):this.mentionLengthAtLastResult<=e.length-5&&this.results.hide())})}else this.closeResults()},50,this))};this.selectMentionResult=function(a){a=$(a.currentTarget);this.currentMention.renameNode("a");this.currentMention.setAttribute("href",a.attr("data-mentionhref"));this.currentMention.setAttribute("contenteditable","false");this.currentMention.setAttribute("data-ipsHover","");this.currentMention.setAttribute("data-ipsHover-target",a.attr("data-mentionhover"));this.currentMention.setAttribute("data-mentionid",
a.attr("data-mentionid"));this.currentMention.setHtml("@"+a.find('[data-role\x3d"mentionname"]').html());c.focus();a=c.createRange();a.moveToElementEditEnd(this.currentMention);c.getSelection().selectRanges([a]);this.closeResults()};this.cancelMention=function(){this.currentMention&&this.currentMention.remove(!0)};this.closeResults=function(){$(c.element.$).closest("[data-ipsEditor]").trigger("ips.editorMenuClosed",{type:"mention"});this.currentMention=null;this.results&&this.results.remove();this.listenWithinMention&&
!_.isUndefined(this.listenWithinMention)&&c.removeListener("key",this.listenWithinMentionEvent);this.listenForAtSymbolEvent=c.on("change",this.listenForAtSymbol,this)};this.listenForAtSymbolEvent=c.on("change",this.listenForAtSymbol,this)};
@@ -2,4 +2,4 @@
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal;background:#f7f7f7}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{opacity:0;padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_block:focus{outline:unset}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;paddingLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
@@ -2,4 +2,4 @@
Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;fontLine truncated
Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

@@ -93,6 +93,7 @@ try
\IPS\Db::i()->update( 'core_attachments', "attach_hits=attach_hits+1", array( 'attach_id=?', $attachment['attach_id'] ) );
/* If it's an AWS file just redirect to it */
$file->originalFilename = $attachment['attach_file'];
if ( $signedUrl = $file->generateTemporaryDownloadUrl() )
{
\IPS\Output::i()->redirect( $signedUrl );
+14
View File
@@ -26,6 +26,20 @@ if ( !isset( $_SERVER['argv'] ) )
/* Init Invision Community */
\define('READ_WRITE_SEPARATION', FALSE);
\define('REPORT_EXCEPTIONS', TRUE);
$path = str_replace( 'interface/task/task.php', 'data/requirements.json', str_replace( '\\', '/', __FILE__ ) );
/* Check the used PHP version and compare it with the requirements */
$phpVersion = PHP_VERSION;
$requirements = json_decode( file_get_contents( $path ), TRUE );
if( version_compare($phpVersion, $requirements['php']['required'] ) < 0 )
{
@ini_set('display_errors', 1);
trigger_error('The task was called with PHP version ' . $phpVersion . " while PHP " . $requirements['php']['required'] . " is required.", E_USER_ERROR );
exit;
}
require_once str_replace( 'applications/core/interface/task/task.php', 'init.php', str_replace( '\\', '/', __FILE__ ) );
if ( !\IPS\CIC and $_SERVER['argv'][1] !== \IPS\Settings::i()->task_cron_key )
@@ -235,6 +235,8 @@ class _badges extends \IPS\Node\Controller
}
catch( \Exception $e ) { }
}
\IPS\Session::i()->log( 'acplogs__exported_badges' );
\IPS\Output::i()->sendOutput( $xml->asXML(), 200, 'application/xml', array( 'Content-Disposition' => \IPS\Output::getContentDisposition( 'attachment', "Achievement_Badges.xml" ) ) );
}
@@ -261,6 +263,8 @@ class _badges extends \IPS\Node\Controller
{
\IPS\Output::i()->error( $e->getMessage(), '2C422/1', 403, '' );
}
\IPS\Session::i()->log( 'acplogs__imported_badges' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=achievements&controller=badges' ), 'completed' );
}
@@ -159,6 +159,8 @@ class _ranks extends \IPS\Node\Controller
\IPS\Output::i()->error( $e->getMessage(), '2C423/1', 403, '' );
}
\IPS\Session::i()->log( 'acplogs__imported_ranks' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=achievements&controller=ranks' ), 'completed' );
}
@@ -199,6 +201,8 @@ class _ranks extends \IPS\Node\Controller
$xml->addChild( 'rank', $forXml );
}
\IPS\Session::i()->log( 'acplogs__exported_ranks' );
\IPS\Output::i()->sendOutput( $xml->asXML(), 200, 'application/xml', array( 'Content-Disposition' => \IPS\Output::getContentDisposition( 'attachment', "Achievement_Ranks.xml" ) ) );
}
@@ -141,6 +141,15 @@ class _rules extends \IPS\Node\Controller
$rule = \IPS\core\Achievements\Rule::load( \IPS\Request::i()->id );
$rule->enabled = (int) \IPS\Request::i()->enable;
$rule->save();
if ( \IPS\Request::i()->enable )
{
\IPS\Session::i()->log( 'acplogs__rule_enabled', array( $rule->id => FALSE ) );
}
else
{
\IPS\Session::i()->log( 'acplogs__rule_disabled', array( $rule->id => FALSE ) );
}
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=achievements&controller=rules' ), 'updated' );
}
@@ -230,6 +239,8 @@ class _rules extends \IPS\Node\Controller
catch( \Exception $e ) { }
}
}
\IPS\Session::i()->log( 'acplogs__rules_exported' );
\IPS\Output::i()->sendOutput( $xml->asXML(), 200, 'application/xml', array( 'Content-Disposition' => \IPS\Output::getContentDisposition( 'attachment', "Achievement_Rules.xml" ) ) );
}
@@ -285,6 +296,8 @@ class _rules extends \IPS\Node\Controller
{
\IPS\Output::i()->error( $e->getMessage(), '2C424/1', 403, '' );
}
\IPS\Session::i()->log( 'acplogs__rules_imported' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=achievements&controller=rules' ), 'completed' );
}
@@ -60,7 +60,7 @@ class _apiKeys extends \IPS\Node\Controller
*/
protected function manage()
{
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'forms', 'core' )->blurb( 'api_keys_blurb', TRUE, TRUE );
\IPS\Output::i()->output .= \IPS\Theme::i()->getTemplate( 'forms', 'core' )->blurb( 'api_keys_blurb', TRUE, TRUE );
return parent::manage();
}
}
@@ -429,7 +429,7 @@ class _applications extends \IPS\Node\Controller
{
$buttons['edit']['link'] = $buttons['edit']['link']->setQueryString( 'searchResult', \IPS\Request::i()->searchResult );
}
/* Return */
return \IPS\Theme::i()->getTemplate( 'trees', 'core' )->row(
$this->url,
@@ -448,7 +448,8 @@ class _applications extends \IPS\Node\Controller
$this->_descriptionHtml,
$node->canAdd(),
TRUE,
\IPS\Theme::i()->getTemplate('applications')->appRowAdditional( $node )
\IPS\Theme::i()->getTemplate('applications')->appRowAdditional( $node ),
$node->_lockedLang
);
}
@@ -682,11 +683,10 @@ class _applications extends \IPS\Node\Controller
}
/**
* Export an application from ipbmafia.ru
*
* @return void
*/
public function downloadMafia()
public function customDownload()
{
$application = \IPS\Application::load( \IPS\Request::i()->appKey );
@@ -731,7 +731,7 @@ class _applications extends \IPS\Node\Controller
/* Don't allow downloads of Marketplace resources */
if( $application->marketplace_id )
{
// \IPS\Output::i()->error( 'application_cannot_build_marketplace', '2C133/Y', 403, '' );
// \IPS\Output::i()->error( 'application_cannot_build_marketplace', '2C133/Y', 403, '' );
}
$form = $this->_buildForm( $application->directory, TRUE );
@@ -1060,6 +1060,13 @@ class _applications extends \IPS\Node\Controller
/* IPS Cloud Sync */
\IPS\IPS::resyncIPSCloud('Upgraded application in ACP');
$application = \IPS\Application::load( \IPS\Request::i()->appKey );
/* Unlock the app for PHP8 Usage */
if ( $application->requires_manual_intervention )
{
$application->requires_manual_intervention = 0;
$application->save();
}
/* Invalidate disk templates */
\IPS\Theme::resetAllCacheKeys();
@@ -121,10 +121,6 @@ class _developer extends \IPS\Dispatcher\Controller
$tabs['versions'] = 'dev_versions';
$tabs['widgets'] = 'dev_widgets';
if ( \in_array( $this->application->directory, \IPS\IPS::$ipsApps ) )
{
$tabs['features'] = 'dev_features';
}
if( \IPS\Application::appIsEnabled('cms') )
{
$tabs['cmstemplates'] = 'dev_cms_templates';
@@ -554,23 +550,20 @@ class _developer extends \IPS\Dispatcher\Controller
}
}
}
foreach ( $order as $parent => $items )
foreach( $_menu as $root => $items )
{
if ( $parent === NULL OR array_key_exists( $parent, $_menu ) )
/* If we were sorting one level of the menu, and this is not it, then leave it as is */
if( isset( \IPS\Request::i()->root ) and \IPS\Request::i()->root != $root )
{
$menu[ $parent ] = array();
foreach ( $items as $key => $position )
$menu[ $root ] = $items;
}
elseif( isset( $order[ $root ] ) )
{
$menu[ $root ] = array();
foreach( $order[ $root ] as $key => $position )
{
foreach ( $_menu as $_parent => $_items )
{
if ( array_key_exists( $key, $_items ) )
{
$menu[ $parent ][ $key ] = $_menu[ $_parent ][ $key ];
break;
}
}
$menu[ $root ][ $key ] = $_menu[ $root ][ $key ];
}
}
}
@@ -3541,24 +3534,6 @@ class _developer extends \IPS\Dispatcher\Controller
);
}
/**
* Manage Features
*
* @return string
*/
protected function _manageFeatures()
{
if ( !\in_array( $this->application->directory, \IPS\IPS::$ipsApps ) )
{
\IPS\Output::i()->error( 'app_ips_only', '2C103/R', 403, '' );
}
return \IPS\Application\Feature::devTable(
\IPS\Http\Url::internal( "app=core&module=applications&controller=developer&appKey={$this->application->directory}&tab=features" ),
$this->application->directory
);
}
/**
* Manage Hooks
*
@@ -105,6 +105,7 @@ class _oauth extends \IPS\Node\Controller
$client->save();
\IPS\Session::i()->log( 'acplogs__oauth_new_secret', array( 'core_oauth_client_' . $client->client_id => TRUE ) );
\IPS\Output::i()->bypassCsrfKeyCheck = TRUE;
}
\IPS\Output::i()->sidebar['actions'] = $client->getButtons( \IPS\Http\Url::internal( "app=core&module=applications&controller=oauth&do=view&client_id={$client->client_id}" ) );
@@ -508,7 +509,12 @@ class _oauth extends \IPS\Node\Controller
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=applications&controller=oauth&do=tokens" )->setQueryString( 'client_id', \IPS\Request::i()->client_id ) );
}
}
protected function form()
{
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'system/api.css', 'core', 'admin' ) );
return parent::form();
}
/**
* Redirect after save
*
@@ -111,6 +111,8 @@ class _plugins extends \IPS\Node\Controller
\IPS\Settings::i()->changeValues( array( 'disable_all_plugins' => implode( ',', $disabledPlugins ) ) );
\IPS\Session::i()->log( 'acplogs__all_plugins_disabled' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=applications&controller=plugins' ) );
}
@@ -137,6 +139,8 @@ class _plugins extends \IPS\Node\Controller
\IPS\Settings::i()->changeValues( array( 'disable_all_plugins' => '' ) );
\IPS\Session::i()->log( 'acplogs__all_plugins_reenabled' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=applications&controller=plugins' ) );
}
@@ -367,7 +371,6 @@ class _plugins extends \IPS\Node\Controller
}
}
// nulled by ipbmafia.ru
\file_put_contents( \IPS\ROOT_PATH . "/plugins/{$plugin->location}/{$plugin->name}_{$plugin->version_human}.xml", \file_get_contents( \IPS\Request::i()->file ) );
@chmod( \IPS\ROOT_PATH . "/plugins/{$plugin->location}/{$plugin->name}_{$plugin->version_human}.xml", \IPS\IPS_FILE_PERMISSION );
@@ -1210,6 +1213,18 @@ class _plugins extends \IPS\Node\Controller
{
@unlink( \IPS\Request::i()->file );
/* Make sure the plugin is not php8 locked now */
try
{
$plugin = \IPS\Plugin::load( \IPS\Request::i()->id );
if ( $plugin->requires_manual_intervention )
{
$plugin->requires_manual_intervention = 0;
$plugin->save();
}
}
catch ( \OutOfRangeException $e ) {}
/* If CMS Template install had conflicts, solve those now */
if( !empty( $_SESSION['cmsConflictKey'] ) )
{
@@ -313,6 +313,7 @@ class _clubs extends \IPS\Dispatcher\Controller
{
$target = $target->setQueryString( 'filter', 'pending_approval' );
}
\IPS\Session::i()->modLog( 'acplog__club_approved', array( $club->name => FALSE ) );
\IPS\Output::i()->redirect( $target, "approved" );
}
@@ -91,6 +91,16 @@ class _ajax extends \IPS\Dispatcher\Controller
{
$cssFiles[ $app ][ $location ][ $path ] = $items;
}
else
{
foreach( $items as $item )
{
if ( $item['css_added_to'] == $theme->_id or $item['css_user_edited'] )
{
$cssFiles[ $app ][ $location ][ $path ][ $item['css_name'] ] = $item;
}
}
}
}
}
}
@@ -127,8 +137,8 @@ class _ajax extends \IPS\Dispatcher\Controller
else
{
$templateNames = $skinSet->getRawCss( '', '', '', \IPS\Theme::RETURN_ALL_NO_CONTENT );
$templateBits = $skinSet->getRawCss( $t_app, 'front', 'custom', \IPS\Theme::RETURN_ALL );
$templateBit = ( ! empty( $t_name ) ) ? $templateBits[ $t_app ]['front']['custom'][ $t_name ] : null;
$templateBits = $skinSet->getRawCss( $t_app, 'front', NULL, \IPS\Theme::RETURN_ALL );
$templateBit = ( ! empty( $t_name ) ) ? $templateBits[ $t_app ]['front'][ $t_group ][ $t_name ] : null;
$templateBit['css_content'] = htmlentities( $templateBit['css_content'], ENT_DISALLOWED, 'UTF-8', TRUE );
}
@@ -215,12 +215,12 @@ class _icons extends \IPS\Dispatcher\Controller
*/
public static function processApplicationIcon( $values, $homeScreen = array(), $homeScreenMaskable = array() )
{
if( $values['icons_homescreen'] or $values['icons_homescreen_maskable'] )
if( ( isset( $values['icons_homescreen'] ) AND $values['icons_homescreen'] ) or ( isset( $values['icons_homescreen_maskable' ] ) AND $values['icons_homescreen_maskable'] ) )
{
foreach( [ 'icons_homescreen', 'icons_homescreen_maskable' ] as $type )
{
$setting = [];
if( $values[ $type ] )
if( isset( $values[ $type ] ) AND $values[ $type ] )
{
$sizes = array(
'android-chrome-36x36' => array(36, 36),
@@ -160,6 +160,8 @@ class _themes extends \IPS\Node\Controller
/* Just use the default */
$value = $themeSetting['sc_default'];
}
\IPS\Session::i()->log( 'acplogs__theme_setting_deleted', array( $themeSetting['sc_key'] => FALSE ) );
/* Clear guest page caches */
\IPS\Data\Cache::i()->clearAll();
@@ -780,6 +782,8 @@ class _themes extends \IPS\Node\Controller
/* Clear guest page caches */
\IPS\Data\Cache::i()->clearAll();
\IPS\Session::i()->log( 'acplog__theme_resource_deleted', array( $current['resource_filename'] => FALSE ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=customization&controller=themes&do=resources&set_id=' . $set->_id ), 'deleted' );
}
@@ -889,6 +893,7 @@ class _themes extends \IPS\Node\Controller
if ( $id )
{
\IPS\Session::i()->log( 'acplog__theme_resource_edited', array( $save['resource_filename'] => FALSE ) );
\IPS\Db::i()->update( 'core_theme_resources', $save, array( 'resource_id=?', $id ) );
}
else
@@ -904,7 +909,8 @@ class _themes extends \IPS\Node\Controller
$save['resource_name'] = mb_substr( $save['resource_name'], 0, ( mb_strrpos( $save['resource_name'], '.' ) ) ) . '_' . mt_rand() . '.' . $ext;
}
catch( \UnderflowException $ex ) { }
\IPS\Session::i()->log( 'acplog__theme_resource_added', array( $save['resource_filename'] => FALSE ) );
\IPS\Db::i()->insert( 'core_theme_resources', $save );
}
@@ -984,6 +990,8 @@ class _themes extends \IPS\Node\Controller
$theme->by_skin_gen = 0;
$theme->save();
\IPS\Session::i()->log( 'acplog__theme_converted_custom', array( "core_theme_set_title_{$theme->id}" => TRUE ) );
if( \IPS\Request::i()->isAjax() )
{
\IPS\Output::i()->json( array() );
@@ -2302,6 +2310,8 @@ class _themes extends \IPS\Node\Controller
/* Finish */
$xml->endDocument();
\IPS\Session::i()->log( 'acplog__theme_exported', array( "core_theme_set_title_{$themeSet->_id}" => TRUE ) );
\IPS\Output::i()->sendOutput( $xml->outputMemory(), 200, 'application/xml', array( 'Content-Disposition' => \IPS\Output::getContentDisposition( 'attachment', \IPS\Member::loggedIn()->language()->get('core_theme_set_title_' . $themeSet->_id ) . " {$version}.xml" ), FALSE, FALSE ) );
}
@@ -2945,17 +2955,22 @@ class _themes extends \IPS\Node\Controller
{
foreach ( $customCss[ $app ]['front']['custom'] as $name => $data )
{
$cssFiles++;
if ( $name == 'custom.css' )
{
$itemId = $data['css_id'];
$cssData .= "\n" . $data['css_content'];
}
/* Any CSS files in the 'custom' folder that are prefixed with an underscore are 'hidden' to the simple theme editor */
else if ( mb_substr( $name, 0, 1 ) != '_' )
{
$cssData .= "\n\n/* ===[Filename:" . $app . '/custom/' . $name . "]=== */\n\n" . $data['css_content'];
}
else
{
$cssData .= "\n\n/* ===[Filename:" . $app . '/custom/' . $name . "]=== /*\n\n" . $data['css_content'];
continue;
}
$cssFiles++;
}
}
}
@@ -3003,6 +3018,11 @@ class _themes extends \IPS\Node\Controller
$themeSet->custom_footer = $values['theme_simple_footer'];
$themeSet->save();
$headerKey = 'custom_header_' . $themeSet->id;
$footerKey = 'custom_footer_' . $themeSet->id;
unset( \IPS\Data\Store::i()->$headerKey);
unset( \IPS\Data\Store::i()->$footerKey);
/* Now remove any additional CSS files */
if ( $cssFiles > 1 )
{
@@ -3012,9 +3032,13 @@ class _themes extends \IPS\Node\Controller
{
foreach ( $customCss[ $app ]['front']['custom'] as $name => $data )
{
if ( ! ( $app == 'core' and $name == 'custom.css' ) )
/* Any CSS files in the 'custom' folder that are prefixed with an underscore are 'hidden' to the simple theme editor */
if ( mb_substr( $name, 0, 1 ) != '_' )
{
\IPS\Theme::removeCss( $app, 'front', 'custom', NULL, TRUE, $name );
if ( !( $app == 'core' and $name == 'custom.css' ) )
{
\IPS\Theme::removeCss( $app, 'front', 'custom', NULL, TRUE, $name );
}
}
}
}
@@ -3128,6 +3152,16 @@ class _themes extends \IPS\Node\Controller
{
$cssFiles[ $app ][ $location ][ $path ] = $items;
}
else
{
foreach( $items as $item )
{
if ( $item['css_added_to'] == $themeSet->_id or $item['css_user_edited'] )
{
$cssFiles[ $app ][ $location ][ $path ][ $item['css_name'] ] = $item;
}
}
}
}
}
}
@@ -3188,6 +3222,8 @@ class _themes extends \IPS\Node\Controller
\IPS\Member::updateAllMembers( array( 'skin' => \IPS\Request::i()->id ) );
}
\IPS\Session::i()->log( 'acplog__theme_member_reset' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=customization&controller=themes' ), 'member_theme_reset' );
}
@@ -95,7 +95,7 @@ class _search extends \IPS\Dispatcher\Controller
/* Open search is compatible up to at least version 2 */
if( isset( $response['version']['distribution'] ) and $response['version']['distribution'] == 'opensearch' )
{
if ( version_compare( $response['version']['number'], '2.0', '>' ) )
if ( version_compare( $response['version']['number'], '2.2', '>=' ) )
{
throw new \DomainException( \IPS\Member::loggedIn()->language()->addToStack('search_opensearch_server_unsupported_version', FALSE, array( 'sprintf' => array( $response['version']['number'] ) ) ) );
}
@@ -113,6 +113,8 @@ class _streams extends \IPS\Node\Controller
{}
}
\IPS\Session::i()->log( 'acplog__streams_restored' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=discovery&controller=streams' ), 'restore_default_streams_restored' );
}
@@ -177,6 +179,8 @@ class _streams extends \IPS\Node\Controller
$toSave[ 'activity_stream_rss' ] = $values['activity_stream_rss'];
$toSave[ 'activity_stream_subscriptions' ] = $values['activity_stream_subscriptions'];
$toSave[ 'activity_stream_subscriptions_max' ] = $values['activity_stream_subscriptions_max'];
\IPS\Session::i()->Log( 'acplog__all_activity_settings' );
$form->saveAsSettings( $toSave );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=discovery&controller=streams' ), 'saved' );
@@ -282,6 +282,8 @@ class _emoticons extends \IPS\Dispatcher\Controller
\IPS\Settings::i()->changeValues( array( 'emoji_cache' => time() ) );
\IPS\Session::i()->log( 'acplog__emoticons_edited' );
\IPS\Output::i()->json( 'OK' );
return;
}
@@ -413,6 +415,8 @@ class _emoticons extends \IPS\Dispatcher\Controller
/* Clear guest page caches */
\IPS\Data\Cache::i()->clearAll();
\IPS\Session::i()->log( 'acplog__emoticon_set_deleted' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=editor&controller=emoticons&tab=custom' ), 'saved' );
}
@@ -93,4 +93,27 @@ class _storedreplies extends \IPS\Node\Controller
parent::manage();
}
/**
* Search
*
* @return void
*/
protected function search()
{
$rows = array();
/* Get results */
$nodeClass = $this->nodeClass;
$results = [];
/* Convert to HTML */
foreach ( $nodeClass::search( 'reply_title', \IPS\Request::i()->input, 'reply_title' ) as $result )
{
$id = ( $result instanceof $this->nodeClass ? '' : 's.' ) . $result->_id;
$rows[ $id ] = $this->_getRow( $result, FALSE, TRUE );
}
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'trees', 'core' )->rows( $rows, '' );
}
}
@@ -131,6 +131,8 @@ class _languages extends \IPS\Node\Controller
/* Save */
\IPS\Lang::saveCustom( 'core', $values['word_key'], $values['word_custom'] ?? NULL, FALSE, $values['word_default'] );
\IPS\Session::i()->log( 'acplog__custom_word_added', array( $values['word_key'] => FALSE ) );
if ( \IPS\Request::i()->isAjax() )
{
\IPS\Output::i()->json( 'OK' );
@@ -171,6 +173,8 @@ class _languages extends \IPS\Node\Controller
\IPS\Db::i()->delete( 'core_sys_lang_words', array( "word_key=?", \IPS\Request::i()->key ) );
\IPS\Session::i()->log( 'acplog__custom_word_deleted', array( \IPS\Request::i()->key => FALSE ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=languages&controller=languages&do=translate&id=" . \IPS\Request::i()->langId ), 'deleted' );
}
@@ -446,6 +450,7 @@ class _languages extends \IPS\Node\Controller
if ( $values = $form->values() )
{
$form->saveAsSettings( $values );
\IPS\Session::i()->log( 'acplog__language_settings_edited' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=languages&controller=languages' ) );
}
@@ -812,7 +817,7 @@ class _languages extends \IPS\Node\Controller
/* Set version */
$xml->startAttribute( 'version' );
$xml->text( $app->version_long );
$xml->text( $app->long_version );
$xml->endAttribute();
/* Add words */
@@ -999,7 +1004,11 @@ class _languages extends \IPS\Node\Controller
}
/* Only import language strings from applications we have installed */
$applications = array_keys( \IPS\Application::applications() );
$applications = array();
foreach( \IPS\Application::applications() as $app )
{
$applications[$app->directory] = $app->long_version;
}
/* Move to correct app */
$appKey = NULL;
@@ -1008,10 +1017,10 @@ class _languages extends \IPS\Node\Controller
while ( $xml->read() )
{
$appKey = $xml->getAttribute('key');
if ( !array_key_exists( $appKey, $data['apps'] ) AND \in_array( $appKey, $applications ) )
if ( !array_key_exists( $appKey, $data['apps'] ) AND array_key_exists( $appKey, $applications ) )
{
/* Get version */
$version = $xml->getAttribute('version');
$version = $xml->getAttribute('version') ?: $applications[$appKey];
/* Import */
$xml->read();
@@ -645,15 +645,17 @@ class _marketplace extends \IPS\Dispatcher\Controller
* @param array|null $data POST/PUT Data
* @param int $timeout Custom timeout value for request
* @param bool $retry Retried request after token expire
* @param int $ipsVersion Version of Invision to use for version check
* @return array JSON decoded response
*
* @throws \RuntimeException
* @throws \UnexpectedValueException
*/
final protected function _api( string $endpoint, array $queryString = NULL, bool $authenticate = FALSE, array $data = NULL, int $timeout = \IPS\DEFAULT_REQUEST_TIMEOUT, bool $retry = FALSE ): array
final protected function _api( string $endpoint, array $queryString = NULL, bool $authenticate = FALSE, array $data = NULL, int $timeout = \IPS\DEFAULT_REQUEST_TIMEOUT, bool $retry = FALSE, ?int $ipsVersion = NULL ): array
{
$token = $authenticate ? ( $this->_token() ?? \IPS\MARKETPLACE_GUEST_TOKEN ) : \IPS\MARKETPLACE_GUEST_TOKEN;
$url = \IPS\Http\Url::external( \IPS\MARKETPLACE_URL . '/api/' . $endpoint )->setQueryString( 'ips_version', \IPS\Application::load('core')->long_version );
$url = \IPS\Http\Url::external( \IPS\MARKETPLACE_URL . '/api/' . $endpoint )->setQueryString( 'ips_version', $ipsVersion ?? \IPS\Application::load('core')->long_version );
if ( $queryString )
{
$url = $url->setQueryString( $queryString );
@@ -1235,9 +1237,9 @@ class _marketplace extends \IPS\Dispatcher\Controller
* @param array $files Array of files, key is Marketplace ID, value is current version
* @return array
*/
final public function _updateCheck( array $files ):? array
final public function _updateCheck( array $files, ?int $version = NULL ):? array
{
return $this->_api("marketplace/files/versions", [ 'files' => $files ] );
return $this->_api("marketplace/files/versions", [ 'files' => $files ], FALSE, NULL, \IPS\DEFAULT_REQUEST_TIMEOUT, FALSE, $version );
}
/**
@@ -414,7 +414,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['approve'] = array(
'icon' => 'check-circle',
'title' => 'approve',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=approve&id=' . $member->member_id . $this->getSafeUrlFromFilters() )->csrf(),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=approve&id=' . $member->member_id )->getSafeUrlFromFilters()->csrf(),
'id' => "{$member->member_id}-approve",
'data' => array(
'bubble' => '',
@@ -423,7 +423,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['ban'] = array(
'icon' => 'times',
'title' => 'ban',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=ban&id=' . $member->member_id . '&permban=1' . $this->getSafeUrlFromFilters() )->csrf(),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=ban&id=' . $member->member_id . '&permban=1' )->csrf()->getSafeUrlFromFilters(),
'id' => "{$member->member_id}-ban",
'data' => array(
'bubble' => '',
@@ -435,7 +435,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['resend_email'] = array(
'icon' => 'envelope-o',
'title' => 'resend_validation_email',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=resendEmail&id=' . $member->member_id . $this->getSafeUrlFromFilters() )->csrf(),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=resendEmail&id=' . $member->member_id )->csrf()->getSafeUrlFromFilters(),
'data' => array( 'doajax' => '' ),
'id' => "{$member->member_id}-resend",
);
@@ -453,7 +453,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['unlock'] = array(
'icon' => 'unlock',
'title' => 'unlock',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=unlock&id=' . $member->member_id . $this->getSafeUrlFromFilters() )->csrf(),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=unlock&id=' . $member->member_id )->csrf()->getSafeUrlFromFilters(),
'data' => array( 'bubble' => '' )
);
}
@@ -461,7 +461,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['view'] = array(
'icon' => 'search',
'title' => 'view',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=view&id=' . $member->member_id . $this->getSafeUrlFromFilters() ),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=view&id=' . $member->member_id )->getSafeUrlFromFilters(),
);
if ( !\IPS\Request::i()->_groupFilter )
@@ -473,7 +473,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['flag'] = array(
'icon' => 'flag',
'title' => 'spam_flag',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=spam&id=' . $member->member_id . '&status=1' . $this->getSafeUrlFromFilters() )->csrf(),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=spam&id=' . $member->member_id . '&status=1')->csrf()->getSafeUrlFromFilters(),
'hidden' => $member->members_bitoptions['bw_is_spammer'],
'id' => "{$member->member_id}-flag",
'data' => array(
@@ -483,7 +483,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['unflag'] = array(
'icon' => 'flag ipsType_spammer',
'title' => 'spam_unflag',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=spam&id=' . $member->member_id . '&status=0' . $this->getSafeUrlFromFilters() )->csrf(),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=spam&id=' . $member->member_id . '&status=0' )->csrf()->getSafeUrlFromFilters(),
'hidden' => !$member->members_bitoptions['bw_is_spammer'],
'id' => "{$member->member_id}-unflag",
'data' => array(
@@ -498,7 +498,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
$return['delete'] = array(
'icon' => 'times-circle',
'title' => 'delete',
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=delete&id=' . $member->member_id . $this->getSafeUrlFromFilters() ),
'link' => \IPS\Http\Url::internal( 'app=core&module=members&controller=members&do=delete&id=' . $member->member_id )->getSafeUrlFromFilters(),
'data' => array( 'ipsDialog' => '', 'ipsDialog-title' => \IPS\Member::loggedIn()->language()->addToStack( 'delete_member', FALSE, array( 'sprintf' => $member->name ) ) ),
);
}
@@ -1544,6 +1544,9 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
{
/* Still here? We've already confirmed and we only have the internal login handler, so go ahead. */
$member->forcePasswordReset();
\IPS\Session::i()->log( 'acplog__reset_password_member', array( $member->name => FALSE ) );
\IPS\Output::i()->redirect( $member->acpUrl() );
}
}
@@ -1633,7 +1636,9 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
}
\IPS\Task::queue( 'core', 'ForcePasswordReset', $options, 1, \array_keys( $options ) );
\IPS\Session::i()->log( 'acplog__reset_password_all' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=members&controller=members" ), 'saved' );
}
@@ -2989,32 +2994,14 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
}
}
\IPS\Session::i()->log( 'acplog__deleted_guest_content', array( $values['guest_name_to_delete'] => FALSE ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=moderation&controller=spam&searchResult=guest_captcha" ), 'deleted' );
}
\IPS\Output::i()->output = $form;
}
/**
* Return a partial query string based on any filters or sort options
*
* @return string
*/
protected function getSafeUrlFromFilters(): string
{
$extraUrlParams = [];
foreach( [ 'filter', 'sortby', 'sortdirection' ] as $param )
{
if ( isset( \IPS\Request::i()->$param ) )
{
$extraUrlParams[ $param ] = \IPS\Request::i()->$param;
}
}
return \count( $extraUrlParams ) ? '&' . http_build_query( $extraUrlParams ) : '';
}
/**
* Delete Member
*
@@ -3082,7 +3069,7 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
break;
}
\IPS\Output::i()->redirect( \IPS\Http\Url::internal("app=core&module=members&controller=members" . $this->getSafeUrlFromFilters() ), 'deleted' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal("app=core&module=members&controller=members" )->getSafeUrlFromFilters(), 'deleted' );
}
/* Display Form */
@@ -3267,6 +3254,8 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
/* Rebuild */
$member->removeReputation( \IPS\Request::i()->type );
}
\IPS\Session::i()->log( 'acplog__member_reaction_removed_' . \IPS\Request::i()->type , array( $member->name => FALSE ) );
/* redirect */
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=members&controller=members&do=view&id={$member->member_id}" ), 'saved' );
@@ -4400,6 +4389,8 @@ class _members extends \IPS\Helpers\CoverPhoto\Controller
}
}
}
\IPS\Session::i()->log( 'acplog__member_pii_exported', array( $member->name => FALSE ) );
/* Build */
\IPS\Output::i()->sendOutput( $xml->asXML(), 200, 'application/xml', array( "Content-Disposition" => \IPS\Output::getContentDisposition( 'attachment', $member->name . '_personal_information.xml' ) ), FALSE, FALSE, FALSE );
@@ -47,6 +47,7 @@ class _reset extends \IPS\Dispatcher\Controller
{
\IPS\Session::i()->csrfCheck();
\IPS\Task::queue( 'core', 'RecountMemberContent', array(), 4 );
\IPS\Session::i()->log( 'acplog__recount_member_content' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=members&controller=members' ), \IPS\Member::loggedIn()->language()->addToStack( 'member_recount_content_process' ) );
}
@@ -59,6 +60,7 @@ class _reset extends \IPS\Dispatcher\Controller
{
\IPS\Session::i()->csrfCheck();
\IPS\Task::queue( 'core', 'RecountMemberReputation', array(), 4 );
\IPS\Session::i()->log( 'acplog__recount_member_rep' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=members&controller=members' ), \IPS\Member::loggedIn()->language()->addToStack( 'member_recount_rep_process' ) );
}
}
@@ -92,6 +92,8 @@ class _profilecompletion extends \IPS\Node\Controller
\IPS\Settings::i()->changeValues( array( 'quick_register' => 1 ) );
\IPS\Session::i()->log( 'acplog__quick_register_enabled' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=profiles&tab=profilecompletion' ), 'profile_complete_quick_register_off_enabled' );
}
@@ -140,6 +142,8 @@ class _profilecompletion extends \IPS\Node\Controller
\IPS\Member::updateAllMembers( array( "members_bitoptions2 = members_bitoptions2 & ~" . \IPS\Member::$bitOptions['members_bitoptions']['members_bitoptions2']['profile_completed'] ) );
\IPS\Session::i()->log( 'acplog__profile_step_added', array( "profile_step_title_{$step->id}" => TRUE ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=membersettings&controller=profiles&tab=profilecompletion" ), 'saved' );
}
@@ -155,6 +155,9 @@ class _profilesettings extends \IPS\Dispatcher\Controller
}, \IPS\Member::loggedIn()->language()->addToStack('after'), NULL, 'prune_item_markers' ) );
}
$form->addHeader( 'profile_settings_pms' );
$form->add( new \IPS\Helpers\Form\Interval( 'prune_pms', \IPS\Settings::i()->prune_pms, FALSE, array( 'valueAs' => \IPS\Helpers\Form\Interval::DAYS, 'unlimited' => 0, 'unlimitedLang' => 'never' ), NULL, \IPS\Member::loggedIn()->language()->addToStack('after'), NULL, 'prune_pms' ) );
$form->addHeader( 'profile_settings_ignore' );
$form->add( new \IPS\Helpers\Form\YesNo( 'ignore_system_on', \IPS\Settings::i()->ignore_system_on, FALSE, array(), NULL, NULL, NULL, 'ignore_system_on' ) );
@@ -50,7 +50,7 @@ class _referralbanners extends \IPS\Node\Controller
*/
public function execute()
{
\IPS\Dispatcher::i()->checkAcpPermission( 'core', 'membersettings', 'referrals_manage' );
\IPS\Dispatcher::i()->checkAcpPermission( 'referrals_manage', 'core', 'membersettings' );
parent::execute();
}
@@ -85,6 +85,8 @@ class _referralcommission extends \IPS\Node\Controller
/* Clear guest page caches */
\IPS\Data\Cache::i()->clearAll();
\IPS\Session::i()->log( 'acplog__referral_commission_settings_edited' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal('app=nexus&module=customers&controller=referrals'), 'saved' );
}
@@ -39,6 +39,15 @@ class _refersettings extends \IPS\Dispatcher\Controller
/* Clear guest page caches */
\IPS\Data\Cache::i()->clearAll();
if ( $values['ref_on'] )
{
\IPS\Session::i()->log( 'acplog__referrals_enabled' );
}
else
{
\IPS\Session::i()->log( 'acplog__referrals_disabled' );
}
\IPS\Output::i()->redirect( \IPS\Http\Url::internal('app=core&module=membersettings&controller=referrals') );
}
@@ -388,6 +388,7 @@ class _reputation extends \IPS\Node\Controller
\IPS\Session::i()->csrfCheck();
\IPS\Task::queue( 'core', 'RebuildReputationLeaderboard', array(), 4 );
\IPS\Db::i()->delete('core_reputation_leaderboard_history');
\IPS\Session::i()->log( 'acplog__rebuilt_leaderboard' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=reputation&tab=leaderboard' ), 'reputation_leaderboard_rebuilding' );
}
}
@@ -212,11 +212,11 @@ class _spam extends \IPS\Dispatcher\Controller
$disabled = TRUE;
if( !\IPS\Settings::i()->ipb_reg_number )
{
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( '__ipbmafia__nulling_null_alert' ); //Changing error message to custom
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( '__nulling_null_alert' ); //Changing error message to custom
}
else
{
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( '__ipbmafia__nulling_null_alert' ); //Changing error message to custom
\IPS\Member::loggedIn()->language()->words['spam_service_enabled_desc'] = \IPS\Member::loggedIn()->language()->addToStack( '__nulling_null_alert' ); //Changing error message to custom
}
}
@@ -75,30 +75,6 @@ class _dashboard extends \IPS\Dispatcher\Controller
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'dashboard' )->dashboard( $toShow, $blocks, $info );
}
/**
* Reset the latest features we've seen so that we can see them again
*
* @return void
*/
public function whatsNew()
{
\IPS\Session::i()->csrfCheck();
\IPS\Member::loggedIn()->members_bitoptions['has_new_acp_features'] = TRUE;
\IPS\Member::loggedIn()->save();
\IPS\Db::i()->delete( 'core_members_feature_seen', array( 'member_id=?', \IPS\Member::loggedIn()->member_id ) );
if( \IPS\Member::loggedIn()->hasAcpRestriction( \IPS\Application::load( 'core' ), \IPS\Application\Module::get( 'core', 'overview' ), 'view_dashboard' ) )
{
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=overview&controller=dashboard" ) );
}
else
{
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "" ) );
}
}
/**
* Return a json-encoded array of the current blocks to show
*
@@ -42,7 +42,7 @@ class _promote extends \IPS\Dispatcher\Controller
\IPS\Dispatcher::i()->checkAcpPermission( 'promote_manage' );
/* Get tab content */
$this->activeTab = \IPS\Request::i()->tab ?: 'facebook';
$this->activeTab = \IPS\Request::i()->tab ?: 'internal';
parent::execute();
}
@@ -67,13 +67,12 @@ class _promote extends \IPS\Dispatcher\Controller
/* Build tab list */
$tabs = array();
$tabs['facebook'] = 'promote_tab_facebook';
$tabs['internal'] = 'promote_tab_internal';
$tabs['permissions'] = 'promote_tab_permissions';
$tabs['twitter'] = 'promote_tab_twitter';
$tabs['links'] = 'promote_tab_links';
$tabs['schedule'] = 'promote_tab_schedule';
$tabs['permissions'] = 'promote_tab_permissions';
$tabs['internal'] = 'promote_tab_internal';
/* Buttons for logs */
if ( \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'promotion', 'promote_logs' ) )
@@ -347,244 +346,6 @@ class _promote extends \IPS\Dispatcher\Controller
return $output . $form;
}
/**
* Manage Facebook
*
* @return string
*/
protected function _manageFacebook()
{
$facebook = \IPS\Login\Handler::findMethod('IPS\Login\Handler\Oauth2\Facebook');
$account = \IPS\core\Promote::getPromoter('Facebook')->setMember( \IPS\Member::loggedIn() );
if ( isset( \IPS\Request::i()->clear ) and \IPS\Request::i()->clear === 'true' )
{
\IPS\Session::i()->csrfCheck();
/* We want to clear settings */
$account->enabled = FALSE;
$account->saveSettings( array(
'token' => NULL,
'owner' => NULL,
'page_name' => NULL,
'enabled' => NULL,
'page' => NULL,
'group' => NULL,
'member_token' => NULL,
'shareable' => NULL
) );
\IPS\Settings::i()->changeValues( array( 'promote_facebook_auth' => '' ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=promotion&controller=promote&tab=facebook" ) );
}
/* We are using the default app here */
if ( \is_numeric( \IPS\Settings::i()->promote_facebook_auth ) )
{
/* Have we set up Facebook yet? */
if ( !$facebook OR ! $facebook->settings['client_id'] )
{
/* Nope, so lets do that first... */
return \IPS\Theme::i()->getTemplate( 'promote' )->warningNoFacebookApp();
}
}
else
{
/* We are using our custom app here */
$facebook->settings = json_decode( \IPS\Settings::i()->promote_facebook_auth, TRUE );
}
/* promote_facebook_auth: value 0 means not set up, value 1 means using default, JSON means using custom */
if ( ! \IPS\Settings::i()->promote_facebook_auth )
{
$form = new \IPS\Helpers\Form;
$json = array();
if ( ! \is_int( \IPS\Settings::i()->promote_facebook_auth ) )
{
$json = json_decode( \IPS\Settings::i()->promote_facebook_auth, TRUE );
}
$form->add( new \IPS\Helpers\Form\Radio( 'promote_facebook_auth_choose', ( \IPS\Settings::i()->promote_facebook_auth === 0 or \IPS\Settings::i()->promote_facebook_auth === 1 ) ? 1 : 0, FALSE, array( 'options' => array(
0 => 'promote_facebook_auth_choose_default',
1 => 'promote_facebook_auth_choose_custom'
),
'toggles' => array(
1 => array( 'promote_facebook_auth_id', 'promote_facebook_auth_secret' )
) ), NULL, NULL, NULL, 'promote_facebook_auth_choose' ) );
$form->add( new \IPS\Helpers\Form\Text( 'promote_facebook_auth_id', ( isset( $json['client_id'] ) ? $json['client_id'] : NULL ), TRUE, array(), NULL, NULL, NULL, 'promote_facebook_auth_id' ) );
$form->add( new \IPS\Helpers\Form\Text( 'promote_facebook_auth_secret', ( isset( $json['client_secret'] ) ? $json['client_secret'] : NULL ), TRUE, array(), NULL, NULL, NULL, 'promote_facebook_auth_secret' ) );
\IPS\Member::loggedIn()->language()->words['promote_facebook_auth_id_desc'] = \IPS\Member::loggedIn()->language()->addToStack( 'login_handler_Facebook_info', FALSE, array( 'sprintf' => array( (string) \IPS\Http\Url::internal( 'oauth/callback/', 'none' ) ) ) );
/* Are we saving? */
if ( $values = $form->values() )
{
/* Default to .. default */
$auth = 1;
if ( $values['promote_facebook_auth_choose'] == 1 )
{
$auth = array(
'client_id' => $values['promote_facebook_auth_id'],
'client_secret' => $values['promote_facebook_auth_secret']
);
}
\IPS\Settings::i()->changeValues( array( 'promote_facebook_auth' => json_encode( $auth ) ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=promotion&controller=promote&tab=" . \IPS\Request::i()->tab ), 'saved' );
}
return $form;
}
/* Have we synchronized our user account with Facebook? */
if ( ! $account->isConnected( \IPS\Member::loggedIn() ) )
{
/* Nope, so lets do that now... */
return \IPS\Theme::i()->getTemplate( 'promote' )->warningNoFacebookUser( $facebook, \is_numeric( \IPS\Settings::i()->promote_facebook_auth ) );
}
/* Do we have post to page permissions? */
$response = $account->canPostToPage();
if ( $response !== TRUE )
{
/* Nope, so lets do that now... */
return \IPS\Theme::i()->getTemplate( 'promote' )->warningNoFacebookPostToPagePermission( $response, $facebook );
}
$form = new \IPS\Helpers\Form;
/* We're all set, so show the form! */
$pages = $facebook->getPages( \IPS\Member::loggedIn() );
$options = array();
$shareable = array();
foreach( $pages as $id => $data )
{
$options[ 'p_' . $id ] = \IPS\Member::loggedIn()->language()->addToStack( 'promote_facebook_page_prefix', FALSE, array( 'sprintf' => array( $data[0] ) ) );
}
$groups = $facebook->getGroups( \IPS\Member::loggedIn() );
foreach( $groups as $id => $data )
{
$options[ 'g_' . $id ] = \IPS\Member::loggedIn()->language()->addToStack( 'promote_facebook_group_prefix', FALSE, array( 'sprintf' => array( $data[0] ) ) );
}
$output = '';
$owner = \IPS\Member::load( $account->settings['owner'] );
if ( isset( $account->settings['shareable'] ) )
{
if( isset( $account->settings['shareable']['pages'] ) )
{
foreach( $account->settings['shareable']['pages'] as $id => $data )
{
$shareable[] = 'p_' . $id;
}
}
if( isset( $account->settings['shareable']['groups'] ) )
{
foreach( $account->settings['shareable']['groups'] as $id => $data )
{
$shareable[] = 'g_' . $id;
}
}
}
if ( $account->settings['owner'] )
{
try
{
$output = \IPS\Theme::i()->getTemplate( 'promote' )->facebookOwnedBy( $owner, $account->settings['page'], $account->settings['page_name'] );
}
catch( \OutOfRangeException $e )
{
/* Member no longer exists, so clear settings */
$account->enabled = FALSE;
$account->saveSettings( array(
'token' => NULL,
'owner' => NULL,
'page_name' => NULL
) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=promotion&controller=promote&tab=facebook" ) );
}
}
$form->add( new \IPS\Helpers\Form\YesNo( 'promote_facebook_enabled', $account->enabled, FALSE, array( 'togglesOn' => array( 'promote_facebook_shareable', 'promote_facebook_members', 'promote_facebook_tags' ) ), NULL, NULL, NULL, 'promote_facebook_enabled' ) );
if ( ! $account->settings['owner'] or ( \IPS\Member::loggedIn()->member_id == $account->settings['owner'] ) )
{
$form->add( new \IPS\Helpers\Form\CheckboxSet( 'promote_facebook_shareable', $shareable, FALSE, array( 'options' => $options ), NULL, NULL, NULL, 'promote_facebook_shareable' ) );
}
$form->add( new \IPS\Helpers\Form\Stack( 'promote_facebook_tags', $account->settings['tags'], FALSE, array( 'stackFieldType' => 'Text' ), NULL, NULL, NULL, 'promote_facebook_tags' ) );
/* Are we saving? */
if ( $values = $form->values() )
{
if ( \is_array( $values['promote_facebook_tags'] ) )
{
array_walk( $values['promote_facebook_tags'], function( &$value )
{
$value = str_replace( '#', '', $value );
} );
}
$account->enabled = $values['promote_facebook_enabled'];
/* If we have page data, then we are the page owner and can have extra special things */
if ( isset( $values['promote_facebook_shareable'] ) )
{
$shareable = array( 'pages' => array(), 'groups' => array() );
foreach( $values['promote_facebook_shareable'] as $id )
{
$realId = mb_substr( $id, 2 );
/* Page or group? */
if ( mb_substr( $id, 0, 2 ) == 'p_' )
{
$shareable['pages'][ $realId ] = array(
'token' => $facebook->exchangeToken( $pages[ $realId ][1] ),
'name' => $pages[ $realId ][0]
);
}
else
{
$shareable['groups'][ $realId ] = array(
'name' => $groups[ $realId ][0]
);
}
}
$save['shareable'] = $shareable;
$save['owner'] = \IPS\Member::loggedIn()->member_id;
try
{
$save['token'] = \IPS\Db::i()->select( 'token_access_token', 'core_login_links', array( 'token_login_method=? and token_member=?', $facebook->id, \IPS\Member::loggedIn()->member_id ) )->first();
}
catch( \UnderflowException $e )
{
$save['token'] = NULL;
}
$save['tags'] = $values['promote_facebook_tags'];
}
$account->saveSettings( $save );
\IPS\Session::i()->log( 'acplogs__promote_save', array( "acplogs__promote_changed_facebook" => true ) );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=promotion&controller=promote&tab=" . \IPS\Request::i()->tab ), 'saved' );
}
return $output . $form;
}
/**
* Response Logs
*
@@ -200,6 +200,8 @@ class _seo extends \IPS\Dispatcher\Controller
}
$form->saveAsSettings( [ 'robots_txt' => $value ] );
\IPS\Session::i()->log( 'acplog__robotstxt_edited' );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=promotion&controller=seo&tab=robotstxt&_saved=1" ) );
}
Loaded 100 of 1085 files, more files were not shown because too many files have changed in this diff. Show more