Compare commits
1 Commits
support/1.
...
1.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccbd818d13 |
@@ -149,7 +149,6 @@ class UserRightsMatrix extends UserRightsAddOnAPI
|
||||
return ($oUser->GetKey() == 1);
|
||||
}
|
||||
|
||||
// Deprecated - create a new module !
|
||||
public function Setup()
|
||||
{
|
||||
// Users must be added manually
|
||||
|
||||
@@ -42,6 +42,11 @@ class UserRightsNull extends UserRightsAddOnAPI
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Setup()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Init()
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -431,44 +431,28 @@ class UserRightsProfile extends UserRightsAddOnAPI
|
||||
$oChange->Set("userinfo", "Initialization");
|
||||
$iChangeId = $oChange->DBInsert();
|
||||
|
||||
// Support drastic data model changes: no organization class !
|
||||
if (MetaModel::IsValidClass('Organization'))
|
||||
{
|
||||
$oOrg = new Organization();
|
||||
$oOrg->Set('name', 'My Company/Department');
|
||||
$oOrg->Set('code', 'SOMECODE');
|
||||
$iOrgId = $oOrg->DBInsertTrackedNoReload($oChange, true /* skip security */);
|
||||
}
|
||||
else
|
||||
{
|
||||
$iOrgId = 0;
|
||||
}
|
||||
$oOrg = new Organization();
|
||||
$oOrg->Set('name', 'My Company/Department');
|
||||
$oOrg->Set('code', 'SOMECODE');
|
||||
// $oOrg->Set('status', 'implementation');
|
||||
//$oOrg->Set('parent_id', xxx);
|
||||
$iOrgId = $oOrg->DBInsertTrackedNoReload($oChange, true /* skip security */);
|
||||
|
||||
// Support drastic data model changes: no Person class !
|
||||
if (MetaModel::IsValidClass('Person'))
|
||||
{
|
||||
$oContact = new Person();
|
||||
$oContact->Set('name', 'My last name');
|
||||
$oContact->Set('first_name', 'My first name');
|
||||
if (MetaModel::IsValidAttCode('Person', 'org_id'))
|
||||
{
|
||||
$oContact->Set('org_id', $iOrgId);
|
||||
}
|
||||
$oContact->Set('email', 'my.email@foo.org');
|
||||
$iContactId = $oContact->DBInsertTrackedNoReload($oChange, true /* skip security */);
|
||||
}
|
||||
else
|
||||
{
|
||||
$iContactId = 0;
|
||||
}
|
||||
$oContact = new Person();
|
||||
$oContact->Set('name', 'My last name');
|
||||
$oContact->Set('first_name', 'My first name');
|
||||
//$oContact->Set('status', 'available');
|
||||
$oContact->Set('org_id', $iOrgId);
|
||||
$oContact->Set('email', 'my.email@foo.org');
|
||||
//$oContact->Set('phone', '');
|
||||
//$oContact->Set('location_id', $iLocationId);
|
||||
//$oContact->Set('employee_number', '');
|
||||
$iContactId = $oContact->DBInsertTrackedNoReload($oChange, true /* skip security */);
|
||||
|
||||
$oUser = new UserLocal();
|
||||
$oUser->Set('login', $sAdminUser);
|
||||
$oUser->Set('password', $sAdminPwd);
|
||||
if (MetaModel::IsValidAttCode('UserLocal', 'contactid'))
|
||||
{
|
||||
$oUser->Set('contactid', $iContactId);
|
||||
}
|
||||
$oUser->Set('contactid', $iContactId);
|
||||
$oUser->Set('language', $sLanguage); // Language was chosen during the installation
|
||||
|
||||
// Add this user to the very specific 'admin' profile
|
||||
@@ -487,6 +471,14 @@ class UserRightsProfile extends UserRightsAddOnAPI
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Setup()
|
||||
{
|
||||
SetupProfiles::ComputeITILProfiles();
|
||||
//SetupProfiles::ComputeBasicProfiles();
|
||||
SetupProfiles::DoCreateProfiles();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Init()
|
||||
{
|
||||
MetaModel::RegisterPlugin('userrights', 'ACbyProfile');
|
||||
@@ -833,6 +825,265 @@ exit;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Create simple profiles into our user management model:
|
||||
// - administrator
|
||||
// - readers
|
||||
// - contributors
|
||||
//
|
||||
class SetupProfiles
|
||||
{
|
||||
protected static $m_aActions = array(
|
||||
UR_ACTION_READ => 'Read',
|
||||
UR_ACTION_MODIFY => 'Modify',
|
||||
UR_ACTION_DELETE => 'Delete',
|
||||
UR_ACTION_BULK_READ => 'Bulk Read',
|
||||
UR_ACTION_BULK_MODIFY => 'Bulk Modify',
|
||||
UR_ACTION_BULK_DELETE => 'Bulk Delete',
|
||||
);
|
||||
|
||||
// Note: It is possible to specify the same class in several modules
|
||||
//
|
||||
protected static $m_aModules = array();
|
||||
protected static $m_aProfiles = array();
|
||||
|
||||
|
||||
protected static function DoCreateActionGrant($iProfile, $iAction, $sClass, $bPermission = true)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_ActionGrant");
|
||||
$oNewObj->Set('profileid', $iProfile);
|
||||
$oNewObj->Set('permission', $bPermission ? 'yes' : 'no');
|
||||
$oNewObj->Set('class', $sClass);
|
||||
$oNewObj->Set('action', self::$m_aActions[$iAction]);
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
protected static function DoCreateStimulusGrant($iProfile, $sStimulusCode, $sClass)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_StimulusGrant");
|
||||
$oNewObj->Set('profileid', $iProfile);
|
||||
$oNewObj->Set('permission', 'yes');
|
||||
$oNewObj->Set('class', $sClass);
|
||||
$oNewObj->Set('stimulus', $sStimulusCode);
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
protected static function DoCreateOneProfile($sName, $aProfileData)
|
||||
{
|
||||
$sDescription = $aProfileData['description'];
|
||||
if (strlen(trim($aProfileData['write_modules'])) == 0)
|
||||
{
|
||||
$aWriteModules = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$aWriteModules = explode(',', trim($aProfileData['write_modules']));
|
||||
}
|
||||
$aStimuli = $aProfileData['stimuli'];
|
||||
|
||||
$oNewObj = MetaModel::NewObject("URP_Profiles");
|
||||
$oNewObj->Set('name', $sName);
|
||||
$oNewObj->Set('description', $sDescription);
|
||||
$iProfile = $oNewObj->DBInsertNoReload();
|
||||
|
||||
// Grant read rights for everything
|
||||
//
|
||||
foreach (MetaModel::GetClasses('bizmodel') as $sClass)
|
||||
{
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_READ, $sClass);
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_BULK_READ, $sClass);
|
||||
}
|
||||
|
||||
// Grant write for given modules
|
||||
// Start by compiling the information, because some modules may overlap
|
||||
$aWriteableClasses = array();
|
||||
foreach ($aWriteModules as $sModule)
|
||||
{
|
||||
//$oPage->p('Granting write access for the module"'.$sModule.'" - '.count(self::$m_aModules[$sModule]).' classes');
|
||||
foreach (self::$m_aModules[$sModule] as $sClass)
|
||||
{
|
||||
$aWriteableClasses[$sClass] = true;
|
||||
}
|
||||
}
|
||||
foreach ($aWriteableClasses as $sClass => $foo)
|
||||
{
|
||||
if (!MetaModel::IsValidClass($sClass))
|
||||
{
|
||||
throw new CoreException("Invalid class name '$sClass'");
|
||||
}
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_MODIFY, $sClass);
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_DELETE, $sClass);
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_BULK_MODIFY, $sClass);
|
||||
// By default, do not allow bulk deletion operations for standard users
|
||||
// self::DoCreateActionGrant($iProfile, UR_ACTION_BULK_DELETE, $sClass);
|
||||
}
|
||||
|
||||
// Grant stimuli for given classes
|
||||
foreach ($aStimuli as $sClass => $sAllowedStimuli)
|
||||
{
|
||||
if (!MetaModel::IsValidClass($sClass))
|
||||
{
|
||||
// Could be a class defined in a module that wasn't installed
|
||||
continue;
|
||||
//throw new CoreException("Invalid class name '$sClass'");
|
||||
}
|
||||
|
||||
if ($sAllowedStimuli == 'any')
|
||||
{
|
||||
$aAllowedStimuli = array_keys(MetaModel::EnumStimuli($sClass));
|
||||
}
|
||||
elseif ($sAllowedStimuli == 'none')
|
||||
{
|
||||
$aAllowedStimuli = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$aAllowedStimuli = explode(',', $sAllowedStimuli);
|
||||
}
|
||||
foreach ($aAllowedStimuli as $sStimulusCode)
|
||||
{
|
||||
self::DoCreateStimulusGrant($iProfile, $sStimulusCode, $sClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function DoCreateProfiles()
|
||||
{
|
||||
URP_Profiles::DoCreateAdminProfile();
|
||||
URP_Profiles::DoCreateUserPortalProfile();
|
||||
|
||||
foreach(self::$m_aProfiles as $sName => $aProfileData)
|
||||
{
|
||||
self::DoCreateOneProfile($sName, $aProfileData);
|
||||
}
|
||||
}
|
||||
|
||||
public static function ComputeBasicProfiles()
|
||||
{
|
||||
// In this profiling scheme, one single module represents all the classes
|
||||
//
|
||||
self::$m_aModules = array(
|
||||
'UserData' => MetaModel::GetClasses('bizmodel'),
|
||||
);
|
||||
|
||||
self::$m_aProfiles = array(
|
||||
'Reader' => array(
|
||||
'description' => 'Person having a ready-only access to the data',
|
||||
'write_modules' => '',
|
||||
'stimuli' => array(
|
||||
),
|
||||
),
|
||||
'Writer' => array(
|
||||
'description' => 'Contributor to the contents (read + write access)',
|
||||
'write_modules' => 'UserData',
|
||||
'stimuli' => array(
|
||||
// any class => 'any'
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public static function ComputeITILProfiles()
|
||||
{
|
||||
// In this profiling scheme, modules are based on ITIL recommendations
|
||||
//
|
||||
self::$m_aModules = array(
|
||||
/*
|
||||
'WriteModule' => array(
|
||||
'someclass',
|
||||
'anotherclass',
|
||||
),
|
||||
*/
|
||||
'General' => MetaModel::GetClasses('structure'),
|
||||
'Documentation' => MetaModel::GetClasses('documentation'),
|
||||
'Configuration' => MetaModel::GetClasses('configmgmt'),
|
||||
'Incident' => MetaModel::GetClasses('incidentmgmt'),
|
||||
'Problem' => MetaModel::GetClasses('problemmgmt'),
|
||||
'Change' => MetaModel::GetClasses('changemgmt'),
|
||||
'Service' => MetaModel::GetClasses('servicemgmt'),
|
||||
'Call' => MetaModel::GetClasses('requestmgmt'),
|
||||
'KnownError' => MetaModel::GetClasses('knownerrormgmt'),
|
||||
);
|
||||
|
||||
self::$m_aProfiles = array(
|
||||
'Configuration Manager' => array(
|
||||
'description' => 'Person in charge of the documentation of the managed CIs',
|
||||
'write_modules' => 'General,Documentation,Configuration',
|
||||
'stimuli' => array(
|
||||
//'bizServer' => 'none',
|
||||
//'bizContract' => 'none',
|
||||
//'bizIncidentTicket' => 'none',
|
||||
//'bizChangeTicket' => 'any',
|
||||
),
|
||||
),
|
||||
'Service Desk Agent' => array(
|
||||
'description' => 'Person in charge of creating incident reports',
|
||||
'write_modules' => 'Incident,Call',
|
||||
'stimuli' => array(
|
||||
'Incident' => 'ev_assign',
|
||||
'UserRequest' => 'ev_assign',
|
||||
),
|
||||
),
|
||||
'Support Agent' => array(
|
||||
'description' => 'Person analyzing and solving the current incidents',
|
||||
'write_modules' => 'Incident',
|
||||
'stimuli' => array(
|
||||
'Incident' => 'ev_assign,ev_reassign,ev_resolve,ev_close',
|
||||
'UserRequest' => 'ev_assign,ev_reassign,ev_resolve,ev_close,ev_freeze',
|
||||
),
|
||||
),
|
||||
'Problem Manager' => array(
|
||||
'description' => 'Person analyzing and solving the current problems',
|
||||
'write_modules' => 'Problem,KnownError',
|
||||
'stimuli' => array(
|
||||
'Problem' => 'ev_assign,ev_reassign,ev_resolve,ev_close',
|
||||
),
|
||||
),
|
||||
|
||||
'Change Implementor' => array(
|
||||
'description' => 'Person executing the changes',
|
||||
'write_modules' => 'Change',
|
||||
'stimuli' => array(
|
||||
'NormalChange' => 'ev_plan,ev_replan,ev_implement,ev_monitor',
|
||||
'EmergencyChange' => 'ev_plan,ev_replan,ev_implement,ev_monitor',
|
||||
'RoutineChange' => 'ev_plan,ev_replan,ev_implement,ev_monitor',
|
||||
),
|
||||
),
|
||||
'Change Supervisor' => array(
|
||||
'description' => 'Person responsible for the overall change execution',
|
||||
'write_modules' => 'Change',
|
||||
'stimuli' => array(
|
||||
'NormalChange' => 'ev_validate,ev_reject,ev_assign,ev_reopen,ev_finish',
|
||||
'EmergencyChange' => 'ev_assign,ev_reopen,ev_finish',
|
||||
'RoutineChange' => 'ev_assign,ev_reopen,ev_finish',
|
||||
),
|
||||
),
|
||||
'Change Approver' => array(
|
||||
'description' => 'Person who could be impacted by some changes',
|
||||
'write_modules' => 'Change',
|
||||
'stimuli' => array(
|
||||
'NormalChange' => 'ev_approve,ev_notapprove',
|
||||
'EmergencyChange' => 'ev_approve,ev_notapprove',
|
||||
'RoutineChange' => 'none',
|
||||
),
|
||||
),
|
||||
'Service Manager' => array(
|
||||
'description' => 'Person responsible for the service delivered to the [internal] customer',
|
||||
'write_modules' => 'Service',
|
||||
'stimuli' => array(
|
||||
),
|
||||
),
|
||||
'Document author' => array(
|
||||
'description' => 'Any person who could contribute to documentation',
|
||||
'write_modules' => 'Documentation',
|
||||
'stimuli' => array(
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
UserRights::SelectModule('UserRightsProfile');
|
||||
|
||||
|
||||
@@ -658,6 +658,16 @@ class UserRightsProjection extends UserRightsAddOnAPI
|
||||
// See implementation of userrightsprofile
|
||||
}
|
||||
|
||||
public function Setup()
|
||||
{
|
||||
SetupProfiles::ComputeITILProfiles();
|
||||
//SetupProfiles::ComputeBasicProfiles();
|
||||
|
||||
SetupProfiles::DoCreateDimensions();
|
||||
SetupProfiles::DoCreateProfiles();
|
||||
return true;
|
||||
}
|
||||
|
||||
public function Init()
|
||||
{
|
||||
MetaModel::RegisterPlugin('userrights', 'ACbyProfile', array($this, 'CacheData'));
|
||||
@@ -1246,6 +1256,343 @@ exit;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Create simple profiles into our user management model:
|
||||
// - administrator
|
||||
// - readers
|
||||
// - contributors
|
||||
//
|
||||
class SetupProfiles
|
||||
{
|
||||
protected static $m_aDimensions = array(
|
||||
'organization' => array(
|
||||
'description' => '',
|
||||
'type' => 'Organization',
|
||||
),
|
||||
);
|
||||
|
||||
protected static $m_aActions = array(
|
||||
UR_ACTION_READ => 'Read',
|
||||
UR_ACTION_MODIFY => 'Modify',
|
||||
UR_ACTION_DELETE => 'Delete',
|
||||
UR_ACTION_BULK_READ => 'Bulk Read',
|
||||
UR_ACTION_BULK_MODIFY => 'Bulk Modify',
|
||||
UR_ACTION_BULK_DELETE => 'Bulk Delete',
|
||||
);
|
||||
|
||||
// Note: It is possible to specify the same class in several modules
|
||||
//
|
||||
protected static $m_aModules = array();
|
||||
protected static $m_aProfiles = array();
|
||||
|
||||
protected static function DoCreateClassProjection($iDimension, $sClass)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_ClassProjection");
|
||||
$oNewObj->Set('dimensionid', $iDimension);
|
||||
$oNewObj->Set('class', $sClass);
|
||||
$oNewObj->Set('attribute', '');
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
protected static function DoCreateDimension($sName, $aDimensionData)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_Dimensions");
|
||||
$oNewObj->Set('name', $sName);
|
||||
$oNewObj->Set('description', $aDimensionData['description']);
|
||||
$oNewObj->Set('type', $aDimensionData['type']);
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
|
||||
protected static function DoCreateProfileProjection($iProfile, $iDimension)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_ProfileProjection");
|
||||
$oNewObj->Set('profileid', $iProfile);
|
||||
$oNewObj->Set('dimensionid', $iDimension);
|
||||
$oNewObj->Set('value', '<any>');
|
||||
$oNewObj->Set('attribute', '');
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
|
||||
protected static function DoCreateActionGrant($iProfile, $iAction, $sClass, $bPermission = true)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_ActionGrant");
|
||||
$oNewObj->Set('profileid', $iProfile);
|
||||
$oNewObj->Set('permission', $bPermission ? 'yes' : 'no');
|
||||
$oNewObj->Set('class', $sClass);
|
||||
$oNewObj->Set('action', self::$m_aActions[$iAction]);
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
protected static function DoCreateStimulusGrant($iProfile, $sStimulusCode, $sClass)
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_StimulusGrant");
|
||||
$oNewObj->Set('profileid', $iProfile);
|
||||
$oNewObj->Set('permission', 'yes');
|
||||
$oNewObj->Set('class', $sClass);
|
||||
$oNewObj->Set('stimulus', $sStimulusCode);
|
||||
$iId = $oNewObj->DBInsertNoReload();
|
||||
return $iId;
|
||||
}
|
||||
|
||||
protected static function DoCreateAdminProfile()
|
||||
{
|
||||
$oNewObj = MetaModel::NewObject("URP_Profiles");
|
||||
$oNewObj->Set('name', 'Administrator');
|
||||
$oNewObj->Set('description', 'Has the rights on everything (bypassing any control)');
|
||||
$iNewId = $oNewObj->DBInsertNoReload();
|
||||
if ($iNewId != ADMIN_PROFILE_ID)
|
||||
{
|
||||
throw new CoreException('Admin profile could not be created with its standard id', array('requested'=>ADMIN_PROFILE_ID, 'obtained'=>$iNewId));
|
||||
}
|
||||
}
|
||||
|
||||
protected static function DoCreateOneProfile($sName, $aProfileData)
|
||||
{
|
||||
$sDescription = $aProfileData['description'];
|
||||
if (strlen(trim($aProfileData['write_modules'])) == 0)
|
||||
{
|
||||
$aWriteModules = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$aWriteModules = explode(',', trim($aProfileData['write_modules']));
|
||||
}
|
||||
$aStimuli = $aProfileData['stimuli'];
|
||||
|
||||
$oNewObj = MetaModel::NewObject("URP_Profiles");
|
||||
$oNewObj->Set('name', $sName);
|
||||
$oNewObj->Set('description', $sDescription);
|
||||
$iProfile = $oNewObj->DBInsertNoReload();
|
||||
|
||||
// Project in every dimension
|
||||
//
|
||||
$oDimensionSet = new DBObjectSet(DBObjectSearch::FromOQL_AllData("SELECT URP_Dimensions"));
|
||||
while ($oDimension = $oDimensionSet->Fetch())
|
||||
{
|
||||
$iDimension = $oDimension->GetKey();
|
||||
self::DoCreateProfileProjection($iProfile, $iDimension);
|
||||
}
|
||||
|
||||
// Grant read rights for everything
|
||||
//
|
||||
foreach (MetaModel::GetClasses('bizmodel') as $sClass)
|
||||
{
|
||||
// Skip non instantiable classes
|
||||
if (MetaModel::IsAbstract($sClass)) continue;
|
||||
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_READ, $sClass);
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_BULK_READ, $sClass);
|
||||
}
|
||||
|
||||
// Grant write for given modules
|
||||
// Start by compiling the information, because some modules may overlap
|
||||
$aWriteableClasses = array();
|
||||
foreach ($aWriteModules as $sModule)
|
||||
{
|
||||
//$oPage->p('Granting write access for the module"'.$sModule.'" - '.count(self::$m_aModules[$sModule]).' classes');
|
||||
foreach (self::$m_aModules[$sModule] as $sClass)
|
||||
{
|
||||
$aWriteableClasses[$sClass] = true;
|
||||
}
|
||||
}
|
||||
foreach ($aWriteableClasses as $sClass => $foo)
|
||||
{
|
||||
// Skip non instantiable classes
|
||||
if (MetaModel::IsAbstract($sClass)) continue;
|
||||
|
||||
if (!MetaModel::IsValidClass($sClass))
|
||||
{
|
||||
throw new CoreException("Invalid class name '$sClass'");
|
||||
}
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_MODIFY, $sClass);
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_DELETE, $sClass);
|
||||
self::DoCreateActionGrant($iProfile, UR_ACTION_BULK_MODIFY, $sClass);
|
||||
// By default, do not allow bulk deletion operations for standard users
|
||||
// self::DoCreateActionGrant($iProfile, UR_ACTION_BULK_DELETE, $sClass);
|
||||
}
|
||||
|
||||
// Grant stimuli for given classes
|
||||
foreach ($aStimuli as $sClass => $sAllowedStimuli)
|
||||
{
|
||||
if (!MetaModel::IsValidClass($sClass))
|
||||
{
|
||||
// Could be a class defined in a module that wasn't installed
|
||||
continue;
|
||||
//throw new CoreException("Invalid class name '$sClass'");
|
||||
}
|
||||
|
||||
if ($sAllowedStimuli == 'any')
|
||||
{
|
||||
$aAllowedStimuli = array_keys(MetaModel::EnumStimuli($sClass));
|
||||
}
|
||||
elseif ($sAllowedStimuli == 'none')
|
||||
{
|
||||
$aAllowedStimuli = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$aAllowedStimuli = explode(',', $sAllowedStimuli);
|
||||
}
|
||||
foreach ($aAllowedStimuli as $sStimulusCode)
|
||||
{
|
||||
self::DoCreateStimulusGrant($iProfile, $sStimulusCode, $sClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function DoCreateDimensions()
|
||||
{
|
||||
$aClass = MetaModel::GetClasses();
|
||||
foreach(self::$m_aDimensions as $sName => $aDimensionData)
|
||||
{
|
||||
$iDimension = self::DoCreateDimension($sName, $aDimensionData);
|
||||
|
||||
foreach($aClass as $sClass)
|
||||
{
|
||||
// Skip non instantiable classes
|
||||
if (MetaModel::IsAbstract($sClass)) continue;
|
||||
|
||||
if (!MetaModel::IsValidClass($sClass))
|
||||
{
|
||||
throw new CoreException("Invalid class name '$sClass'");
|
||||
}
|
||||
self::DoCreateClassProjection($iDimension, $sClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function DoCreateProfiles()
|
||||
{
|
||||
self::DoCreateAdminProfile();
|
||||
|
||||
foreach(self::$m_aProfiles as $sName => $aProfileData)
|
||||
{
|
||||
self::DoCreateOneProfile($sName, $aProfileData);
|
||||
}
|
||||
}
|
||||
|
||||
public static function ComputeBasicProfiles()
|
||||
{
|
||||
// In this profiling scheme, one single module represents all the classes
|
||||
//
|
||||
self::$m_aModules = array(
|
||||
'UserData' => MetaModel::GetClasses('bizmodel'),
|
||||
);
|
||||
|
||||
self::$m_aProfiles = array(
|
||||
'Reader' => array(
|
||||
'description' => 'Person having a ready-only access to the data',
|
||||
'write_modules' => '',
|
||||
'stimuli' => array(
|
||||
),
|
||||
),
|
||||
'Writer' => array(
|
||||
'description' => 'Contributor to the contents (read + write access)',
|
||||
'write_modules' => 'UserData',
|
||||
'stimuli' => array(
|
||||
// any class => 'any'
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public static function ComputeITILProfiles()
|
||||
{
|
||||
// In this profiling scheme, modules are based on ITIL recommendations
|
||||
//
|
||||
self::$m_aModules = array(
|
||||
/*
|
||||
'WriteModule' => array(
|
||||
'someclass',
|
||||
'anotherclass',
|
||||
),
|
||||
*/
|
||||
'General' => MetaModel::GetClasses('structure'),
|
||||
'Documentation' => MetaModel::GetClasses('documentation'),
|
||||
'Configuration' => MetaModel::GetClasses('configmgmt'),
|
||||
'Incident' => MetaModel::GetClasses('incidentmgmt'),
|
||||
'Problem' => MetaModel::GetClasses('problemmgmt'),
|
||||
'Change' => MetaModel::GetClasses('changemgmt'),
|
||||
'Service' => MetaModel::GetClasses('servicemgmt'),
|
||||
'Call' => MetaModel::GetClasses('requestmgmt'),
|
||||
'KnownError' => MetaModel::GetClasses('knownerrormgmt'),
|
||||
);
|
||||
|
||||
self::$m_aProfiles = array(
|
||||
'Configuration Manager' => array(
|
||||
'description' => 'Person in charge of the documentation of the managed CIs',
|
||||
'write_modules' => 'General,Documentation,Configuration',
|
||||
'stimuli' => array(
|
||||
//'bizServer' => 'none',
|
||||
//'bizContract' => 'none',
|
||||
//'bizIncidentTicket' => 'none',
|
||||
//'bizChangeTicket' => 'any',
|
||||
),
|
||||
),
|
||||
'Service Desk Agent' => array(
|
||||
'description' => 'Person in charge of creating incident reports',
|
||||
'write_modules' => 'Incident,Call',
|
||||
'stimuli' => array(
|
||||
'Incident' => 'ev_assign',
|
||||
'UserRequest' => 'ev_assign',
|
||||
),
|
||||
),
|
||||
'Support Agent' => array(
|
||||
'description' => 'Person analyzing and solving the current incidents or problems',
|
||||
'write_modules' => 'Incident,Problem,KnownError',
|
||||
'stimuli' => array(
|
||||
'Incident' => 'ev_assign,ev_reassign,ev_resolve,ev_close',
|
||||
'UserRequest' => 'ev_assign,ev_reassign,ev_resolve,ev_close,ev_freeze',
|
||||
),
|
||||
),
|
||||
'Change Implementor' => array(
|
||||
'description' => 'Person executing the changes',
|
||||
'write_modules' => 'Change',
|
||||
'stimuli' => array(
|
||||
'NormalChange' => 'ev_plan,ev_replan,ev_implement,ev_monitor',
|
||||
'EmergencyChange' => 'ev_plan,ev_replan,ev_implement,ev_monitor',
|
||||
'RoutineChange' => 'ev_plan,ev_replan,ev_implement,ev_monitor',
|
||||
),
|
||||
),
|
||||
'Change Supervisor' => array(
|
||||
'description' => 'Person responsible for the overall change execution',
|
||||
'write_modules' => 'Change',
|
||||
'stimuli' => array(
|
||||
'NormalChange' => 'ev_validate,ev_reject,ev_assign,ev_reopen,ev_finish',
|
||||
'EmergencyChange' => 'ev_assign,ev_reopen,ev_finish',
|
||||
'RoutineChange' => 'ev_assign,ev_reopen,ev_finish',
|
||||
),
|
||||
),
|
||||
'Change Approver' => array(
|
||||
'description' => 'Person who could be impacted by some changes',
|
||||
'write_modules' => 'Change',
|
||||
'stimuli' => array(
|
||||
'NormalChange' => 'ev_approve,ev_notapprove',
|
||||
'EmergencyChange' => 'ev_approve,ev_notapprove',
|
||||
'RoutineChange' => 'none',
|
||||
),
|
||||
),
|
||||
'Service Manager' => array(
|
||||
'description' => 'Person responsible for the service delivered to the [internal] customer',
|
||||
'write_modules' => 'Service',
|
||||
'stimuli' => array(
|
||||
),
|
||||
),
|
||||
'Document author' => array(
|
||||
'description' => 'Any person who could contribute to documentation',
|
||||
'write_modules' => 'Documentation',
|
||||
'stimuli' => array(
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
UserRights::SelectModule('UserRightsProjection');
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/webpage.class.inc.php");
|
||||
require_once("../application/webpage.class.inc.php");
|
||||
|
||||
class ajax_page extends WebPage
|
||||
{
|
||||
@@ -33,9 +33,6 @@ class ajax_page extends WebPage
|
||||
* @var Hash
|
||||
*/
|
||||
protected $m_sReadyScript;
|
||||
protected $m_sCurrentTab;
|
||||
protected $m_sCurrentTabContainer;
|
||||
protected $m_aTabs;
|
||||
|
||||
/**
|
||||
* constructor for the web page
|
||||
@@ -47,44 +44,8 @@ class ajax_page extends WebPage
|
||||
$this->m_sReadyScript = "";
|
||||
$this->add_header("Content-type: text/html; charset=utf-8");
|
||||
$this->add_header("Cache-control: no-cache");
|
||||
$this->m_sCurrentTabContainer = '';
|
||||
$this->m_sCurrentTab = '';
|
||||
$this->m_aTabs = array();
|
||||
}
|
||||
|
||||
public function AddTabContainer($sTabContainer, $sPrefix = '')
|
||||
{
|
||||
$this->m_aTabs[$sTabContainer] = array('content' =>'', 'prefix' => $sPrefix);
|
||||
$this->add("\$Tabs:$sTabContainer\$");
|
||||
}
|
||||
|
||||
public function AddToTab($sTabContainer, $sTabLabel, $sHtml)
|
||||
{
|
||||
if (!isset($this->m_aTabs[$sTabContainer]['content'][$sTabLabel]))
|
||||
{
|
||||
// Set the content of the tab
|
||||
$this->m_aTabs[$sTabContainer]['content'][$sTabLabel] = $sHtml;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Append to the content of the tab
|
||||
$this->m_aTabs[$sTabContainer]['content'][$sTabLabel] .= $sHtml;
|
||||
}
|
||||
}
|
||||
|
||||
public function SetCurrentTabContainer($sTabContainer = '')
|
||||
{
|
||||
$sPreviousTabContainer = $this->m_sCurrentTabContainer;
|
||||
$this->m_sCurrentTabContainer = $sTabContainer;
|
||||
return $sPreviousTabContainer;
|
||||
}
|
||||
|
||||
public function SetCurrentTab($sTabLabel = '')
|
||||
{
|
||||
$sPreviousTab = $this->m_sCurrentTab;
|
||||
$this->m_sCurrentTab = $sTabLabel;
|
||||
return $sPreviousTab;
|
||||
}
|
||||
|
||||
/**
|
||||
* Echoes the content of the whole page
|
||||
@@ -96,88 +57,14 @@ class ajax_page extends WebPage
|
||||
{
|
||||
header($s_header);
|
||||
}
|
||||
|
||||
if (count($this->m_aTabs) > 0)
|
||||
{
|
||||
$this->add_ready_script(
|
||||
<<<EOF
|
||||
// The "tab widgets" to handle.
|
||||
var tabs = $('div[id^=tabbedContent]');
|
||||
|
||||
// This selector will be reused when selecting actual tab widget A elements.
|
||||
var tab_a_selector = 'ul.ui-tabs-nav a';
|
||||
|
||||
// Enable tabs on all tab widgets. The `event` property must be overridden so
|
||||
// that the tabs aren't changed on click, and any custom event name can be
|
||||
// specified. Note that if you define a callback for the 'select' event, it
|
||||
// will be executed for the selected tab whenever the hash changes.
|
||||
tabs.tabs({ event: 'change' });
|
||||
|
||||
// Define our own click handler for the tabs, overriding the default.
|
||||
tabs.find( tab_a_selector ).click(function()
|
||||
{
|
||||
var state = {};
|
||||
|
||||
// Get the id of this tab widget.
|
||||
var id = $(this).closest( 'div[id^=tabbedContent]' ).attr( 'id' );
|
||||
|
||||
// Get the index of this tab.
|
||||
var idx = $(this).parent().prevAll().length;
|
||||
|
||||
// Set the state!
|
||||
state[ id ] = idx;
|
||||
$.bbq.pushState( state );
|
||||
});
|
||||
EOF
|
||||
);
|
||||
}
|
||||
// Render the tabs in the page (if any)
|
||||
foreach($this->m_aTabs as $sTabContainerName => $aTabContainer)
|
||||
{
|
||||
$sTabs = '';
|
||||
$m_aTabs = $aTabContainer['content'];
|
||||
$sPrefix = $aTabContainer['prefix'];
|
||||
$container_index = 0;
|
||||
if (count($m_aTabs) > 0)
|
||||
{
|
||||
$sTabs = "<!-- tabs -->\n<div id=\"tabbedContent_{$sPrefix}{$container_index}\" class=\"light\">\n";
|
||||
$sTabs .= "<ul>\n";
|
||||
// Display the unordered list that will be rendered as the tabs
|
||||
$i = 0;
|
||||
foreach($m_aTabs as $sTabName => $sTabContent)
|
||||
{
|
||||
$sTabs .= "<li><a href=\"#tab_{$sPrefix}$i\" class=\"tab\"><span>".htmlentities($sTabName, ENT_QUOTES, 'UTF-8')."</span></a></li>\n";
|
||||
$i++;
|
||||
}
|
||||
$sTabs .= "</ul>\n";
|
||||
// Now add the content of the tabs themselves
|
||||
$i = 0;
|
||||
foreach($m_aTabs as $sTabName => $sTabContent)
|
||||
{
|
||||
$sTabs .= "<div id=\"tab_{$sPrefix}$i\">".$sTabContent."</div>\n";
|
||||
$i++;
|
||||
}
|
||||
$sTabs .= "</div>\n<!-- end of tabs-->\n";
|
||||
}
|
||||
$this->s_content = str_replace("\$Tabs:$sTabContainerName\$", $sTabs, $this->s_content);
|
||||
$container_index++;
|
||||
}
|
||||
|
||||
$s_captured_output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $this->s_content;
|
||||
echo $this->s_deferred_content;
|
||||
if (count($this->a_scripts) > 0)
|
||||
{
|
||||
echo "<script type=\"text/javascript\">\n";
|
||||
echo implode("\n", $this->a_scripts);
|
||||
echo "\n</script>\n";
|
||||
}
|
||||
if (!empty($this->m_sReadyScript))
|
||||
{
|
||||
echo "<script type=\"text/javascript\">\n";
|
||||
echo "<script>\n";
|
||||
echo $this->m_sReadyScript; // Ready Scripts are output as simple scripts
|
||||
echo "\n</script>\n";
|
||||
echo "</script>\n";
|
||||
}
|
||||
if (trim($s_captured_output) != "")
|
||||
{
|
||||
@@ -194,18 +81,6 @@ EOF
|
||||
public function small_p($sText)
|
||||
{
|
||||
}
|
||||
|
||||
public function add($sHtml)
|
||||
{
|
||||
if (!empty($this->m_sCurrentTabContainer) && !empty($this->m_sCurrentTab))
|
||||
{
|
||||
$this->AddToTab($this->m_sCurrentTabContainer, $this->m_sCurrentTab, $sHtml);
|
||||
}
|
||||
else
|
||||
{
|
||||
parent::add($sHtml);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a script to be executed when the DOM is ready (typical JQuery use)
|
||||
@@ -219,17 +94,6 @@ EOF
|
||||
// considering that at this time everything in the page is "ready"...
|
||||
$this->m_sReadyScript .= $sScript;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cannot be called in this context, since Ajax pages do not share
|
||||
* any context with the calling page !!
|
||||
*/
|
||||
public function GetUniqueId()
|
||||
{
|
||||
assert(false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/applicationcontext.class.inc.php');
|
||||
require_once(APPROOT.'/application/cmdbabstract.class.inc.php');
|
||||
require_once(APPROOT.'/application/displayblock.class.inc.php');
|
||||
require_once(APPROOT.'/application/audit.category.class.inc.php');
|
||||
require_once(APPROOT.'/application/audit.rule.class.inc.php');
|
||||
//require_once(APPROOT.'/application/menunode.class.inc.php');
|
||||
require_once(APPROOT.'/application/utils.inc.php');
|
||||
require_once('../application/applicationcontext.class.inc.php');
|
||||
require_once('../application/cmdbabstract.class.inc.php');
|
||||
require_once('../application/displayblock.class.inc.php');
|
||||
require_once('../application/audit.category.class.inc.php');
|
||||
require_once('../application/audit.rule.class.inc.php');
|
||||
//require_once('../application/menunode.class.inc.php');
|
||||
require_once('../application/utils.inc.php');
|
||||
|
||||
class ApplicationException extends CoreException
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/utils.inc.php");
|
||||
require_once("../application/utils.inc.php");
|
||||
/**
|
||||
* Helper class to store and manipulate the parameters that make the application's context
|
||||
*
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/cmdbabstract.class.inc.php');
|
||||
require_once('../application/cmdbabstract.class.inc.php');
|
||||
|
||||
class AuditCategory extends cmdbAbstractObject
|
||||
{
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/audit.category.class.inc.php');
|
||||
require_once('../application/audit.category.class.inc.php');
|
||||
|
||||
class AuditRule extends cmdbAbstractObject
|
||||
{
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/webpage.class.inc.php");
|
||||
require_once("../application/webpage.class.inc.php");
|
||||
|
||||
class CLIPage
|
||||
{
|
||||
@@ -46,11 +46,6 @@ class CLIPage
|
||||
echo $sText."\n";
|
||||
}
|
||||
|
||||
public function pre($sText)
|
||||
{
|
||||
echo $sText."\n";
|
||||
}
|
||||
|
||||
public function add_comment($sText)
|
||||
{
|
||||
echo "#".$sText."\n";
|
||||
|
||||
@@ -31,13 +31,11 @@ define('HILIGHT_CLASS_WARNING', 'orange');
|
||||
define('HILIGHT_CLASS_OK', 'green');
|
||||
define('HILIGHT_CLASS_NONE', '');
|
||||
|
||||
require_once(APPROOT.'/core/cmdbobject.class.inc.php');
|
||||
require_once(APPROOT.'/application/utils.inc.php');
|
||||
require_once(APPROOT.'/application/applicationcontext.class.inc.php');
|
||||
require_once(APPROOT.'/application/ui.linkswidget.class.inc.php');
|
||||
require_once(APPROOT.'/application/ui.passwordwidget.class.inc.php');
|
||||
require_once(APPROOT.'/application/ui.extkeywidget.class.inc.php');
|
||||
require_once(APPROOT.'/application/ui.htmleditorwidget.class.inc.php');
|
||||
require_once('../core/cmdbobject.class.inc.php');
|
||||
require_once('../application/utils.inc.php');
|
||||
require_once('../application/applicationcontext.class.inc.php');
|
||||
require_once('../application/ui.linkswidget.class.inc.php');
|
||||
require_once('../application/ui.passwordwidget.class.inc.php');
|
||||
|
||||
abstract class cmdbAbstractObject extends CMDBObject
|
||||
{
|
||||
@@ -201,7 +199,7 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$sLinkedClass = $oAttDef->GetLinkedClass();
|
||||
$oLinkingAttDef = MetaModel::GetAttributeDef($sLinkedClass, $oAttDef->GetExtKeyToRemote());
|
||||
$sTargetClass = $oLinkingAttDef->GetTargetClass();
|
||||
$oPage->p(MetaModel::GetClassIcon($sTargetClass)." ".$oAttDef->GetDescription().'<span id="busy_'.$sInputId.'"></span>');
|
||||
$oPage->p(MetaModel::GetClassIcon($sTargetClass)." ".$oAttDef->GetDescription());
|
||||
|
||||
$sValue = $this->Get($sAttCode);
|
||||
$sDisplayValue = $this->GetEditValue($sAttCode);
|
||||
@@ -303,33 +301,13 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
{
|
||||
$oPage->add('<td style="vertical-align:top">');
|
||||
//$aDetails[$sTab][$sColIndex] = array();
|
||||
$sLabel = '';
|
||||
$sPreviousLabel = '';
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
foreach($aFieldsets as $sFieldsetName => $aFields)
|
||||
{
|
||||
if (!empty($sFieldsetName) && ($sFieldsetName[0] != '_'))
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$sLabel = $sFieldsetName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sLabel = '';
|
||||
}
|
||||
if ($sLabel != $sPreviousLabel)
|
||||
{
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sPreviousLabel).'</legend>');
|
||||
}
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
}
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
$sPreviousLabel = $sLabel;
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
|
||||
}
|
||||
foreach($aFields as $sAttCode)
|
||||
{
|
||||
@@ -340,16 +318,11 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$aDetails[$sTab][$sColIndex][] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
|
||||
}
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
}
|
||||
}
|
||||
$oPage->add('</td>');
|
||||
}
|
||||
@@ -411,14 +384,8 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
*/
|
||||
public static function GetDisplaySet(WebPage $oPage, CMDBObjectSet $oSet, $aExtraParams = array())
|
||||
{
|
||||
if (empty($aExtraParams['currentId']))
|
||||
{
|
||||
$iListId = $oPage->GetUniqueId(); // Works only if not in an Ajax page !!
|
||||
}
|
||||
else
|
||||
{
|
||||
$iListId = $aExtraParams['currentId'];
|
||||
}
|
||||
static $iListId = 0;
|
||||
$iListId++;
|
||||
|
||||
// Initialize and check the parameters
|
||||
$bViewLink = isset($aExtraParams['view_link']) ? $aExtraParams['view_link'] : true;
|
||||
@@ -519,9 +486,9 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$iMaxObjects = -1;
|
||||
if ($bDisplayLimit && $bTruncated)
|
||||
{
|
||||
if ($oSet->Count() > MetaModel::GetConfig()->GetMaxDisplayLimit())
|
||||
if ($oSet->Count() > utils::GetConfig()->GetMaxDisplayLimit())
|
||||
{
|
||||
$iMaxObjects = MetaModel::GetConfig()->GetMinDisplayLimit();
|
||||
$iMaxObjects = utils::GetConfig()->GetMinDisplayLimit();
|
||||
$oSet->SetLimit($iMaxObjects);
|
||||
}
|
||||
}
|
||||
@@ -558,46 +525,46 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
}
|
||||
$sHtml .= '<table class="listContainer">';
|
||||
$sColspan = '';
|
||||
// if (isset($aExtraParams['block_id']))
|
||||
// {
|
||||
// $divId = $aExtraParams['block_id'];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// $divId = 'missingblockid';
|
||||
// }
|
||||
if (isset($aExtraParams['block_id']))
|
||||
{
|
||||
$divId = $aExtraParams['block_id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$divId = 'missingblockid';
|
||||
}
|
||||
$sFilter = $oSet->GetFilter()->serialize();
|
||||
$iMinDisplayLimit = MetaModel::GetConfig()->GetMinDisplayLimit();
|
||||
$iMinDisplayLimit = utils::GetConfig()->GetMinDisplayLimit();
|
||||
$sCollapsedLabel = Dict::Format('UI:TruncatedResults', $iMinDisplayLimit, $oSet->Count());
|
||||
$sLinkLabel = Dict::S('UI:DisplayAll');
|
||||
foreach($oSet->GetFilter()->GetInternalParams() as $sName => $sValue)
|
||||
{
|
||||
$aExtraParams['query_params'][$sName] = $sValue;
|
||||
}
|
||||
if ($bDisplayLimit && $bTruncated && ($oSet->Count() > MetaModel::GetConfig()->GetMaxDisplayLimit()))
|
||||
if ($bDisplayLimit && $bTruncated && ($oSet->Count() > utils::GetConfig()->GetMaxDisplayLimit()))
|
||||
{
|
||||
// list truncated
|
||||
$aExtraParams['display_limit'] = true;
|
||||
$sHtml .= '<tr class="containerHeader"><td><span id="lbl_'.$iListId.'">'.$sCollapsedLabel.'</span> <a class="truncated" id="trc_'.$iListId.'">'.$sLinkLabel.'</a></td><td>';
|
||||
$sHtml .= '<tr class="containerHeader"><td><span id="lbl_'.$divId.'">'.$sCollapsedLabel.'</span> <a class="truncated" id="trc_'.$divId.'">'.$sLinkLabel.'</a></td><td>';
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
$('#$iListId table.listResults').addClass('truncated');
|
||||
$('#$iListId table.listResults tr:last td').addClass('truncated');
|
||||
$('#$divId table.listResults').addClass('truncated');
|
||||
$('#$divId table.listResults tr:last td').addClass('truncated');
|
||||
EOF
|
||||
);
|
||||
}
|
||||
else if ($bDisplayLimit && !$bTruncated && ($oSet->Count() > MetaModel::GetConfig()->GetMaxDisplayLimit()))
|
||||
else if ($bDisplayLimit && !$bTruncated && ($oSet->Count() > utils::GetConfig()->GetMaxDisplayLimit()))
|
||||
{
|
||||
// Collapsible list
|
||||
$aExtraParams['display_limit'] = true;
|
||||
$sHtml .= '<tr class="containerHeader"><td><span id="lbl_'.$iListId.'">'.Dict::Format('UI:CountOfResults', $oSet->Count()).'</span><a class="truncated" id="trc_'.$iListId.'">'.Dict::S('UI:CollapseList').'</a></td><td>';
|
||||
$sHtml .= '<tr class="containerHeader"><td><span id="lbl_'.$divId.'">'.Dict::Format('UI:CountOfResults', $oSet->Count()).'</span><a class="truncated" id="trc_'.$divId.'">'.Dict::S('UI:CollapseList').'</a></td><td>';
|
||||
}
|
||||
$aExtraParams['truncated'] = false; // To expand the full list when clicked
|
||||
$sExtraParamsExpand = addslashes(str_replace('"', "'", json_encode($aExtraParams))); // JSON encode, change the style of the quotes and escape them
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
// Handle truncated lists
|
||||
$('#trc_$iListId').click(function()
|
||||
$('#trc_$divId').click(function()
|
||||
{
|
||||
var state = {};
|
||||
|
||||
@@ -614,15 +581,15 @@ EOF
|
||||
$.bbq.pushState( state );
|
||||
$(this).trigger(state[this.id]);
|
||||
});
|
||||
$('#trc_$iListId').unbind('open');
|
||||
$('#trc_$iListId').bind('open', function()
|
||||
|
||||
$('#trc_$divId').bind('open', function()
|
||||
{
|
||||
ReloadTruncatedList('$iListId', '$sFilter', '$sExtraParamsExpand');
|
||||
ReloadTruncatedList('$divId', '$sFilter', '$sExtraParamsExpand');
|
||||
});
|
||||
$('#trc_$iListId').unbind('close');
|
||||
$('#trc_$iListId').bind('close', function()
|
||||
|
||||
$('#trc_$divId').bind('close', function()
|
||||
{
|
||||
TruncateList('$iListId', $iMinDisplayLimit, '$sCollapsedLabel', '$sLinkLabel');
|
||||
TruncateList('$divId', $iMinDisplayLimit, '$sCollapsedLabel', '$sLinkLabel');
|
||||
});
|
||||
EOF
|
||||
);
|
||||
@@ -636,7 +603,7 @@ EOF
|
||||
//$aMenuExtraParams['linkage'] = $sLinkageAttribute;
|
||||
$aMenuExtraParams = $aExtraParams;
|
||||
}
|
||||
$sHtml .= $oMenuBlock->GetRenderContent($oPage, $aMenuExtraParams, $iListId);
|
||||
$sHtml .= $oMenuBlock->GetRenderContent($oPage, $aMenuExtraParams);
|
||||
$sHtml .= '</td></tr>';
|
||||
}
|
||||
$sHtml .= "<tr><td $sColspan>";
|
||||
@@ -689,9 +656,9 @@ EOF
|
||||
$iMaxObjects = -1;
|
||||
if ($bDisplayLimit)
|
||||
{
|
||||
if ($oSet->Count() > MetaModel::GetConfig()->GetMaxDisplayLimit())
|
||||
if ($oSet->Count() > utils::GetConfig()->GetMaxDisplayLimit())
|
||||
{
|
||||
$iMaxObjects = MetaModel::GetConfig()->GetMinDisplayLimit();
|
||||
$iMaxObjects = utils::GetConfig()->GetMinDisplayLimit();
|
||||
}
|
||||
}
|
||||
while (($aObjects = $oSet->FetchAssoc()) && ($iMaxObjects != 0))
|
||||
@@ -722,14 +689,14 @@ EOF
|
||||
{
|
||||
$aMenuExtraParams = $aExtraParams;
|
||||
}
|
||||
if ($bDisplayLimit && ($oSet->Count() > MetaModel::GetConfig()->GetMaxDisplayLimit()))
|
||||
if ($bDisplayLimit && ($oSet->Count() > utils::GetConfig()->GetMaxDisplayLimit()))
|
||||
{
|
||||
// list truncated
|
||||
$divId = $aExtraParams['block_id'];
|
||||
$sFilter = $oSet->GetFilter()->serialize();
|
||||
$aExtraParams['display_limit'] = false; // To expand the full list
|
||||
$sExtraParams = addslashes(str_replace('"', "'", json_encode($aExtraParams))); // JSON encode, change the style of the quotes and escape them
|
||||
$sHtml .= '<tr class="containerHeader"><td>'.Dict::Format('UI:TruncatedResults', MetaModel::GetConfig()->GetMinDisplayLimit(), $oSet->Count()).' <a href="Javascript:ReloadTruncatedList(\''.$divId.'\', \''.$sFilter.'\', \''.$sExtraParams.'\');">'.Dict::S('UI:DisplayAll').'</a></td><td>';
|
||||
$sHtml .= '<tr class="containerHeader"><td>'.Dict::Format('UI:TruncatedResults', utils::GetConfig()->GetMinDisplayLimit(), $oSet->Count()).' <a href="Javascript:ReloadTruncatedList(\''.$divId.'\', \''.$sFilter.'\', \''.$sExtraParams.'\');">'.Dict::S('UI:DisplayAll').'</a></td><td>';
|
||||
$oPage->add_ready_script("$('#{$divId} table.listResults').addClass('truncated');");
|
||||
$oPage->add_ready_script("$('#{$divId} table.listResults tr:last td').addClass('truncated');");
|
||||
}
|
||||
@@ -904,12 +871,13 @@ EOF
|
||||
if (isset($aExtraParams['currentId']))
|
||||
{
|
||||
$sSearchFormId = $aExtraParams['currentId'];
|
||||
$iSearchFormId++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$iSearchFormId = $oPage->GetUniqueId();
|
||||
$iSearchFormId++;
|
||||
$sSearchFormId = 'SimpleSearchForm'.$iSearchFormId;
|
||||
$sHtml .= "<div id=\"ds_$sSearchFormId\" class=\"mini_tab{$iSearchFormId}\">\n";
|
||||
$sHtml .= "<div id=\"$sSearchFormId\" class=\"mini_tab{$iSearchFormId}\">\n";
|
||||
}
|
||||
// Check if the current class has some sub-classes
|
||||
if (isset($aExtraParams['baseClass']))
|
||||
@@ -939,7 +907,7 @@ EOF
|
||||
$sClassesCombo = MetaModel::GetName($sClassName);
|
||||
}
|
||||
$oUnlimitedFilter = new DBObjectSearch($sClassName);
|
||||
$sHtml .= "<form id=\"fs_{$sSearchFormId}\" action=\"../pages/UI.php\">\n"; // Don't use $_SERVER['SCRIPT_NAME'] since the form may be called asynchronously (from ajax.php)
|
||||
$sHtml .= "<form id=\"form{$iSearchFormId}\" action=\"../pages/UI.php\">\n"; // Don't use $_SERVER['SCRIPT_NAME'] since the form may be called asynchronously (from ajax.php)
|
||||
$sHtml .= "<h2>".Dict::Format('UI:SearchFor_Class_Objects', $sClassesCombo)."</h2>\n";
|
||||
$index = 0;
|
||||
$sHtml .= "<p>\n";
|
||||
@@ -1057,9 +1025,10 @@ EOF
|
||||
{
|
||||
static $iInputId = 0;
|
||||
$sFieldPrefix = '';
|
||||
$sFormPrefix = isset($aArgs['formPrefix']) ? $aArgs['formPrefix'] : '';
|
||||
$sFieldPrefix = isset($aArgs['prefix']) ? $sFormPrefix.$aArgs['prefix'] : $sFormPrefix;
|
||||
|
||||
if (isset($aArgs['prefix']))
|
||||
{
|
||||
$sFieldPrefix = $aArgs['prefix'];
|
||||
}
|
||||
if (isset($aArgs[$sAttCode]) && empty($value))
|
||||
{
|
||||
// default value passed by the context (either the app context of the operation)
|
||||
@@ -1072,57 +1041,48 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
$iInputId = $oPage->GetUniqueId();
|
||||
$iInputId++;
|
||||
$iId = $iInputId;
|
||||
}
|
||||
|
||||
if (!$oAttDef->IsExternalField())
|
||||
{
|
||||
$bMandatory = 'false';
|
||||
$bMandatory = 0;
|
||||
if ( (!$oAttDef->IsNullAllowed()) || ($iFlags & OPT_ATT_MANDATORY))
|
||||
{
|
||||
$bMandatory = 'true';
|
||||
$bMandatory = 1;
|
||||
}
|
||||
$sValidationField = "<span class=\"form_validation\" id=\"v_{$iId}\"></span>";
|
||||
$sValidationField = "<span id=\"v_{$iId}\"></span>";
|
||||
$sHelpText = $oAttDef->GetHelpOnEdition();
|
||||
$aEventsList = array();
|
||||
$aEventsList = array('validate');
|
||||
switch($oAttDef->GetEditClass())
|
||||
{
|
||||
case 'Date':
|
||||
case 'DateTime':
|
||||
$aEventsList[] ='validate';
|
||||
$aEventsList[] ='keyup';
|
||||
$aEventsList[] ='change';
|
||||
$sHTMLValue = "<input title=\"$sHelpText\" class=\"date-pick\" type=\"text\" size=\"20\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"$value\" id=\"$iId\"/> {$sValidationField}";
|
||||
break;
|
||||
|
||||
case 'Password':
|
||||
$aEventsList[] ='validate';
|
||||
$aEventsList[] ='keyup';
|
||||
$aEventsList[] ='change';
|
||||
$sHTMLValue = "<input title=\"$sHelpText\" type=\"password\" size=\"30\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"$value\" id=\"$iId\"/> {$sValidationField}";
|
||||
break;
|
||||
|
||||
case 'Text':
|
||||
$aEventsList[] ='validate';
|
||||
$aEventsList[] ='keyup';
|
||||
$aEventsList[] ='change';
|
||||
$sHTMLValue = "<table><tr><td><textarea class=\"resizable\" title=\"$sHelpText\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" rows=\"8\" cols=\"40\" id=\"$iId\">$value</textarea></td><td>{$sValidationField}</td></tr></table>";
|
||||
break;
|
||||
|
||||
case 'HTML':
|
||||
$oWidget = new UIHTMLEditorWidget($iId, $sAttCode, $sNameSuffix, $sFieldPrefix, $sHelpText, $sValidationField, $value, $bMandatory);
|
||||
$sHTMLValue = $oWidget->Display($oPage, $aArgs);
|
||||
break;
|
||||
|
||||
|
||||
case 'LinkedSet':
|
||||
$aEventsList[] ='validate';
|
||||
$aEventsList[] ='change';
|
||||
$oWidget = new UILinksWidget($sClass, $sAttCode, $iId, $sNameSuffix, $oAttDef->DuplicatesAllowed());
|
||||
$sHTMLValue = $oWidget->Display($oPage, $value);
|
||||
break;
|
||||
|
||||
case 'Document':
|
||||
$aEventsList[] ='validate';
|
||||
$aEventsList[] ='change';
|
||||
$oDocument = $value; // Value is an ormDocument object
|
||||
$sFileName = '';
|
||||
@@ -1132,60 +1092,67 @@ EOF
|
||||
}
|
||||
$iMaxFileSize = utils::ConvertToBytes(ini_get('upload_max_filesize'));
|
||||
$sHTMLValue = "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$iMaxFileSize\" />\n";
|
||||
$sHTMLValue .= "<input name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" type=\"hidden\" id=\"$iId\" \" value=\"$sFileName\"/>\n";
|
||||
$sHTMLValue .= "<span id=\"name_$iInputId\">$sFileName</span><br/>\n";
|
||||
$sHTMLValue .= "<input title=\"$sHelpText\" name=\"file_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" type=\"file\" id=\"file_$iId\" onChange=\"UpdateFileName('$iId', this.value)\"/> {$sValidationField}\n";
|
||||
$sHTMLValue .= "<input name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" type=\"hidden\" id=\"$iId\" \" value=\"$sFileName\"/>\n";
|
||||
$sHTMLValue .= "<span id=\"name_$iInputId\">$sFileName</span><br/>\n";
|
||||
$sHTMLValue .= "<input title=\"$sHelpText\" name=\"file_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" type=\"file\" id=\"file_$iId\" onChange=\"UpdateFileName('$iId', this.value)\"/> {$sValidationField}\n";
|
||||
break;
|
||||
|
||||
case 'List':
|
||||
// Not editable for now...
|
||||
$sHTMLValue = '';
|
||||
// Not editable for now...
|
||||
$sHTMLValue = '';
|
||||
break;
|
||||
|
||||
case 'One Way Password':
|
||||
$aEventsList[] ='validate';
|
||||
$oWidget = new UIPasswordWidget($sAttCode, $iId, $sNameSuffix);
|
||||
$sHTMLValue = $oWidget->Display($oPage, $aArgs);
|
||||
// Event list & validation is handled directly by the widget
|
||||
$oWidget = new UIPasswordWidget($sAttCode, $iId, $sNameSuffix);
|
||||
$sHTMLValue = $oWidget->Display($oPage, $aArgs);
|
||||
// Event list & validation is handled directly by the widget
|
||||
break;
|
||||
|
||||
case 'ExtKey':
|
||||
$aEventsList[] ='validate';
|
||||
$aEventsList[] ='change';
|
||||
|
||||
$aAllowedValues = MetaModel::GetAllowedValues_att($sClass, $sAttCode, $aArgs);
|
||||
$iFieldSize = $oAttDef->GetMaxSize();
|
||||
$iMaxComboLength = $oAttDef->GetMaximumComboLength();
|
||||
$oWidget = new UIExtKeyWidget($sAttCode, $sClass, $oAttDef->GetLabel(), $aAllowedValues, $value, $iId, $bMandatory, $sNameSuffix, $sFieldPrefix, $sFormPrefix);
|
||||
$sHTMLValue = $oWidget->Display($oPage, $aArgs);
|
||||
break;
|
||||
|
||||
case 'String':
|
||||
default:
|
||||
$aEventsList[] ='validate';
|
||||
// #@# todo - add context information (depending on dimensions)
|
||||
$aAllowedValues = MetaModel::GetAllowedValues_att($sClass, $sAttCode, $aArgs);
|
||||
$iFieldSize = $oAttDef->GetMaxSize();
|
||||
if ($aAllowedValues !== null)
|
||||
{
|
||||
// Discrete list of values, use a SELECT
|
||||
$sHTMLValue = "<select title=\"$sHelpText\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" id=\"$iId\">\n";
|
||||
$sHTMLValue .= "<option value=\"\">".Dict::S('UI:SelectOne')."</option>\n";
|
||||
foreach($aAllowedValues as $key => $display_value)
|
||||
if (count($aAllowedValues) > 50)
|
||||
{
|
||||
if ((count($aAllowedValues) == 1) && ($bMandatory == 'true') )
|
||||
// too many choices, use an autocomplete
|
||||
// The input for the auto complete
|
||||
if ($oAttDef->IsNull($value)) // Null values are displayed as ''
|
||||
{
|
||||
// When there is only once choice, select it by default
|
||||
$sSelected = ' selected';
|
||||
$sDisplayValue = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sSelected = ($value == $key) ? ' selected' : '';
|
||||
}
|
||||
$sHTMLValue .= "<option value=\"$key\"$sSelected>$display_value</option>\n";
|
||||
$sHTMLValue = "<input count=\"".count($aAllowedValues)."\" type=\"text\" id=\"label_$iId\" size=\"30\" maxlength=\"$iFieldSize\" value=\"$sDisplayValue\"/> {$sValidationField}";
|
||||
// another hidden input to store & pass the object's Id
|
||||
$sHTMLValue .= "<input type=\"hidden\" id=\"$iId\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"$value\" />\n";
|
||||
$oPage->add_ready_script("\$('#label_$iId').autocomplete('./ajax.render.php', { scroll:true, minChars:3, formatItem:formatItem, autoFill:true, keyHolder:'#$iId', extraParams:{operation:'autocomplete', sclass:'$sClass',attCode:'".$sAttCode."'}});");
|
||||
$oPage->add_ready_script("\$('#label_$iId').blur(function() { $(this).search(); } );");
|
||||
$oPage->add_ready_script("\$('#label_$iId').result( function(event, data, formatted) { OnAutoComplete('$iId', event, data, formatted); } );");
|
||||
$aEventsList[] ='change';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Few choices, use a normal 'select'
|
||||
// In case there are no valid values, the select will be empty, thus blocking the user from validating the form
|
||||
$sHTMLValue = "<select title=\"$sHelpText\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" id=\"$iId\">\n";
|
||||
$sHTMLValue .= "<option value=\"\">".Dict::S('UI:SelectOne')."</option>\n";
|
||||
foreach($aAllowedValues as $key => $display_value)
|
||||
{
|
||||
if ((count($aAllowedValues) == 1) && $bMandatory )
|
||||
{
|
||||
// When there is only once choice, select it by default
|
||||
$sSelected = ' selected';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sSelected = ($value == $key) ? ' selected' : '';
|
||||
}
|
||||
$sHTMLValue .= "<option value=\"$key\"$sSelected>$display_value</option>\n";
|
||||
}
|
||||
$sHTMLValue .= "</select> {$sValidationField}\n";
|
||||
$aEventsList[] ='change';
|
||||
}
|
||||
$sHTMLValue .= "</select> {$sValidationField}\n";
|
||||
$aEventsList[] ='change';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1193,7 +1160,7 @@ EOF
|
||||
$aEventsList[] ='keyup';
|
||||
$aEventsList[] ='change';
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
$sPattern = addslashes($oAttDef->GetValidationPattern()); //'^([0-9]+)$';
|
||||
if (!empty($aEventsList))
|
||||
@@ -1203,12 +1170,12 @@ EOF
|
||||
{
|
||||
$sNullValue = "'$sNullValue'"; // Add quotes to turn this into a JS string if it's not a number
|
||||
}
|
||||
$oPage->add_ready_script("$('#$iId').bind('".implode(' ', $aEventsList)."', function(evt, sFormId) { return ValidateField('$iId', '$sPattern', $bMandatory, sFormId, $sNullValue) } );\n"); // Bind to a custom event: validate
|
||||
$oPage->add_ready_script("$('#$iId').bind('".implode(' ', $aEventsList)."', function(evt, sFormId) { return ValidateField('$iId', '$sPattern', $bMandatory, sFormId, $sNullValue) } );"); // Bind to a custom event: validate
|
||||
}
|
||||
$aDependencies = MetaModel::GetDependentAttributes($sClass, $sAttCode); // List of attributes that depend on the current one
|
||||
if (count($aDependencies) > 0)
|
||||
{
|
||||
$oPage->add_ready_script("$('#$iId').bind('change', function(evt, sFormId) { return oWizardHelper{$sFormPrefix}.UpdateDependentFields(['".implode("','", $aDependencies)."']) } );\n"); // Bind to a custom event: validate
|
||||
$oPage->add_ready_script("$('#$iId').bind('change', function(evt, sFormId) { return UpdateDependentFields(['".implode("','", $aDependencies)."']) } );"); // Bind to a custom event: validate
|
||||
}
|
||||
}
|
||||
return "<div>{$sHTMLValue}</div>";
|
||||
@@ -1216,14 +1183,9 @@ EOF
|
||||
|
||||
public function DisplayModifyForm(WebPage $oPage, $aExtraParams = array())
|
||||
{
|
||||
static $iGlobalFormId = 1;
|
||||
static $iGlobalFormId = 0;
|
||||
$iGlobalFormId++;
|
||||
$sPrefix = '';
|
||||
if (isset($aExtraParams['formPrefix']))
|
||||
{
|
||||
$sPrefix = $aExtraParams['formPrefix'];
|
||||
}
|
||||
$this->m_iFormId = $sPrefix.$iGlobalFormId;
|
||||
$this->m_iFormId = $iGlobalFormId;
|
||||
$sClass = get_class($this);
|
||||
$oAppContext = new ApplicationContext();
|
||||
$sStateAttCode = MetaModel::GetStateAttributeCode($sClass);
|
||||
@@ -1240,7 +1202,7 @@ EOF
|
||||
}
|
||||
$oPage->add("<form action=\"$sFormAction\" id=\"form_{$this->m_iFormId}\" enctype=\"multipart/form-data\" method=\"post\" onSubmit=\"return CheckFields('form_{$this->m_iFormId}', true)\">\n");
|
||||
|
||||
$oPage->AddTabContainer(OBJECT_PROPERTIES_TAB, $sPrefix);
|
||||
$oPage->AddTabContainer(OBJECT_PROPERTIES_TAB);
|
||||
$oPage->SetCurrentTabContainer(OBJECT_PROPERTIES_TAB);
|
||||
$oPage->SetCurrentTab(Dict::S('UI:PropertiesTab'));
|
||||
// $aDetailsList = $this->FLattenZList(MetaModel::GetZListItems($sClass, 'details'));
|
||||
@@ -1269,35 +1231,15 @@ EOF
|
||||
$oPage->add('<table style="vertical-align:top"><tr>');
|
||||
foreach($aCols as $sColIndex => $aFieldsets)
|
||||
{
|
||||
$sLabel = '';
|
||||
$sPreviousLabel = '';
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
$oPage->add('<td style="vertical-align:top">');
|
||||
//$aDetails[$sTab][$sColIndex] = array();
|
||||
foreach($aFieldsets as $sFieldsetName => $aFields)
|
||||
{
|
||||
if (!empty($sFieldsetName) && ($sFieldsetName[0]!='_'))
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$sLabel = $sFieldsetName;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sLabel = '';
|
||||
}
|
||||
if ($sLabel != $sPreviousLabel)
|
||||
{
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sPreviousLabel).'</legend>');
|
||||
}
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
}
|
||||
$aDetails[$sTab][$sColIndex] = array();
|
||||
$sPreviousLabel = $sLabel;
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
|
||||
}
|
||||
foreach($aFields as $sAttCode)
|
||||
{
|
||||
@@ -1317,12 +1259,9 @@ EOF
|
||||
else
|
||||
{
|
||||
$iFlags = $this->GetAttributeFlags($sAttCode);
|
||||
$sInputId = $this->m_iFormId.'_'.$sAttCode;
|
||||
if ($iFlags & OPT_ATT_HIDDEN)
|
||||
{
|
||||
// Attribute is hidden, add a hidden input
|
||||
$oPage->add('<input type="hidden" id="'.$sInputId.'" name="attr_'.$sPrefix.$sAttCode.'" value="'.htmlentities($this->Get($sAttCode), ENT_QUOTES, 'UTF-8').'"/>');
|
||||
$aFieldsMap[$sAttCode] = $sInputId;
|
||||
// Attribute is hidden, do nothing
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1330,14 +1269,13 @@ EOF
|
||||
{
|
||||
// Attribute is read-only
|
||||
$sHTMLValue = $this->GetAsHTML($sAttCode);
|
||||
$sHTMLValue .= '<input type="hidden" id="'.$sInputId.'" name="attr_'.$sPrefix.$sAttCode.'" value="'.htmlentities($this->Get($sAttCode), ENT_QUOTES, 'UTF-8').'"/>';
|
||||
$aFieldsMap[$sAttCode] = $sInputId;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sValue = $this->Get($sAttCode);
|
||||
$sDisplayValue = $this->GetEditValue($sAttCode);
|
||||
$aArgs = array('this' => $this, 'formPrefix' => $sPrefix);
|
||||
$aArgs = array('this' => $this);
|
||||
$sInputId = $this->m_iFormId.'_'.$sAttCode;
|
||||
$sHTMLValue = "<span id=\"field_{$sInputId}\">".self::GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $sValue, $sDisplayValue, $sInputId, '', $iFlags, $aArgs).'</span>';
|
||||
$aFieldsMap[$sAttCode] = $sInputId;
|
||||
|
||||
@@ -1357,16 +1295,11 @@ EOF
|
||||
$aDetails[$sTab][$sColIndex][] = $aVal;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('<fieldset>');
|
||||
$oPage->add('<legend>'.Dict::S($sPreviousLabel).'</legend>');
|
||||
}
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sPreviousLabel))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
$oPage->Details($aDetails[$sTab][$sColIndex]);
|
||||
if (!empty($sFieldsetName))
|
||||
{
|
||||
$oPage->add('</fieldset>');
|
||||
}
|
||||
}
|
||||
$oPage->add('</td>');
|
||||
}
|
||||
@@ -1374,10 +1307,8 @@ EOF
|
||||
}
|
||||
|
||||
// Now display the relations, one tab per relation
|
||||
if (!isset($aExtraParams['noRelations']))
|
||||
{
|
||||
$this->DisplayBareRelations($oPage, true); // Edit mode
|
||||
}
|
||||
|
||||
$this->DisplayBareRelations($oPage, true); // Edit mode
|
||||
|
||||
$oPage->SetCurrentTab('');
|
||||
$oPage->add("<input type=\"hidden\" name=\"class\" value=\"$sClass\">\n");
|
||||
@@ -1392,21 +1323,16 @@ EOF
|
||||
// The object already exists in the database, it's modification
|
||||
$oPage->add("<input type=\"hidden\" name=\"id\" value=\"$iKey\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"operation\" value=\"apply_modify\">\n");
|
||||
// $oPage->add("<button type=\"button\" id=\"btn_cancel_{$sPrefix}\" class=\"action\" onClick=\"BackToDetails('$sClass', $iKey)\"><span>".Dict::S('UI:Button:Cancel')."</span></button> \n");
|
||||
$oPage->add("<button type=\"button\" class=\"action cancel\"><span>".Dict::S('UI:Button:Cancel')."</span></button> \n");
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"BackToDetails('$sClass', $iKey)\"><span>".Dict::S('UI:Button:Cancel')."</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>".Dict::S('UI:Button:Apply')."</span></button>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
// The object does not exist in the database it's a creation
|
||||
$oPage->add("<input type=\"hidden\" name=\"operation\" value=\"apply_new\">\n");
|
||||
// $oPage->add("<button type=\"button\" id=\"btn_cancel_{$sPrefix}\" class=\"action\" onClick=\"BackToDetails('$sClass', $iKey)\"><span>".Dict::S('UI:Button:Cancel')."</span></button> \n");
|
||||
$oPage->add("<button type=\"button\" class=\"action cancel\">".Dict::S('UI:Button:Cancel')."</button> \n");
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"BackToList('$sClass')\"><span>".Dict::S('UI:Button:Cancel')."</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>".Dict::S('UI:Button:Create')."</span></button>\n");
|
||||
}
|
||||
// Hook the cancel button via jQuery so that it can be unhooked easily as well if needed
|
||||
$sDefaultUrl = '../pages/UI.php?operation=cancel';
|
||||
$oPage->add_ready_script("$('#form_{$this->m_iFormId} button.cancel').click( function() { BackToDetails('$sClass', $iKey, '$sDefaultUrl')} );");
|
||||
$oPage->add("</form>\n");
|
||||
|
||||
$iFieldsCount = count($aFieldsMap);
|
||||
@@ -1415,16 +1341,15 @@ EOF
|
||||
$oPage->add_script(
|
||||
<<<EOF
|
||||
// Create the object once at the beginning of the page...
|
||||
var oWizardHelper$sPrefix = new WizardHelper('$sClass', '$sPrefix');
|
||||
oWizardHelper$sPrefix.SetFieldsMap($sJsonFieldsMap);
|
||||
oWizardHelper$sPrefix.SetFieldsCount($iFieldsCount);
|
||||
var oWizardHelper = new WizardHelper('$sClass');
|
||||
oWizardHelper.SetFieldsMap($sJsonFieldsMap);
|
||||
oWizardHelper.SetFieldsCount($iFieldsCount);
|
||||
EOF
|
||||
);
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
// Starts the validation when the page is ready
|
||||
CheckFields('form_{$this->m_iFormId}', false);
|
||||
|
||||
EOF
|
||||
);
|
||||
}
|
||||
@@ -1438,12 +1363,9 @@ EOF
|
||||
|
||||
if ($oObjectToClone == null)
|
||||
{
|
||||
$sTargetState = MetaModel::GetDefaultState($sClass);
|
||||
$oObj = MetaModel::NewObject($sClass);
|
||||
if (!empty($sStateAttCode))
|
||||
{
|
||||
$sTargetState = MetaModel::GetDefaultState($sClass);
|
||||
$oObj->Set($sStateAttCode, $sTargetState);
|
||||
}
|
||||
$oObj->Set($sStateAttCode, $sTargetState);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1464,6 +1386,7 @@ EOF
|
||||
// Now fill-in the fields with default/supplied values
|
||||
foreach($aList as $sAttCode)
|
||||
{
|
||||
$bMandatory = false;
|
||||
$aAllowedValues = MetaModel::GetAllowedValues_att($sClass, $sAttCode, $aArgs);
|
||||
if (isset($aArgs['default'][$sAttCode]))
|
||||
{
|
||||
@@ -1481,7 +1404,7 @@ EOF
|
||||
}
|
||||
}
|
||||
}
|
||||
return $oObj->DisplayModifyForm( $oPage, $aExtraParams);
|
||||
return $oObj->DisplayModifyForm( $oPage, $aExtraParams = array());
|
||||
}
|
||||
|
||||
protected static function ProcessZlist($aList, $aDetails, $sCurrentTab, $sCurrentCol, $sCurrentSet)
|
||||
@@ -1489,7 +1412,6 @@ EOF
|
||||
//echo "<pre>ZList: ";
|
||||
//print_r($aList);
|
||||
//echo "</pre>\n";
|
||||
$index = 0;
|
||||
foreach($aList as $sKey => $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
@@ -1504,7 +1426,7 @@ EOF
|
||||
//echo "<p>Found a tab: $sName ($sKey)</p>\n";
|
||||
if(!isset($aDetails[$sName]))
|
||||
{
|
||||
$aDetails[$sName] = array('col1' => array());
|
||||
$aDetails[$sName] = array('col1' => array('' => array()));
|
||||
}
|
||||
$aDetails = self::ProcessZlist($value, $aDetails, $sName, 'col1', '');
|
||||
break;
|
||||
@@ -1523,7 +1445,7 @@ EOF
|
||||
//echo "<p>Found a column: $sName ($sKey)</p>\n";
|
||||
if(!isset($aDetails[$sCurrentTab][$sName]))
|
||||
{
|
||||
$aDetails[$sCurrentTab][$sName] = array();
|
||||
$aDetails[$sCurrentTab][$sName] = array('' => array());
|
||||
}
|
||||
$aDetails = self::ProcessZlist($value, $aDetails, $sCurrentTab, $sName, '');
|
||||
break;
|
||||
@@ -1533,16 +1455,8 @@ EOF
|
||||
else
|
||||
{
|
||||
//echo "<p>Scalar value: $value, in [$sCurrentTab][$sCurrentCol][$sCurrentSet][]</p>\n";
|
||||
if (empty($sCurrentSet))
|
||||
{
|
||||
$aDetails[$sCurrentTab][$sCurrentCol]['_'.$index][] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aDetails[$sCurrentTab][$sCurrentCol][$sCurrentSet][] = $value;
|
||||
}
|
||||
$aDetails[$sCurrentTab][$sCurrentCol][$sCurrentSet][] = $value;
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
return $aDetails;
|
||||
}
|
||||
@@ -1714,100 +1628,5 @@ EOF
|
||||
return $sContextParam;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the object from the POSTed parameters
|
||||
*/
|
||||
function UpdateObject($sFormPrefix = '')
|
||||
{
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if ($oAttDef->IsLinkSet() && $oAttDef->IsIndirect())
|
||||
{
|
||||
$aLinks = utils::ReadPostedParam("attr_{$sFormPrefix}{$sAttCode}", '');
|
||||
$sLinkedClass = $oAttDef->GetLinkedClass();
|
||||
$sExtKeyToRemote = $oAttDef->GetExtKeyToRemote();
|
||||
$sExtKeyToMe = $oAttDef->GetExtKeyToMe();
|
||||
$oLinkedSet = DBObjectSet::FromScratch($sLinkedClass);
|
||||
if (is_array($aLinks))
|
||||
{
|
||||
foreach($aLinks as $id => $aData)
|
||||
{
|
||||
if (is_numeric($id))
|
||||
{
|
||||
if ($id < 0)
|
||||
{
|
||||
// New link to be created, the opposite of the id (-$id) is the ID of the remote object
|
||||
$oLink = MetaModel::NewObject($sLinkedClass);
|
||||
$oLink->Set($sExtKeyToRemote, -$id);
|
||||
$oLink->Set($sExtKeyToMe, $this->GetKey());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Existing link, potentially to be updated...
|
||||
$oLink = MetaModel::GetObject($sLinkedClass, $id);
|
||||
}
|
||||
// Now populate the attributes
|
||||
foreach($aData as $sName => $value)
|
||||
{
|
||||
if (MetaModel::IsValidAttCode($sLinkedClass, $sName))
|
||||
{
|
||||
$oLinkAttDef = MetaModel::GetAttributeDef($sLinkedClass, $sName);
|
||||
if ($oLinkAttDef->IsWritable())
|
||||
{
|
||||
$oLink->Set($sName, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
$oLinkedSet->AddObject($oLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->Set($sAttCode, $oLinkedSet);
|
||||
}
|
||||
else if ($oAttDef->IsWritable())
|
||||
{
|
||||
$iFlags = $this->GetAttributeFlags($sAttCode);
|
||||
if ($iFlags & (OPT_ATT_HIDDEN | OPT_ATT_READONLY))
|
||||
{
|
||||
// Non-visible, or read-only attribute, do nothing
|
||||
}
|
||||
elseif ($oAttDef->GetEditClass() == 'Document')
|
||||
{
|
||||
// There should be an uploaded file with the named attr_<attCode>
|
||||
$oDocument = utils::ReadPostedDocument("file_{$sFormPrefix}{$sAttCode}");
|
||||
if (!$oDocument->IsEmpty())
|
||||
{
|
||||
// A new file has been uploaded
|
||||
$this->Set($sAttCode, $oDocument);
|
||||
}
|
||||
}
|
||||
elseif ($oAttDef->GetEditClass() == 'One Way Password')
|
||||
{
|
||||
// Check if the password was typed/changed
|
||||
$bChanged = utils::ReadPostedParam("attr_{$sFormPrefix}{$sAttCode}_changed", false);
|
||||
if ($bChanged)
|
||||
{
|
||||
// The password has been changed or set
|
||||
$rawValue = utils::ReadPostedParam("attr_{$sFormPrefix}{$sAttCode}", null);
|
||||
$this->Set($sAttCode, $rawValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$rawValue = utils::ReadPostedParam("attr_{$sFormPrefix}{$sAttCode}", null);
|
||||
if (!is_null($rawValue))
|
||||
{
|
||||
$aAttributes[$sAttCode] = trim($rawValue);
|
||||
$previousValue = $this->Get($sAttCode);
|
||||
if ($previousValue !== $aAttributes[$sAttCode])
|
||||
{
|
||||
$this->Set($sAttCode, $aAttributes[$sAttCode]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/webpage.class.inc.php");
|
||||
require_once("../application/webpage.class.inc.php");
|
||||
|
||||
class CSVPage extends WebPage
|
||||
{
|
||||
function __construct($s_title)
|
||||
{
|
||||
parent::__construct($s_title);
|
||||
$this->add_header("Content-type: text/html; charset=utf-8");
|
||||
$this->add_header("Content-type: text/html; charset=iso-8859-1");
|
||||
$this->add_header("Cache-control: no-cache");
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/webpage.class.inc.php');
|
||||
require_once(APPROOT.'/application/utils.inc.php');
|
||||
require_once('../application/webpage.class.inc.php');
|
||||
require_once('../application/utils.inc.php');
|
||||
/**
|
||||
* Helper class to manage 'blocks' of HTML pieces that are parts of a page and contain some list of cmdb objects
|
||||
*
|
||||
@@ -214,7 +214,7 @@ class DisplayBlock
|
||||
{
|
||||
$sHtml = '';
|
||||
$aExtraParams = array_merge($aExtraParams, $this->m_aParams);
|
||||
$aExtraParams['currentId'] = $sId;
|
||||
$aExtraParams['block_id'] = $sId;
|
||||
$sExtraParams = addslashes(str_replace('"', "'", json_encode($aExtraParams))); // JSON encode, change the style of the quotes and escape them
|
||||
|
||||
$bAutoReload = false;
|
||||
@@ -224,14 +224,14 @@ class DisplayBlock
|
||||
{
|
||||
case 'fast':
|
||||
$bAutoReload = true;
|
||||
$iReloadInterval = MetaModel::GetConfig()->GetFastReloadInterval()*1000;
|
||||
$iReloadInterval = utils::GetConfig()->GetFastReloadInterval()*1000;
|
||||
break;
|
||||
|
||||
case 'standard':
|
||||
case 'true':
|
||||
case true:
|
||||
$bAutoReload = true;
|
||||
$iReloadInterval = MetaModel::GetConfig()->GetStandardReloadInterval()*1000;
|
||||
$iReloadInterval = utils::GetConfig()->GetStandardReloadInterval()*1000;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -253,7 +253,7 @@ class DisplayBlock
|
||||
{
|
||||
// render now
|
||||
$sHtml .= "<div id=\"$sId\" class=\"display_block\">\n";
|
||||
$sHtml .= $this->GetRenderContent($oPage, $aExtraParams, $sId);
|
||||
$sHtml .= $this->GetRenderContent($oPage, $aExtraParams);
|
||||
$sHtml .= "</div>\n";
|
||||
}
|
||||
else
|
||||
@@ -303,18 +303,10 @@ class DisplayBlock
|
||||
|
||||
public function RenderContent(WebPage $oPage, $aExtraParams = array())
|
||||
{
|
||||
if (empty($aExtraParams['currentId']))
|
||||
{
|
||||
$sId = $oPage->GetUniqueId(); // Works only if the page is not an Ajax one !
|
||||
}
|
||||
else
|
||||
{
|
||||
$sId = $aExtraParams['currentId'];
|
||||
}
|
||||
$oPage->add($this->GetRenderContent($oPage, $aExtraParams, $sId));
|
||||
$oPage->add($this->GetRenderContent($oPage, $aExtraParams));
|
||||
}
|
||||
|
||||
public function GetRenderContent(WebPage $oPage, $aExtraParams = array(), $sId)
|
||||
public function GetRenderContent(WebPage $oPage, $aExtraParams = array())
|
||||
{
|
||||
$sHtml = '';
|
||||
// Add the extra params into the filter if they make sense for such a filter
|
||||
@@ -726,21 +718,22 @@ class DisplayBlock
|
||||
break;
|
||||
|
||||
case 'search':
|
||||
static $iSearchSectionId = 1;
|
||||
$sStyle = (isset($aExtraParams['open']) && ($aExtraParams['open'] == 'true')) ? 'SearchDrawer' : 'SearchDrawer DrawerClosed';
|
||||
$sHtml .= "<div id=\"ds_$sId\" class=\"$sStyle\">\n";
|
||||
$sHtml .= "<div id=\"Search_$iSearchSectionId\" class=\"$sStyle\">\n";
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
$("#dh_$sId").click( function() {
|
||||
$("#ds_$sId").slideToggle('normal', function() { $("#ds_$sId").parent().resize(); } );
|
||||
$("#dh_$sId").toggleClass('open');
|
||||
$("#LnkSearch_$iSearchSectionId").click( function() {
|
||||
$("#Search_$iSearchSectionId").slideToggle('normal', function() { $("#Search_$iSearchSectionId").parent().resize(); } );
|
||||
$("#LnkSearch_$iSearchSectionId").toggleClass('open');
|
||||
});
|
||||
EOF
|
||||
);
|
||||
$aExtraParams['currentId'] = $sId;
|
||||
$sHtml .= cmdbAbstractObject::GetSearchForm($oPage, $this->m_oSet, $aExtraParams);
|
||||
$sHtml .= "</div>\n";
|
||||
$sHtml .= "<div class=\"HRDrawer\"></div>\n";
|
||||
$sHtml .= "<div id=\"dh_$sId\" class=\"DrawerHandle\">".Dict::S('UI:SearchToggle')."</div>\n";
|
||||
$sHtml .= "<div id=\"LnkSearch_$iSearchSectionId\" class=\"DrawerHandle\">".Dict::S('UI:SearchToggle')."</div>\n";
|
||||
$iSearchSectionId++;
|
||||
break;
|
||||
|
||||
case 'open_flash_chart':
|
||||
@@ -757,7 +750,7 @@ EOF
|
||||
break;
|
||||
|
||||
case 'open_flash_chart_ajax':
|
||||
require_once(APPROOT.'/pages/php-ofc-library/open-flash-chart.php');
|
||||
include '../pages/php-ofc-library/open-flash-chart.php';
|
||||
$sChartType = isset($aExtraParams['chart_type']) ? $aExtraParams['chart_type'] : 'pie';
|
||||
|
||||
$oChart = new open_flash_chart();
|
||||
@@ -875,7 +868,7 @@ EOF
|
||||
*/
|
||||
class HistoryBlock extends DisplayBlock
|
||||
{
|
||||
public function GetRenderContent(WebPage $oPage, $aExtraParams = array(), $sId)
|
||||
public function GetRenderContent(WebPage $oPage, $aExtraParams = array())
|
||||
{
|
||||
$sHtml = '';
|
||||
$oSet = new CMDBObjectSet($this->m_oFilter, array('date'=>false));
|
||||
@@ -957,7 +950,7 @@ class MenuBlock extends DisplayBlock
|
||||
* an object in with the same tab active by default as the tab that was active when selecting
|
||||
* the "Modify..." action.
|
||||
*/
|
||||
public function GetRenderContent(WebPage $oPage, $aExtraParams = array(), $sId)
|
||||
public function GetRenderContent(WebPage $oPage, $aExtraParams = array())
|
||||
{
|
||||
$sHtml = '';
|
||||
$oAppContext = new ApplicationContext();
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/cmdbabstract.class.inc.php');
|
||||
require_once('../application/cmdbabstract.class.inc.php');
|
||||
|
||||
/**
|
||||
* This class manages the input/output tasks
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/nicewebpage.class.inc.php");
|
||||
require_once(APPROOT."/application/applicationcontext.class.inc.php");
|
||||
require_once(APPROOT."/application/user.preferences.class.inc.php");
|
||||
require_once("../application/nicewebpage.class.inc.php");
|
||||
require_once("../application/applicationcontext.class.inc.php");
|
||||
require_once("../application/user.preferences.class.inc.php");
|
||||
/**
|
||||
* Web page with some associated CSS and scripts (jquery) for a fancier display
|
||||
*/
|
||||
@@ -67,8 +67,6 @@ class iTopWebPage extends NiceWebPage
|
||||
$this->add_linked_script("../js/jquery.blockUI.js");
|
||||
$this->add_linked_script("../js/utils.js");
|
||||
$this->add_linked_script("../js/swfobject.js");
|
||||
$this->add_linked_script("../js/ckeditor/ckeditor.js");
|
||||
$this->add_linked_script("../js/ckeditor/adapters/jquery.js");
|
||||
$this->add_ready_script(
|
||||
<<<EOF
|
||||
try
|
||||
@@ -171,39 +169,6 @@ class iTopWebPage extends NiceWebPage
|
||||
$("tbody tr.green_even:odd",table).removeClass('even').removeClass('green_even').addClass('green');
|
||||
}
|
||||
});
|
||||
|
||||
$('.resizable').resizable(); // Make resizable everything that claims to be resizable !
|
||||
// Adjust initial size
|
||||
$('.v-resizable').each( function()
|
||||
{
|
||||
var parent_id = $(this).parent().id;
|
||||
// Restore the saved height
|
||||
var iHeight = GetUserPreference(parent_id+'_'+this.id+'_height', undefined);
|
||||
if (iHeight != undefined)
|
||||
{
|
||||
$(this).height(parseInt(iHeight, 10)); // Parse in base 10 !);
|
||||
}
|
||||
// Adjust the child 'item''s height and width to fit
|
||||
var container = $(this);
|
||||
var fixedWidth = container.parent().innerWidth() - 6;
|
||||
// Set the width to fit the parent
|
||||
$(this).width(fixedWidth);
|
||||
var headerHeight = $(this).find('.drag_handle').height();
|
||||
// Now adjust the width and height of the child 'item'
|
||||
container.find('.item').height(container.innerHeight() - headerHeight - 12).width(fixedWidth - 10);
|
||||
}
|
||||
);
|
||||
// Make resizable, vertically only everything that claims to be v-resizable !
|
||||
$('.v-resizable').resizable( { handles: 's', minHeight: $(this).find('.drag_handle').height(), minWidth: $(this).parent().innerWidth() - 6, maxWidth: $(this).parent().innerWidth() - 6, stop: function()
|
||||
{
|
||||
// Adjust the content
|
||||
var container = $(this);
|
||||
var headerHeight = $(this).find('.drag_handle').height();
|
||||
container.find('.item').height(container.innerHeight() - headerHeight - 12);//.width(container.innerWidth());
|
||||
var parent_id = $(this).parent().id;
|
||||
SetUserPreference(parent_id+'_'+this.id+'_height', $(this).height(), true); // true => persistent
|
||||
}
|
||||
} );
|
||||
|
||||
// Tabs, using JQuery BBQ to store the history
|
||||
// The "tab widgets" to handle.
|
||||
@@ -297,6 +262,38 @@ class iTopWebPage extends NiceWebPage
|
||||
changeMonth: true,
|
||||
changeYear: true
|
||||
});
|
||||
$('.resizable').resizable(); // Make resizable everything that claims to be resizable !
|
||||
// Adjust initial size
|
||||
$('.v-resizable').each( function()
|
||||
{
|
||||
var parent_id = $(this).parent().id;
|
||||
// Restore the saved height
|
||||
var iHeight = GetUserPreference(parent_id+'_'+this.id+'_height', undefined);
|
||||
if (iHeight != undefined)
|
||||
{
|
||||
$(this).height(parseInt(iHeight, 10)); // Parse in base 10 !);
|
||||
}
|
||||
// Adjust the child 'item''s height and width to fit
|
||||
var container = $(this);
|
||||
var fixedWidth = container.parent().innerWidth() - 6;
|
||||
// Set the width to fit the parent
|
||||
$(this).width(fixedWidth);
|
||||
var headerHeight = $(this).find('.drag_handle').height();
|
||||
// Now adjust the width and height of the child 'item'
|
||||
container.find('.item').height(container.innerHeight() - headerHeight - 12).width(fixedWidth - 10);
|
||||
}
|
||||
);
|
||||
// Make resizable, vertically only everything that claims to be v-resizable !
|
||||
$('.v-resizable').resizable( { handles: 's', minHeight: $(this).find('.drag_handle').height(), minWidth: $(this).parent().innerWidth() - 6, maxWidth: $(this).parent().innerWidth() - 6, stop: function()
|
||||
{
|
||||
// Adjust the content
|
||||
var container = $(this);
|
||||
var headerHeight = $(this).find('.drag_handle').height();
|
||||
container.find('.item').height(container.innerHeight() - headerHeight - 12);//.width(container.innerWidth());
|
||||
var parent_id = $(this).parent().id;
|
||||
SetUserPreference(parent_id+'_'+this.id+'_height', $(this).height(), true); // true => persistent
|
||||
}
|
||||
} );
|
||||
// Restore the persisted sortable order, for all sortable lists... if any
|
||||
$('.sortable').each(function()
|
||||
{
|
||||
@@ -371,16 +368,9 @@ EOF
|
||||
window.history.back();
|
||||
}
|
||||
|
||||
function BackToDetails(sClass, id, sDefaultUrl)
|
||||
function BackToDetails(sClass, id)
|
||||
{
|
||||
if (id > 0)
|
||||
{
|
||||
window.location.href = './UI.php?operation=details&class='+sClass+'&id='+id;
|
||||
}
|
||||
else
|
||||
{
|
||||
window.location.href = sDefaultUrl;
|
||||
}
|
||||
window.location.href = './UI.php?operation=details&class='+sClass+'&id='+id;
|
||||
}
|
||||
|
||||
|
||||
@@ -401,16 +391,43 @@ EOF
|
||||
EOF
|
||||
);
|
||||
|
||||
// Build menus from module handlers
|
||||
//
|
||||
foreach(get_declared_classes() as $sPHPClass)
|
||||
{
|
||||
if (is_subclass_of($sPHPClass, 'ModuleHandlerAPI'))
|
||||
{
|
||||
$aCallSpec = array($sPHPClass, 'OnMenuCreation');
|
||||
call_user_func($aCallSpec);
|
||||
}
|
||||
}
|
||||
// Add the standard menus
|
||||
/*
|
||||
* +--------------------+
|
||||
* | Welcome |
|
||||
* +--------------------+
|
||||
* Welcome To iTop
|
||||
* +--------------------+
|
||||
* | Tools |
|
||||
* +--------------------+
|
||||
* CSV Import
|
||||
* +--------------------+
|
||||
* | Admin Tools | << Only present if the user is an admin
|
||||
* +--------------------+
|
||||
* User Accounts
|
||||
* Profiles
|
||||
* Notifications
|
||||
* Run Queries
|
||||
* Export
|
||||
* Data Model
|
||||
* Universal Search
|
||||
*/
|
||||
$oWelcomeMenu = new MenuGroup('WelcomeMenu', 10 /* fRank */);
|
||||
new TemplateMenuNode('WelcomeMenuPage', '../application/templates/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */);
|
||||
|
||||
$oToolsMenu = new MenuGroup('DataAdministration', 70 /* fRank */, 'Organization', UR_ACTION_MODIFY, UR_ALLOWED_YES|UR_ALLOWED_DEPENDS);
|
||||
new WebPageMenuNode('CSVImportMenu', '../pages/csvimport.php', $oToolsMenu->GetIndex(), 1 /* fRank */);
|
||||
|
||||
// Add the admin menus
|
||||
$oAdminMenu = new MenuGroup('AdminTools', 80 /* fRank */);
|
||||
new OQLMenuNode('UserAccountsMenu', 'SELECT User', $oAdminMenu->GetIndex(), 1 /* fRank */);
|
||||
new OQLMenuNode('ProfilesMenu', 'SELECT URP_Profiles', $oAdminMenu->GetIndex(), 2 /* fRank */);
|
||||
new TemplateMenuNode('NotificationsMenu', '../application/templates/notifications_menu.html', $oAdminMenu->GetIndex(), 3 /* fRank */);
|
||||
new OQLMenuNode('AuditCategories', 'SELECT AuditCategory', $oAdminMenu->GetIndex(), 4 /* fRank */);
|
||||
new WebPageMenuNode('RunQueriesMenu', '../pages/run_query.php', $oAdminMenu->GetIndex(), 8 /* fRank */);
|
||||
new WebPageMenuNode('ExportMenu', '../webservices/export.php', $oAdminMenu->GetIndex(), 9 /* fRank */);
|
||||
new WebPageMenuNode('DataModelMenu', '../pages/schema.php', $oAdminMenu->GetIndex(), 10 /* fRank */);
|
||||
new WebPageMenuNode('UniversalSearchMenu', '../pages/UniversalSearch.php', $oAdminMenu->GetIndex(), 11 /* fRank */);
|
||||
}
|
||||
|
||||
public function AddToMenu($sHtml)
|
||||
@@ -446,7 +463,7 @@ EOF
|
||||
$oAppContext = new ApplicationContext();
|
||||
$iCurrentOrganization = $oAppContext->GetCurrentValue('org_id');
|
||||
$sHtml = '<div id="SiloSelection">';
|
||||
$sHtml .= '<form style="display:inline" action="'.$_SERVER['PHP_SELF'].'"><select class="org_combo" name="c[org_id]" title="Pick an organization" onChange="this.form.submit();">';
|
||||
$sHtml .= '<form style="display:inline" action="'.$_SERVER['PHP_SELF'].'"><select style="width:150px;font-size:x-small" name="c[org_id]" title="Pick an organization" onChange="this.form.submit();">';
|
||||
$sSelected = ($iCurrentOrganization == '') ? ' selected' : '';
|
||||
$sHtml .= '<option value=""'.$sSelected.'>'.Dict::S('UI:AllOrganizations').'</option>';
|
||||
while($oOrg = $oSet->Fetch())
|
||||
@@ -461,7 +478,7 @@ EOF
|
||||
{
|
||||
$sSelected = "";
|
||||
}
|
||||
$sHtml .= '<option title="'.$oOrg->GetName().'" value="'.$oOrg->GetKey().'"'.$sSelected.'>'.$oOrg->GetName().'</option>';
|
||||
$sHtml .= '<option value="'.$oOrg->GetKey().'"'.$sSelected.'>'.$oOrg->GetName().'</option>';
|
||||
}
|
||||
$sHtml .= '</select>';
|
||||
// Add other dimensions/context information to this form
|
||||
@@ -644,37 +661,6 @@ EOF
|
||||
}
|
||||
$sLogOffMenu .= "</ul>\n</li>\n</ul></span>\n";
|
||||
|
||||
$sRestrictions = '';
|
||||
if (!MetaModel::DBHasAccess(ACCESS_ADMIN_WRITE))
|
||||
{
|
||||
if (!MetaModel::DBHasAccess(ACCESS_ADMIN_WRITE))
|
||||
{
|
||||
$sRestrictions = Dict::S('UI:AccessRO-All');
|
||||
}
|
||||
}
|
||||
elseif (!MetaModel::DBHasAccess(ACCESS_USER_WRITE))
|
||||
{
|
||||
$sRestrictions = Dict::S('UI:AccessRO-Users');
|
||||
}
|
||||
|
||||
if (strlen($sRestrictions) > 0)
|
||||
{
|
||||
$sAdminMessage = trim(MetaModel::GetConfig()->Get('access_message'));
|
||||
$sApplicationBanner = '<div id="admin-banner">';
|
||||
$sApplicationBanner .= '<img src="../images/locked.png" style="vertical-align:middle;">';
|
||||
$sApplicationBanner .= ' <b>'.$sRestrictions.'</b>';
|
||||
if (strlen($sAdminMessage) > 0)
|
||||
{
|
||||
$sApplicationBanner .= ' <b>'.$sAdminMessage.'</b>';
|
||||
}
|
||||
$sApplicationBanner .= '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sApplicationBanner = '';
|
||||
}
|
||||
|
||||
$sOnlineHelpUrl = MetaModel::GetConfig()->Get('online_help');
|
||||
//$sLogOffMenu = "<span id=\"logOffBtn\" style=\"height:55px;padding:0;margin:0;\"><img src=\"../images/onOffBtn.png\"></span>";
|
||||
|
||||
echo '<div id="left-pane" class="ui-layout-west">';
|
||||
@@ -684,7 +670,7 @@ EOF
|
||||
echo ' </div>';
|
||||
echo ' <div class="header-menu">';
|
||||
echo ' <div class="icon ui-state-default ui-corner-all"><span id="tPinMenu" class="ui-icon ui-icon-pin-w">pin</span></div>';
|
||||
echo ' <div style="text-align:center;">'.$sForm.'</div>';
|
||||
echo ' <div style="width:100%; text-align:center;">'.$sForm.'</div>';
|
||||
echo ' </div>';
|
||||
echo ' <div id="menu" class="ui-layout-content">';
|
||||
echo ' <div id="inner_menu">';
|
||||
@@ -701,10 +687,9 @@ EOF
|
||||
|
||||
echo '<div class="ui-layout-center">';
|
||||
echo ' <div id="top-bar" style="width:100%">';
|
||||
echo $sApplicationBanner;
|
||||
echo ' <div id="global-search"><form action="../pages/UI.php"><table><tr><td></td><td id="g-search-input"><input type="text" name="text" value="'.$sText.'"'.$sOnClick.'/></td>';
|
||||
echo ' <div id="global-search"><form action="../pages/UI.php"><table><tr><td id="g-search-input"><input type="text" name="text" value="'.$sText.'"'.$sOnClick.'/></td>';
|
||||
echo '<td><input type="image" src="../images/searchBtn.png"/></a></td>';
|
||||
echo '<td><a style="background:transparent;" href="'.$sOnlineHelpUrl.'" target="_blank"><img style="border:0;padding-left:20px;padding-right:10px;" title="'.Dict::S('UI:Help').'" src="../images/help.png"/></td>';
|
||||
echo '<td><a style="background:transparent;" href="http://www.combodo.com/itop-help" target="_blank"><img style="border:0;padding-left:20px;padding-right:10px;" title="'.Dict::S('UI:Help').'" src="../images/help.png"/></td>';
|
||||
echo '<td style="padding-right:20px;padding-left:10px;">'.$sLogOffMenu.'</td><td><input type="hidden" name="operation" value="full_text"/></td></tr></table></form></div>';
|
||||
//echo '<td> <input type="hidden" name="operation" value="full_text"/></td></tr></table></form></div>';
|
||||
echo ' </div>';
|
||||
@@ -771,7 +756,6 @@ EOF
|
||||
echo $this->s_deferred_content;
|
||||
echo "<div style=\"display:none\" title=\"ex2\" id=\"ex2\">Please wait...</div>\n"; // jqModal Window
|
||||
echo "<div style=\"display:none\" title=\"dialog\" id=\"ModalDlg\"></div>";
|
||||
echo "<div style=\"display:none\" id=\"ajax_content\"></div>";
|
||||
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/nicewebpage.class.inc.php");
|
||||
require_once("../application/nicewebpage.class.inc.php");
|
||||
/**
|
||||
* Web page used for displaying the login form
|
||||
*/
|
||||
@@ -68,10 +68,6 @@ body {
|
||||
border-left: 1px solid #000;
|
||||
border-right: 1px solid #000;
|
||||
border-top: 0;
|
||||
text-align: center;
|
||||
}
|
||||
#pwd, #user,#old_pwd, #new_pwd, #retype_new_pwd {
|
||||
width: 10em;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
@@ -107,7 +103,7 @@ EOF
|
||||
$sAuthPwd = utils::ReadParam('suggest_pwd', '');
|
||||
|
||||
$sVersionShort = Dict::Format('UI:iTopVersion:Short', ITOP_VERSION);
|
||||
$this->add("<div id=\"login-logo\"><a href=\"http://www.combodo.com/itop\"><img title=\"$sVersionShort\" src=\"../images/itop-logo-external.png\"></a></div>\n");
|
||||
$this->add("<div id=\"login-logo\"><a href=\"http://www.combodo.com/itop\"><img title=\"$sVersionShort\" src=\"../images/itop-logo.png\"></a></div>\n");
|
||||
$this->add("<div id=\"login\">\n");
|
||||
$this->add("<h1>".Dict::S('UI:Login:Welcome')."</h1>\n");
|
||||
if ($bFailedLogin)
|
||||
@@ -119,9 +115,9 @@ EOF
|
||||
$this->add("<p>".Dict::S('UI:Login:IdentifyYourself')."</p>\n");
|
||||
}
|
||||
$this->add("<form method=\"post\">\n");
|
||||
$this->add("<table width=\"100%\">\n");
|
||||
$this->add("<tr><td style=\"text-align:right\"><label for=\"user\">".Dict::S('UI:Login:UserNamePrompt').":</label></td><td style=\"text-align:left\"><input id=\"user\" type=\"text\" name=\"auth_user\" value=\"$sAuthUser\" /></td></tr>\n");
|
||||
$this->add("<tr><td style=\"text-align:right\"><label for=\"pwd\">".Dict::S('UI:Login:PasswordPrompt').":</label></td><td style=\"text-align:left\"><input id=\"pwd\" type=\"password\" name=\"auth_pwd\" value=\"$sAuthPwd\" /></td></tr>\n");
|
||||
$this->add("<table>\n");
|
||||
$this->add("<tr><td><label for=\"user\">".Dict::S('UI:Login:UserNamePrompt').":</label></td><td><input id=\"user\" type=\"text\" name=\"auth_user\" value=\"$sAuthUser\" /></td></tr>\n");
|
||||
$this->add("<tr><td><label for=\"pwd\">".Dict::S('UI:Login:PasswordPrompt').":</label></td><td><input id=\"pwd\" type=\"password\" name=\"auth_pwd\" value=\"$sAuthPwd\" /></td></tr>\n");
|
||||
$this->add("<tr><td colspan=\"2\" class=\"center v-spacer\"> <input type=\"submit\" value=\"".Dict::S('UI:Button:Login')."\" /></td></tr>\n");
|
||||
$this->add("</table>\n");
|
||||
$this->add("<input type=\"hidden\" name=\"loginop\" value=\"login\" />\n");
|
||||
@@ -163,10 +159,10 @@ EOF
|
||||
$this->add("<p class=\"hilite\">".Dict::S('UI:Login:IncorrectOldPassword')."</p>\n");
|
||||
}
|
||||
$this->add("<form method=\"post\">\n");
|
||||
$this->add("<table width=\"100%\">\n");
|
||||
$this->add("<tr><td style=\"text-align:right\"><label for=\"old_pwd\">".Dict::S('UI:Login:OldPasswordPrompt').":</label></td><td style=\"text-align:left\"><input type=\"password\" id=\"old_pwd\" name=\"old_pwd\" value=\"\" /></td></tr>\n");
|
||||
$this->add("<tr><td style=\"text-align:right\"><label for=\"new_pwd\">".Dict::S('UI:Login:NewPasswordPrompt').":</label></td><td style=\"text-align:left\"><input type=\"password\" id=\"new_pwd\" name=\"new_pwd\" value=\"\" /></td></tr>\n");
|
||||
$this->add("<tr><td style=\"text-align:right\"><label for=\"retype_new_pwd\">".Dict::S('UI:Login:RetypeNewPasswordPrompt').":</label></td><td style=\"text-align:left\"><input type=\"password\" id=\"retype_new_pwd\" name=\"retype_new_pwd\" value=\"\" /></td></tr>\n");
|
||||
$this->add("<table>\n");
|
||||
$this->add("<tr><td><label for=\"old_pwd\">".Dict::S('UI:Login:OldPasswordPrompt').":</label></td><td><input type=\"password\" id=\"old_pwd\" name=\"old_pwd\" value=\"\" /></td></tr>\n");
|
||||
$this->add("<tr><td><label for=\"new_pwd\">".Dict::S('UI:Login:NewPasswordPrompt').":</label></td><td><input type=\"password\" id=\"new_pwd\" name=\"new_pwd\" value=\"\" /></td></tr>\n");
|
||||
$this->add("<tr><td><label for=\"retype_new_pwd\">".Dict::S('UI:Login:RetypeNewPasswordPrompt').":</label></td><td><input type=\"password\" id=\"retype_new_pwd\" name=\"retype_new_pwd\" value=\"\" /></td></tr>\n");
|
||||
$this->add("<tr><td colspan=\"2\" class=\"center v-spacer\"> <input type=\"button\" onClick=\"GoBack();\" value=\"".Dict::S('UI:Button:Cancel')."\" /> <input type=\"submit\" onClick=\"return DoCheckPwd();\" value=\"".Dict::S('UI:Button:ChangePassword')."\" /></td></tr>\n");
|
||||
$this->add("</table>\n");
|
||||
$this->add("<input type=\"hidden\" name=\"loginop\" value=\"do_change_pwd\" />\n");
|
||||
@@ -198,7 +194,7 @@ EOF
|
||||
|
||||
static function SecureConnectionRequired()
|
||||
{
|
||||
return MetaModel::GetConfig()->GetSecureConnectionRequired();
|
||||
return utils::GetConfig()->GetSecureConnectionRequired();
|
||||
}
|
||||
|
||||
static function IsConnectionSecure()
|
||||
@@ -222,7 +218,7 @@ EOF
|
||||
exit;
|
||||
}
|
||||
|
||||
$aAllowedLoginTypes = MetaModel::GetConfig()->GetAllowedLoginTypes();
|
||||
$aAllowedLoginTypes = utils::GetConfig()->GetAllowedLoginTypes();
|
||||
|
||||
if (isset($_SESSION['auth_user']))
|
||||
{
|
||||
@@ -270,7 +266,7 @@ EOF
|
||||
case 'external':
|
||||
// Web server supplied authentication
|
||||
$bExternalAuth = false;
|
||||
$sExtAuthVar = MetaModel::GetConfig()->GetExternalAuthenticationVariable(); // In which variable is the info passed ?
|
||||
$sExtAuthVar = utils::GetConfig()->GetExternalAuthenticationVariable(); // In which variable is the info passed ?
|
||||
$sEval = '$bExternalAuth = isset('.$sExtAuthVar.');';
|
||||
eval($sEval);
|
||||
if ($bExternalAuth)
|
||||
@@ -326,16 +322,6 @@ EOF
|
||||
{
|
||||
// User is Ok, let's save it in the session and proceed with normal login
|
||||
UserRights::Login($sAuthUser, $sAuthentication); // Login & set the user's language
|
||||
|
||||
if (MetaModel::GetConfig()->Get('log_usage'))
|
||||
{
|
||||
$oLog = new EventLoginUsage();
|
||||
$oLog->Set('userinfo', UserRights::GetUser());
|
||||
$oLog->Set('user_id', UserRights::GetUserObject()->GetKey());
|
||||
$oLog->Set('message', 'Successful login');
|
||||
$oLog->DBInsertNoReload();
|
||||
}
|
||||
|
||||
$_SESSION['auth_user'] = $sAuthUser;
|
||||
$_SESSION['login_mode'] = $sLoginMode;
|
||||
}
|
||||
@@ -353,7 +339,7 @@ EOF
|
||||
static function DoLogin($bMustBeAdmin = false, $bIsAllowedToPortalUsers = false)
|
||||
{
|
||||
$operation = utils::ReadParam('loginop', '');
|
||||
session_name(MetaModel::GetConfig()->Get('session_name'));
|
||||
session_name(utils::GetConfig()->Get('session_name'));
|
||||
session_start();
|
||||
|
||||
if ($operation == 'logoff')
|
||||
@@ -364,7 +350,7 @@ EOF
|
||||
}
|
||||
else
|
||||
{
|
||||
$aAllowedLoginTypes = MetaModel::GetConfig()->GetAllowedLoginTypes();
|
||||
$aAllowedLoginTypes = utils::GetConfig()->GetAllowedLoginTypes();
|
||||
if (count($aAllowedLoginTypes) > 0)
|
||||
{
|
||||
$sLoginMode = $aAllowedLoginTypes[0];
|
||||
@@ -407,7 +393,7 @@ EOF
|
||||
|
||||
if ($bMustBeAdmin && !UserRights::IsAdministrator())
|
||||
{
|
||||
require_once(APPROOT.'/setup/setuppage.class.inc.php');
|
||||
require_once('../setup/setuppage.class.inc.php');
|
||||
$oP = new SetupWebPage(Dict::S('UI:PageTitle:FatalError'));
|
||||
$oP->add("<h1>".Dict::S('UI:Login:Error:AccessAdmin')."</h1>\n");
|
||||
$oP->p("<a href=\"../pages/logoff.php\">".Dict::S('UI:LogOffMenu')."</a>");
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/utils.inc.php');
|
||||
require_once(APPROOT.'/application/template.class.inc.php');
|
||||
require_once('../application/utils.inc.php');
|
||||
require_once('../application/template.class.inc.php');
|
||||
|
||||
|
||||
/**
|
||||
@@ -98,6 +98,7 @@ class ApplicationMenu
|
||||
foreach(self::$aRootMenus as $aMenu)
|
||||
{
|
||||
$oMenuNode = self::GetMenuNode($aMenu['index']);
|
||||
if (($oMenuNode->GetMenuId() == 'AdminTools') && (!UserRights::IsAdministrator())) continue; // Don't display the admin menu for non admin users
|
||||
if (!$oMenuNode->IsEnabled()) continue; // Don't display a non-enabled menu
|
||||
$oPage->AddToMenu('<h3>'.$oMenuNode->GetTitle().'</h3>');
|
||||
$oPage->AddToMenu('<div>');
|
||||
@@ -277,11 +278,6 @@ abstract class MenuNode
|
||||
* User Rights allowed results (actually a bitmask) to check if the menu is enabled, null if none
|
||||
*/
|
||||
protected $m_iEnableActionResults;
|
||||
|
||||
/**
|
||||
* Stimulus to check: if the user can 'apply' this stimulus, then she/he can see this menu
|
||||
*/
|
||||
protected $m_sEnableStimulus;
|
||||
|
||||
/**
|
||||
* Create a menu item, sets the condition to have it displayed and inserts it into the application's main menu
|
||||
@@ -289,18 +285,16 @@ abstract class MenuNode
|
||||
* @param integer $iParentIndex ID of the parent menu, pass -1 for top level (group) items
|
||||
* @param float $fRank Number used to order the list, any number will do, but for a given level (i.e same parent) all menus are sorted based on this value
|
||||
* @param string $sEnableClass Name of class of object
|
||||
* @param mixed $iActionCode UR_ACTION_READ, UR_ACTION_MODIFY, UR_ACTION_DELETE, UR_ACTION_BULKREAD, UR_ACTION_BULKMODIFY or UR_ACTION_BULKDELETE
|
||||
* @param integer $iActionCode Either UR_ACTION_READ, UR_ACTION_MODIFY, UR_ACTION_DELETE, UR_ACTION_BULKREAD, UR_ACTION_BULKMODIFY or UR_ACTION_BULKDELETE
|
||||
* @param integer $iAllowedResults Expected "rights" for the action: either UR_ALLOWED_YES, UR_ALLOWED_NO, UR_ALLOWED_DEPENDS or a mix of them...
|
||||
* @param string $sEnableStimulus The user can see this menu if she/he has enough rights to apply this stimulus
|
||||
* @return MenuNode
|
||||
*/
|
||||
public function __construct($sMenuId, $iParentIndex = -1, $fRank = 0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null)
|
||||
public function __construct($sMenuId, $iParentIndex = -1, $fRank = 0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES)
|
||||
{
|
||||
$this->sMenuId = $sMenuId;
|
||||
$this->m_sEnableClass = $sEnableClass;
|
||||
$this->m_iEnableAction = $iActionCode;
|
||||
$this->m_iEnableActionResults = $iAllowedResults;
|
||||
$this->m_sEnableStimulus = $sEnableStimulus;
|
||||
$this->index = ApplicationMenu::InsertMenu($this, $iParentIndex, $fRank);
|
||||
}
|
||||
|
||||
@@ -340,26 +334,11 @@ abstract class MenuNode
|
||||
{
|
||||
if (MetaModel::IsValidClass($this->m_sEnableClass))
|
||||
{
|
||||
if ($this->m_sEnableStimulus != null)
|
||||
$iResult = UserRights::IsActionAllowed($this->m_sEnableClass, $this->m_iEnableAction);
|
||||
if (($iResult & $this->m_iEnableActionResults))
|
||||
{
|
||||
if (!UserRights::IsStimulusAllowed($this->m_sEnableClass, $this->m_sEnableStimulus))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if ($this->m_iEnableAction != null)
|
||||
{
|
||||
$iResult = UserRights::IsActionAllowed($this->m_sEnableClass, $this->m_iEnableAction);
|
||||
if (($iResult & $this->m_iEnableActionResults))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -403,9 +382,9 @@ class MenuGroup extends MenuNode
|
||||
* @param integer $iAllowedResults Expected "rights" for the action: either UR_ALLOWED_YES, UR_ALLOWED_NO, UR_ALLOWED_DEPENDS or a mix of them...
|
||||
* @return MenuGroup
|
||||
*/
|
||||
public function __construct($sMenuId, $fRank, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null)
|
||||
public function __construct($sMenuId, $fRank, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES)
|
||||
{
|
||||
parent::__construct($sMenuId, -1 /* no parent, groups are at root level */, $fRank, $sEnableClass, $iActionCode, $iAllowedResults, $sEnableStimulus);
|
||||
parent::__construct($sMenuId, -1 /* no parent, groups are at root level */, $fRank, $sEnableClass, $iActionCode, $iAllowedResults);
|
||||
}
|
||||
|
||||
public function RenderContent(WebPage $oPage, $aExtraParams = array())
|
||||
@@ -433,9 +412,9 @@ class TemplateMenuNode extends MenuNode
|
||||
* @param integer $iAllowedResults Expected "rights" for the action: either UR_ALLOWED_YES, UR_ALLOWED_NO, UR_ALLOWED_DEPENDS or a mix of them...
|
||||
* @return MenuNode
|
||||
*/
|
||||
public function __construct($sMenuId, $sTemplateFile, $iParentIndex, $fRank = 0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null)
|
||||
public function __construct($sMenuId, $sTemplateFile, $iParentIndex, $fRank = 0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES)
|
||||
{
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults, $sEnableStimulus);
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults);
|
||||
$this->sTemplateFile = $sTemplateFile;
|
||||
}
|
||||
|
||||
@@ -488,9 +467,9 @@ class OQLMenuNode extends MenuNode
|
||||
* @param integer $iAllowedResults Expected "rights" for the action: either UR_ALLOWED_YES, UR_ALLOWED_NO, UR_ALLOWED_DEPENDS or a mix of them...
|
||||
* @return MenuNode
|
||||
*/
|
||||
public function __construct($sMenuId, $sOQL, $iParentIndex, $fRank = 0, $bSearch = false, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null)
|
||||
public function __construct($sMenuId, $sOQL, $iParentIndex, $fRank = 0, $bSearch = false, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES)
|
||||
{
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults, $sEnableStimulus);
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults);
|
||||
$this->sPageTitle = "Menu:$sMenuId+";
|
||||
$this->sOQL = $sOQL;
|
||||
$this->bSearch = $bSearch;
|
||||
@@ -567,9 +546,9 @@ class SearchMenuNode extends MenuNode
|
||||
* @param integer $iAllowedResults Expected "rights" for the action: either UR_ALLOWED_YES, UR_ALLOWED_NO, UR_ALLOWED_DEPENDS or a mix of them...
|
||||
* @return MenuNode
|
||||
*/
|
||||
public function __construct($sMenuId, $sClass, $iParentIndex, $fRank = 0, $bSearch = false, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null)
|
||||
public function __construct($sMenuId, $sClass, $iParentIndex, $fRank = 0, $bSearch = false, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES)
|
||||
{
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults, $sEnableStimulus);
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults);
|
||||
$this->sPageTitle = "Menu:$sMenuId+";
|
||||
$this->sClass = $sClass;
|
||||
}
|
||||
@@ -607,9 +586,9 @@ class WebPageMenuNode extends MenuNode
|
||||
* @param integer $iAllowedResults Expected "rights" for the action: either UR_ALLOWED_YES, UR_ALLOWED_NO, UR_ALLOWED_DEPENDS or a mix of them...
|
||||
* @return MenuNode
|
||||
*/
|
||||
public function __construct($sMenuId, $sHyperlink, $iParentIndex, $fRank = 0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null)
|
||||
public function __construct($sMenuId, $sHyperlink, $iParentIndex, $fRank = 0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES)
|
||||
{
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults, $sEnableStimulus);
|
||||
parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults);
|
||||
$this->sHyperlink = $sHyperlink;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/webpage.class.inc.php");
|
||||
require_once("../application/webpage.class.inc.php");
|
||||
/**
|
||||
* Web page with some associated CSS and scripts (jquery) for a fancier display
|
||||
*/
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/nicewebpage.class.inc.php");
|
||||
require_once(APPROOT."/application/applicationcontext.class.inc.php");
|
||||
require_once(APPROOT."/application/user.preferences.class.inc.php");
|
||||
require_once("../application/nicewebpage.class.inc.php");
|
||||
require_once("../application/applicationcontext.class.inc.php");
|
||||
require_once("../application/user.preferences.class.inc.php");
|
||||
/**
|
||||
* Web page with some associated CSS and scripts (jquery) for a fancier display
|
||||
* of the Portal web page
|
||||
@@ -164,7 +164,6 @@ EOF
|
||||
|
||||
public function output()
|
||||
{
|
||||
$sMenu = '';
|
||||
$this->AddMenuButton('logoff', 'Portal:Disconnect', '../pages/logoff.php?portal=1'); // This menu is always present and is the last one
|
||||
foreach($this->m_aMenuButtons as $aMenuItem)
|
||||
{
|
||||
@@ -174,4 +173,4 @@ EOF
|
||||
parent::output();
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
@@ -23,8 +23,8 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/core/cmdbobject.class.inc.php');
|
||||
require_once(APPROOT.'/application/utils.inc.php');
|
||||
require_once('../core/cmdbobject.class.inc.php');
|
||||
require_once('../application/utils.inc.php');
|
||||
|
||||
MetaModel::Startup(ITOP_CONFIG_FILE);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/displayblock.class.inc.php');
|
||||
require_once('../application/displayblock.class.inc.php');
|
||||
/**
|
||||
* This class manages the special template format used internally to build the iTop web pages
|
||||
*/
|
||||
@@ -218,8 +218,8 @@ class DisplayTemplate
|
||||
*/
|
||||
static public function UnitTest()
|
||||
{
|
||||
require_once(APPROOT.'/application/startup.inc.php');
|
||||
require_once(APPROOT."/application/itopwebpage.class.inc.php");
|
||||
require_once('../application/startup.inc.php');
|
||||
require_once("../application/itopwebpage.class.inc.php");
|
||||
|
||||
$sTemplate = '<div class="page_header">
|
||||
<div class="actions_details"><a href="#"><span>Actions</span></a></div>
|
||||
|
||||
@@ -1,271 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
/**
|
||||
* Class UIExtKeyWidget
|
||||
* UI wdiget for displaying and editing external keys when
|
||||
* A simple drop-down list is not enough...
|
||||
*
|
||||
* The layout is the following
|
||||
*
|
||||
* +-- #label_<id> (input)-------+ +-----------+
|
||||
* | | | Browse... |
|
||||
* +-----------------------------+ +-----------+
|
||||
*
|
||||
* And the popup dialog has the following layout:
|
||||
*
|
||||
* +------------------- ac_dlg_<id> (div)-----------+
|
||||
* + +--- ds_<id> (div)---------------------------+ |
|
||||
* | | +------------- fs_<id> (form)------------+ | |
|
||||
* | | | +--------+---+ | | |
|
||||
* | | | | Class | V | | | |
|
||||
* | | | +--------+---+ | | |
|
||||
* | | | | | |
|
||||
* | | | S e a r c h F o r m | | |
|
||||
* | | | +--------+ | | |
|
||||
* | | | | Search | | | |
|
||||
* | | | +--------+ | | |
|
||||
* | | +----------------------------------------+ | |
|
||||
* | +--------------+-dh_<id>-+--------------------+ |
|
||||
* | \ Search / |
|
||||
* | +------+ |
|
||||
* | +--- fr_<id> (form)--------------------------+ |
|
||||
* | | +------------ dr_<id> (div)--------------+ | |
|
||||
* | | | | | |
|
||||
* | | | S e a r c h R e s u l t s | | |
|
||||
* | | | | | |
|
||||
* | | +----------------------------------------+ | |
|
||||
* | | +--------+ +-----+ | |
|
||||
* | | | Cancel | | Add | | |
|
||||
* | | +--------+ +-----+ | |
|
||||
* | +--------------------------------------------+ |
|
||||
* +------------------------------------------------+
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/webpage.class.inc.php');
|
||||
require_once(APPROOT.'/application/displayblock.class.inc.php');
|
||||
|
||||
class UIExtKeyWidget
|
||||
{
|
||||
protected static $iWidgetIndex = 0;
|
||||
protected $sAttCode;
|
||||
protected $sNameSuffix;
|
||||
protected $iId;
|
||||
protected $sTitle;
|
||||
|
||||
public function __construct($sAttCode, $sClass, $sTitle, $aAllowedValues, $value, $iInputId, $bMandatory, $sNameSuffix = '', $sFieldPrefix = '', $sFormPrefix = '')
|
||||
{
|
||||
self::$iWidgetIndex++;
|
||||
$this->sAttCode = $sAttCode;
|
||||
$this->sClass = $sClass;
|
||||
$this->oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
$this->sNameSuffix = $sNameSuffix;
|
||||
$this->iId = $iInputId;
|
||||
$this->aAllowedValues = $aAllowedValues;
|
||||
$this->value = $value;
|
||||
$this->sFieldPrefix = $sFieldPrefix;
|
||||
$this->sTargetClass = $this->oAttDef->GetTargetClass();
|
||||
$this->sTitle = $sTitle;
|
||||
$this->sFormPrefix = $sFormPrefix;
|
||||
$this->bMandatory = $bMandatory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the HTML fragment corresponding to the linkset editing widget
|
||||
* @param WebPage $oP The web page used for all the output
|
||||
* @param Hash $aArgs Extra context arguments
|
||||
* @return string The HTML fragment to be inserted into the page
|
||||
*/
|
||||
public function Display(WebPage $oPage, $aArgs = array())
|
||||
{
|
||||
$bCreate = (!MetaModel::IsAbstract($this->sTargetClass)) && (UserRights::IsActionAllowed($this->sTargetClass, UR_ACTION_BULK_MODIFY) && $this->oAttDef->AllowTargetCreation());
|
||||
$sMessage = Dict::S('UI:Message:EmptyList:UseSearchForm');
|
||||
|
||||
$sHTMLValue = "<span style=\"white-space:nowrap\">"; // no wrap
|
||||
if (count($this->aAllowedValues) < $this->oAttDef->GetMaximumComboLength())
|
||||
{
|
||||
// Few choices, use a normal 'select'
|
||||
$sSelectMode = 'true';
|
||||
|
||||
$sHelpText = $this->oAttDef->GetHelpOnEdition();
|
||||
|
||||
// In case there are no valid values, the select will be empty, thus blocking the user from validating the form
|
||||
$sHTMLValue = "<select title=\"$sHelpText\" name=\"attr_{$this->sFieldPrefix}{$this->sAttCode}{$this->sNameSuffix}\" id=\"$this->iId\">\n";
|
||||
$sHTMLValue .= "<option value=\"\">".Dict::S('UI:SelectOne')."</option>\n";
|
||||
foreach($this->aAllowedValues as $key => $display_value)
|
||||
{
|
||||
if ((count($this->aAllowedValues) == 1) && ($this->bMandatory == 'true') )
|
||||
{
|
||||
// When there is only once choice, select it by default
|
||||
$sSelected = ' selected';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sSelected = ($this->value == $key) ? ' selected' : '';
|
||||
}
|
||||
$sHTMLValue .= "<option value=\"$key\"$sSelected>$display_value</option>\n";
|
||||
}
|
||||
$sHTMLValue .= "</select>\n";
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
oACWidget_{$this->iId} = new ExtKeyWidget('{$this->iId}', '{$this->sClass}', '{$this->sAttCode}', '{$this->sNameSuffix}', $sSelectMode, oWizardHelper{$this->sFormPrefix});
|
||||
oACWidget_{$this->iId}.emptyHtml = "<div style=\"background: #fff; border:0; text-align:center; vertical-align:middle;\"><p>$sMessage</p></div>";
|
||||
|
||||
EOF
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Too many choices, use an autocomplete
|
||||
$sSelectMode = 'false';
|
||||
|
||||
if ($this->oAttDef->IsNull($this->value)) // Null values are displayed as ''
|
||||
{
|
||||
$sDisplayValue = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sDisplayValue = $this->GetObjectName($this->value);
|
||||
}
|
||||
$sFormPrefix = $this->sFormPrefix;
|
||||
$iMinChars = $this->oAttDef->GetMinAutoCompleteChars();
|
||||
$iFieldSize = $this->oAttDef->GetMaxSize();
|
||||
|
||||
// the input for the auto-complete
|
||||
$sHTMLValue = "<input count=\"".count($this->aAllowedValues)."\" type=\"text\" id=\"label_$this->iId\" size=\"30\" maxlength=\"$iFieldSize\" value=\"$sDisplayValue\"/> ";
|
||||
$sHTMLValue .= "<a class=\"no-arrow\" href=\"javascript:oACWidget_{$this->iId}.Search();\"><img style=\"border:0;vertical-align:middle;\" src=\"../images/mini_search.gif\" /></a> ";
|
||||
|
||||
// another hidden input to store & pass the object's Id
|
||||
$sHTMLValue .= "<input type=\"hidden\" id=\"$this->iId\" name=\"attr_{$this->sFieldPrefix}{$this->sAttCode}{$this->sNameSuffix}\" value=\"$this->value\" />\n";
|
||||
|
||||
// Scripts to start the autocomplete and bind some events to it
|
||||
$sDialogTitle = addslashes($this->sTitle);
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
oACWidget_{$this->iId} = new ExtKeyWidget('{$this->iId}', '{$this->sClass}', '{$this->sAttCode}', '{$this->sNameSuffix}', $sSelectMode, oWizardHelper{$this->sFormPrefix});
|
||||
oACWidget_{$this->iId}.emptyHtml = "<div style=\"background: #fff; border:0; text-align:center; vertical-align:middle;\"><p>$sMessage</p></div>";
|
||||
$('#label_$this->iId').autocomplete('../pages/ajax.render.php', { scroll:true, minChars:{$iMinChars}, formatItem:formatItem, autoFill:false, matchContains:true, keyHolder:'#{$this->iId}', extraParams:{operation:'autocomplete', sclass:'{$this->sClass}',attCode:'{$this->sAttCode}'}});
|
||||
$('#label_$this->iId').blur(function() { $(this).search(); } );
|
||||
$('#label_$this->iId').result( function(event, data, formatted) { OnAutoComplete('{$this->iId}', event, data, formatted); } );
|
||||
$('#ac_dlg_$this->iId').dialog({ width: $(window).width()*0.8, height: $(window).height()*0.8, autoOpen: false, modal: true, title: '$sDialogTitle', resizeStop: oACWidget_{$this->iId}.UpdateSizes, close: oACWidget_{$this->iId}.OnClose });
|
||||
|
||||
EOF
|
||||
);
|
||||
$oPage->add_at_the_end($this->GetSearchDialog($oPage)); // To prevent adding forms inside the main form
|
||||
|
||||
}
|
||||
if ($bCreate)
|
||||
{
|
||||
$sHTMLValue .= "<a class=\"no-arrow\" href=\"javascript:oACWidget_{$this->iId}.CreateObject();\"><img style=\"border:0;vertical-align:middle;\" src=\"../images/mini_add.gif\" /></a> ";
|
||||
$oPage->add_at_the_end('<div id="ajax_'.$this->iId.'"></div>');
|
||||
}
|
||||
$sHTMLValue .= "<span id=\"v_{$this->iId}\"></span>";
|
||||
$sHTMLValue .= "</span>"; // end of no wrap
|
||||
return $sHTMLValue;
|
||||
}
|
||||
|
||||
protected function GetSearchDialog(WebPage $oPage)
|
||||
{
|
||||
$sHTML = '<div id="ac_dlg_'.$this->iId.'"><div class="wizContainer" style="vertical-align:top;"><div id="dc_'.$this->iId.'">';
|
||||
|
||||
$oFilter = new DBObjectSearch($this->sTargetClass);
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
$oBlock = new DisplayBlock($oFilter, 'search', false);
|
||||
$sHTML .= $oBlock->GetDisplay($oPage, $this->iId, array('open' => true, 'currentId' => $this->iId));
|
||||
$sHTML .= "<form id=\"fr_{$this->iId}\" OnSubmit=\"return oACWidget_{$this->iId}.DoOk();\">\n";
|
||||
$sHTML .= "<div id=\"dr_{$this->iId}\" style=\"vertical-align:top;background: #fff;height:100%;overflow:auto;padding:0;border:0;\">\n";
|
||||
$sHTML .= "<div style=\"background: #fff; border:0; text-align:center; vertical-align:middle;\"><p>".Dict::S('UI:Message:EmptyList:UseSearchForm')."</p></div>\n";
|
||||
$sHTML .= "</div>\n";
|
||||
$sHTML .= "<input type=\"button\" id=\"btn_cancel_{$this->iId}\" value=\"".Dict::S('UI:Button:Cancel')."\" onClick=\"$('#ac_dlg_{$this->iId}').dialog('close');\"> ";
|
||||
$sHTML .= "<input type=\"button\" id=\"btn_ok_{$this->iId}\" value=\"".Dict::S('UI:Button:Ok')."\" onClick=\"oACWidget_{$this->iId}.DoOk();\">";
|
||||
$sHTML .= "</form>\n";
|
||||
$sHTML .= '</div></div></div>';
|
||||
|
||||
$oPage->add_ready_script("$('#fs_{$this->iId}').bind('submit.uiAutocomplete', oACWidget_{$this->iId}.DoSearchObjects);");
|
||||
$oPage->add_ready_script("$('#dc_{$this->iId}').resize(oACWidget_{$this->iId}.UpdateSizes);");
|
||||
|
||||
return $sHTML;
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for objects to be selected
|
||||
* @param WebPage $oP The page used for the output (usually an AjaxWebPage)
|
||||
* @param string $sRemoteClass Name of the "remote" class to perform the search on, must be a derived class of m_sRemoteClass
|
||||
* @param Array $aAlreadyLinkedIds List of IDs of objects of "remote" class already linked, to be filtered out of the search
|
||||
*/
|
||||
public function SearchObjectsToSelect(WebPage $oP, $sTargetClass = '')
|
||||
{
|
||||
if ($sTargetClass != '')
|
||||
{
|
||||
// assert(MetaModel::IsParentClass($this->m_sRemoteClass, $sRemoteClass));
|
||||
$oFilter = new DBObjectSearch($sTargetClass);
|
||||
}
|
||||
else
|
||||
{
|
||||
// No remote class specified use the one defined in the linkedset
|
||||
$oFilter = new DBObjectSearch($this->sTargetClass);
|
||||
}
|
||||
$oFilter->AddCondition('id', array_keys($this->aAllowedValues), 'IN');
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', false);
|
||||
$oBlock->Display($oP, $this->iId, array('menu' => false, 'selection_mode' => true, 'selection_type' => 'single', 'display_limit' => false)); // Don't display the 'Actions' menu on the results
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the display name of the selected object, to fill back the autocomplete
|
||||
*/
|
||||
public function GetObjectName($iObjId)
|
||||
{
|
||||
$oObj = MetaModel::GetObject($this->sTargetClass, $iObjId);
|
||||
return $oObj->GetName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the form to create a new object of the 'target' class
|
||||
*/
|
||||
public function GetObjectCreationForm(WebPage $oPage)
|
||||
{
|
||||
$sDialogTitle = addslashes($this->sTitle);
|
||||
$oPage->add('<div id="ac_create_'.$this->iId.'"><div class="wizContainer" style="vertical-align:top;"><div id="dcr_'.$this->iId.'">');
|
||||
$oPage->add("<h1>".MetaModel::GetClassIcon($this->sTargetClass)." ".Dict::Format('UI:CreationTitle_Class', MetaModel::GetName($this->sTargetClass))."</h1>\n");
|
||||
cmdbAbstractObject::DisplayCreationForm($oPage, $this->sTargetClass, null, array(), array('formPrefix' => $this->iId, 'noRelations' => true));
|
||||
$oPage->add('</div></div></div>');
|
||||
$oPage->add_ready_script("\$('#ac_create_$this->iId').dialog({ width: $(window).width()*0.8, height: 'auto', autoOpen: false, modal: true, title: '$sDialogTitle'});\n");
|
||||
$oPage->add_ready_script("$('#dcr_{$this->iId} form').removeAttr('onsubmit');");
|
||||
$oPage->add_ready_script("$('#dcr_{$this->iId} form').bind('submit.uilinksWizard', oACWidget_{$this->iId}.DoCreateObject);");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the form to create a new object of the 'target' class
|
||||
*/
|
||||
public function DoCreateObject($oPage)
|
||||
{
|
||||
$oObj = MetaModel::NewObject($this->sTargetClass);
|
||||
$oObj->UpdateObject($this->sFormPrefix.$this->iId);
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$sUserString = CMDBChange::GetCurrentUserName();
|
||||
$oMyChange->Set("userinfo", $sUserString);
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBInsertTracked($oMyChange);
|
||||
|
||||
return array('name' => $oObj->GetName(), 'id' => $oObj->GetKey());
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,86 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Class UIHTMLEditorWidget
|
||||
* UI wdiget for displaying and editing one-way encrypted passwords
|
||||
*
|
||||
* @author Phil Eddies
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
class UIHTMLEditorWidget
|
||||
{
|
||||
protected $m_iId;
|
||||
protected $m_sAttCode;
|
||||
protected $m_sNameSuffix;
|
||||
protected $m_sFieldPrefix;
|
||||
protected $m_sHelpText;
|
||||
protected $m_sValidationField;
|
||||
protected $m_sValue;
|
||||
protected $m_sMandatory;
|
||||
|
||||
public function __construct($iInputId, $sAttCode, $sNameSuffix, $sFieldPrefix, $sHelpText, $sValidationField, $sValue, $sMandatory)
|
||||
{
|
||||
$this->m_iId = $iInputId;
|
||||
$this->m_sAttCode = $sAttCode;
|
||||
$this->m_sNameSuffix = $sNameSuffix;
|
||||
$this->m_sHelpText = $sHelpText;
|
||||
$this->m_sValidationField = $sValidationField;
|
||||
$this->m_sValue = $sValue;
|
||||
$this->m_sMandatory = $sMandatory;
|
||||
$this->m_sFieldPrefix = $sFieldPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the HTML fragment corresponding to the HTML editor widget
|
||||
* @param WebPage $oP The web page used for all the output
|
||||
* @param Hash $aArgs Extra context arguments
|
||||
* @return string The HTML fragment to be inserted into the page
|
||||
*/
|
||||
public function Display(WebPage $oPage, $aArgs = array())
|
||||
{
|
||||
$iId = $this->m_iId;
|
||||
$sCode = $this->m_sAttCode.$this->m_sNameSuffix;
|
||||
$sValue = $this->m_sValue;
|
||||
$sHelpText = $this->m_sHelpText;
|
||||
$sValidationField = $this->m_sValidationField;
|
||||
|
||||
$sHtmlValue = "<table><tr><td><textarea class=\"htmlEditor\" title=\"$sHelpText\" name=\"attr_{$this->m_sFieldPrefix}{$sCode}\" rows=\"14\" cols=\"110\" id=\"$iId\">$sValue</textarea></td><td>$sValidationField</td></tr></table>";
|
||||
|
||||
// Replace the text area with CKEditor
|
||||
// To change the default settings of the editor,
|
||||
// a) edit the file /js/ckeditor/config.js
|
||||
// b) or override some of the configuration settings, using the second parameter of ckeditor()
|
||||
$sLanguage = strtolower(trim(UserRights::GetUserLanguage()));
|
||||
$oPage->add_ready_script("$('#$iId').ckeditor(function() { /* callback code */ }, { language : '$sLanguage' , contentsLanguage : '$sLanguage' });"); // Transform $iId into a CKEdit
|
||||
|
||||
// Please read...
|
||||
// ValidateCKEditField triggers a timer... calling itself indefinitely
|
||||
// This design was the quickest way to achieve the field validation (only checking if the field is blank)
|
||||
// because the ckeditor does not fire events like "change" or "keyup", etc.
|
||||
// See http://dev.ckeditor.com/ticket/900 => won't fix
|
||||
// The most relevant solution would be to implement a plugin to CKEdit, and handle the internal events like: setData, insertHtml, insertElement, loadSnapshot, key, afterUndo, afterRedo
|
||||
|
||||
// Could also be bound to 'instanceReady.ckeditor'
|
||||
$oPage->add_ready_script("$('#$iId').bind('validate', function(evt, sFormId) { return ValidateCKEditField('$iId', '', {$this->m_sMandatory}, sFormId, '') } );");
|
||||
|
||||
return $sHtmlValue;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -23,8 +23,8 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/webpage.class.inc.php');
|
||||
require_once(APPROOT.'/application/displayblock.class.inc.php');
|
||||
require_once('../application/webpage.class.inc.php');
|
||||
require_once('../application/displayblock.class.inc.php');
|
||||
|
||||
class UILinksWidget
|
||||
{
|
||||
@@ -37,6 +37,7 @@ class UILinksWidget
|
||||
protected $m_sLinkedClass;
|
||||
protected $m_sRemoteClass;
|
||||
protected $m_bDuplicatesAllowed;
|
||||
protected static $iWidgetIndex = 0;
|
||||
|
||||
public function __construct($sClass, $sAttCode, $iInputId, $sNameSuffix = '', $bDuplicatesAllowed = false)
|
||||
{
|
||||
@@ -46,6 +47,7 @@ class UILinksWidget
|
||||
$this->m_iInputId = $iInputId;
|
||||
$this->m_bDuplicatesAllowed = $bDuplicatesAllowed;
|
||||
$this->m_aEditableFields = array();
|
||||
self::$iWidgetIndex++;
|
||||
|
||||
$oAttDef = MetaModel::GetAttributeDef($this->m_sClass, $this->m_sAttCode);
|
||||
$this->m_sLinkedClass = $oAttDef->GetLinkedClass();
|
||||
@@ -58,7 +60,7 @@ class UILinksWidget
|
||||
|
||||
$this->m_aEditableFields = array();
|
||||
$this->m_aTableConfig = array();
|
||||
$this->m_aTableConfig['form::checkbox'] = array( 'label' => "<input class=\"select_all\" type=\"checkbox\" value=\"1\" onClick=\"CheckAll('#linkedset_{$this->m_sAttCode}{$this->m_sNameSuffix} .selection', this.checked); oWidget".$this->m_iInputId.".OnSelectChange();\">", 'description' => Dict::S('UI:SelectAllToggle+'));
|
||||
$this->m_aTableConfig['form::checkbox'] = array( 'label' => "<input class=\"select_all\" type=\"checkbox\" value=\"1\" onClick=\"CheckAll('#linkedset_{$this->m_sAttCode}{$this->m_sNameSuffix} .selection', this.checked); oWidget".self::$iWidgetIndex.".OnSelectChange();\">", 'description' => Dict::S('UI:SelectAllToggle+'));
|
||||
|
||||
foreach(MetaModel::ListAttributeDefs($this->m_sLinkedClass) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
@@ -107,14 +109,12 @@ class UILinksWidget
|
||||
$sPrefix .= "[$key][";
|
||||
$sNameSuffix = "]"; // To make a tabular form
|
||||
$aArgs['prefix'] = $sPrefix;
|
||||
$aRow['form::checkbox'] = "<input class=\"selection\" type=\"checkbox\" onClick=\"oWidget".$this->m_iInputId.".OnSelectChange();\" value=\"$key\">";
|
||||
$aRow['form::checkbox'] = "<input class=\"selection\" type=\"checkbox\" onChange=\"oWidget".self::$iWidgetIndex.".OnSelectChange();\" value=\"$key\">";
|
||||
$aRow['form::checkbox'] .= "<input type=\"hidden\" name=\"attr_{$sPrefix}id{$sNameSuffix}\" value=\"$key\">";
|
||||
foreach($this->m_aEditableFields as $sFieldCode)
|
||||
{
|
||||
$sFieldId = $this->m_iInputId.'_'.$sFieldCode.'['.$linkObjOrId->GetKey().']';
|
||||
$sSafeId = str_replace(array('[',']','-'), '_', $sFieldId);
|
||||
$oAttDef = MetaModel::GetAttributeDef($this->m_sLinkedClass, $sFieldCode);
|
||||
$aRow[$sFieldCode] = cmdbAbstractObject::GetFormElementForField($oP, $this->m_sLinkedClass, $sFieldCode, $oAttDef, $linkObjOrId->Get($sFieldCode), '' /* DisplayValue */, $sSafeId, $sNameSuffix, 0, $aArgs);
|
||||
$aRow[$sFieldCode] = cmdbAbstractObject::GetFormElementForField($oP, $this->m_sLinkedClass, $sFieldCode, $oAttDef, $linkObjOrId->Get($sFieldCode), '' /* DisplayValue */, $key, $sNameSuffix, 0, $aArgs);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -123,14 +123,12 @@ class UILinksWidget
|
||||
$sPrefix .= "[$linkObjOrId][";
|
||||
$sNameSuffix = "]"; // To make a tabular form
|
||||
$aArgs['prefix'] = $sPrefix;
|
||||
$aRow['form::checkbox'] = "<input class=\"selection\" type=\"checkbox\" onClick=\"oWidget".$this->m_iInputId.".OnSelectChange();\" value=\"$linkObjOrId\">";
|
||||
$aRow['form::checkbox'] = "<input class=\"selection\" type=\"checkbox\" onChange=\"oWidget".self::$iWidgetIndex.".OnSelectChange();\" value=\"$linkObjOrId\">";
|
||||
$aRow['form::checkbox'] .= "<input type=\"hidden\" name=\"attr_{$sPrefix}id{$sNameSuffix}\" value=\"\">";
|
||||
foreach($this->m_aEditableFields as $sFieldCode)
|
||||
{
|
||||
$sFieldId = $this->m_iInputId.'_'.$sFieldCode.'['.$linkObjOrId.']';
|
||||
$sSafeId = str_replace(array('[',']','-'), '_', $sFieldId);
|
||||
$oAttDef = MetaModel::GetAttributeDef($this->m_sLinkedClass, $sFieldCode);
|
||||
$aRow[$sFieldCode] = cmdbAbstractObject::GetFormElementForField($oP, $this->m_sLinkedClass, $sFieldCode, $oAttDef, '' /* TO DO/ call GetDefaultValue($oObject->ToArgs()) */, '' /* DisplayValue */, $sSafeId /* id */, $sNameSuffix, 0, $aArgs);
|
||||
$aRow[$sFieldCode] = cmdbAbstractObject::GetFormElementForField($oP, $this->m_sLinkedClass, $sFieldCode, $oAttDef, '' /* TO DO/ call GetDefaultValue($oObject->ToArgs()) */, '' /* DisplayValue */, '' /* id */, $sNameSuffix, 0, $aArgs);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,6 +209,7 @@ class UILinksWidget
|
||||
*/
|
||||
public function Display(WebPage $oPage, DBObjectSet $oValue, $aArgs = array())
|
||||
{
|
||||
$iWidgetIndex = self::$iWidgetIndex;
|
||||
$sHtmlValue = '';
|
||||
$sTargetClass = self::GetTargetClass($this->m_sClass, $this->m_sAttCode);
|
||||
$sHtmlValue .= "<div id=\"linkedset_{$this->m_sAttCode}{$this->m_sNameSuffix}\">\n";
|
||||
@@ -227,12 +226,12 @@ class UILinksWidget
|
||||
$sHtmlValue .= $this->DisplayFormTable($oPage, $this->m_aTableConfig, $aForm);
|
||||
$sDuplicates = ($this->m_bDuplicatesAllowed) ? 'true' : 'false';
|
||||
$oPage->add_ready_script(<<<EOF
|
||||
oWidget{$this->m_iInputId} = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}', $sDuplicates);
|
||||
oWidget{$this->m_iInputId}.Init();
|
||||
oWidget$iWidgetIndex = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}', $sDuplicates);
|
||||
oWidget$iWidgetIndex.Init();
|
||||
EOF
|
||||
);
|
||||
$sHtmlValue .= "<span style=\"float:left;\"> <img src=\"../images/tv-item-last.gif\"> <input id=\"{$this->m_sAttCode}{$this->m_sNameSuffix}_btnRemove\" type=\"button\" value=\"".Dict::S('UI:RemoveLinkedObjectsOf_Class')."\" onClick=\"oWidget{$this->m_iInputId}.RemoveSelected();\" >";
|
||||
$sHtmlValue .= " <input id=\"{$this->m_sAttCode}{$this->m_sNameSuffix}_btnAdd\" type=\"button\" value=\"".Dict::Format('UI:AddLinkedObjectsOf_Class', MetaModel::GetName($this->m_sRemoteClass))."\" onClick=\"oWidget{$this->m_iInputId}.AddObjects();\"></span>\n";
|
||||
$sHtmlValue .= "<span style=\"float:left;\"> <img src=\"../images/tv-item-last.gif\"> <input id=\"{$this->m_sAttCode}{$this->m_sNameSuffix}_btnRemove\" type=\"button\" value=\"".Dict::S('UI:RemoveLinkedObjectsOf_Class')."\" onClick=\"oWidget$iWidgetIndex.RemoveSelected();\" >";
|
||||
$sHtmlValue .= " <input id=\"{$this->m_sAttCode}{$this->m_sNameSuffix}_btnAdd\" type=\"button\" value=\"".Dict::Format('UI:AddLinkedObjectsOf_Class', MetaModel::GetName($this->m_sRemoteClass))."\" onClick=\"oWidget$iWidgetIndex.AddObjects();\"></span>\n";
|
||||
$sHtmlValue .= "<span style=\"clear:both;\"><p> </p></span>\n";
|
||||
$sHtmlValue .= "</div>\n";
|
||||
$oPage->add_at_the_end($this->GetObjectPickerDialog($oPage)); // To prevent adding forms inside the main form
|
||||
@@ -349,11 +348,12 @@ EOF
|
||||
{
|
||||
$sHtml = "<div id=\"dlg_{$this->m_sAttCode}{$this->m_sNameSuffix}\">";
|
||||
$sHtml .= "<div class=\"wizContainer\" style=\"vertical-align:top;\">\n";
|
||||
$iWidgetIndex = self::$iWidgetIndex;
|
||||
$oFilter = new DBObjectSearch($this->m_sRemoteClass);
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
$oBlock = new DisplayBlock($oFilter, 'search', false);
|
||||
$sHtml .= $oBlock->GetDisplay($oPage, "SearchFormToAdd_{$this->m_sAttCode}{$this->m_sNameSuffix}", array('open' => true));
|
||||
$sHtml .= "<form id=\"ObjectsAddForm_{$this->m_sAttCode}{$this->m_sNameSuffix}\" OnSubmit=\"return oWidget{$this->m_iInputId}.DoAddObjects(this.id);\">\n";
|
||||
$sHtml .= "<form id=\"ObjectsAddForm_{$this->m_sAttCode}{$this->m_sNameSuffix}\" OnSubmit=\"return oWidget$iWidgetIndex.DoAddObjects(this.id);\">\n";
|
||||
$sHtml .= "<div id=\"SearchResultsToAdd_{$this->m_sAttCode}{$this->m_sNameSuffix}\" style=\"vertical-align:top;background: #fff;height:100%;overflow:auto;padding:0;border:0;\">\n";
|
||||
$sHtml .= "<div style=\"background: #fff; border:0; text-align:center; vertical-align:middle;\"><p>".Dict::S('UI:Message:EmptyList:UseSearchForm')."</p></div>\n";
|
||||
$sHtml .= "</div>\n";
|
||||
@@ -361,10 +361,10 @@ EOF
|
||||
$sHtml .= "</div>\n";
|
||||
$sHtml .= "</form>\n";
|
||||
$sHtml .= "</div>\n";
|
||||
$oPage->add_ready_script("$('#dlg_{$this->m_sAttCode}{$this->m_sNameSuffix}').dialog({ width: $(window).width()*0.8, height: $(window).height()*0.8, autoOpen: false, modal: true, resizeStop: oWidget{$this->m_iInputId}.UpdateSizes });");
|
||||
$oPage->add_ready_script("$('#dlg_{$this->m_sAttCode}{$this->m_sNameSuffix}').dialog({ width: $(window).width()*0.8, height: $(window).height()*0.8, autoOpen: false, modal: true, resizeStop: oWidget$iWidgetIndex.UpdateSizes });");
|
||||
$oPage->add_ready_script("$('#dlg_{$this->m_sAttCode}{$this->m_sNameSuffix}').dialog('option', {title:'".addslashes(Dict::Format('UI:AddObjectsOf_Class_LinkedWith_Class', MetaModel::GetName($this->m_sLinkedClass), MetaModel::GetName($this->m_sClass)))."'});");
|
||||
$oPage->add_ready_script("$('#SearchFormToAdd_{$this->m_sAttCode}{$this->m_sNameSuffix} form').bind('submit.uilinksWizard', oWidget{$this->m_iInputId}.SearchObjectsToAdd);");
|
||||
$oPage->add_ready_script("$('#SearchFormToAdd_{$this->m_sAttCode}{$this->m_sNameSuffix}').resize(oWidget{$this->m_iInputId}.UpdateSizes);");
|
||||
$oPage->add_ready_script("$('#SearchFormToAdd_{$this->m_sAttCode}{$this->m_sNameSuffix} form').bind('submit.uilinksWizard', oWidget$iWidgetIndex.SearchObjectsToAdd);");
|
||||
$oPage->add_ready_script("$('#SearchFormToAdd_{$this->m_sAttCode}{$this->m_sNameSuffix}').resize(oWidget$iWidgetIndex.UpdateSizes);");
|
||||
return $sHtml;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/webpage.class.inc.php');
|
||||
require_once(APPROOT.'/application/displayblock.class.inc.php');
|
||||
require_once('../application/webpage.class.inc.php');
|
||||
require_once('../application/displayblock.class.inc.php');
|
||||
|
||||
class UIPasswordWidget
|
||||
{
|
||||
@@ -56,10 +56,11 @@ class UIPasswordWidget
|
||||
$sConfirmPasswordValue = utils::ReadPostedParam("attr_{$sCode}_confirmed", '*****');
|
||||
$sChangedValue = (($sPasswordValue != '*****') || ($sConfirmPasswordValue != '*****')) ? 1 : 0;
|
||||
$sHtmlValue = '';
|
||||
$sHtmlValue = '<input type="password" maxlength="255" name="attr_'.$sCode.'" id="'.$this->iId.'" value="'.htmlentities($sPasswordValue, ENT_QUOTES, 'UTF-8').'"/> <span class="form_validation" id="v_'.$this->iId.'"></span><br/>';
|
||||
$sHtmlValue = '<input type="password" maxlength="255" name="attr_'.$sCode.'" id="'.$this->iId.'" value="'.htmlentities($sPasswordValue, ENT_QUOTES, 'UTF-8').'"/> <span id="v_'.$this->iId.'"></span><br/>';
|
||||
$sHtmlValue .= '<input type="password" maxlength="255" id="'.$this->iId.'_confirm" value="'.htmlentities($sConfirmPasswordValue, ENT_QUOTES, 'UTF-8').'" name="attr_'.$sCode.'_confirmed"/> '.Dict::S('UI:PasswordConfirm').' <input type="button" value="'.Dict::S('UI:Button:ResetPassword').'" onClick="ResetPwd(\''.$this->iId.'\');">';
|
||||
$sHtmlValue .= '<input type="hidden" id="'.$this->iId.'_changed" name="attr_'.$sCode.'_changed" value="'.$sChangedValue.'"/>';
|
||||
|
||||
$oPage->add_ready_script("$('#$this->iId').bind('keyup change', function(evt) { return PasswordFieldChanged('$this->iId') } );"); // Bind to a custom event: validate
|
||||
$oPage->add_ready_script("$('#$this->iId').bind('keyup change', function(evt) { return PasswordFieldChanged('$this->iId') } );"); // Bind to a custom event: validate
|
||||
$oPage->add_ready_script("$('#$this->iId').bind('keyup change validate', function(evt, sFormId) { return ValidatePasswordField('$this->iId', sFormId) } );"); // Bind to a custom event: validate
|
||||
$oPage->add_ready_script("$('#{$this->iId}_confirm').bind('keyup change', function(evt, sFormId) { return ValidatePasswordField('$this->iId', sFormId) } );"); // Bind to a custom event: validate
|
||||
@@ -67,4 +68,4 @@ class UIPasswordWidget
|
||||
return $sHtmlValue;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
@@ -132,7 +132,7 @@ class UILinksWizard
|
||||
function AddObjects()
|
||||
{
|
||||
// TO DO: compute the list of objects already linked with the current Object
|
||||
$.post( '../pages/ajax.render.php', { 'operation': 'addObjects',
|
||||
$.post( 'ajax.render.php', { 'operation': 'addObjects',
|
||||
'class': '{$this->m_sClass}',
|
||||
'linkageAttr': '{$this->m_sLinkageAttr}',
|
||||
'linkedClass': '{$this->m_sLinkedClass}',
|
||||
@@ -175,7 +175,7 @@ class UILinksWizard
|
||||
theMap['operation'] = 'searchObjectsToAdd';
|
||||
|
||||
// Run the query and display the results
|
||||
$.post( '../pages/ajax.render.php', theMap,
|
||||
$.post( 'ajax.render.php', theMap,
|
||||
function(data)
|
||||
{
|
||||
$('#SearchResultsToAdd').html(data);
|
||||
@@ -223,7 +223,7 @@ class UILinksWizard
|
||||
theMap['operation'] = 'doAddObjects';
|
||||
|
||||
// Run the query and display the results
|
||||
$.post( '../pages/ajax.render.php', theMap,
|
||||
$.post( 'ajax.render.php', theMap,
|
||||
function(data)
|
||||
{
|
||||
//console.log('Data: ' + data);
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
require_once(APPROOT.'/core/dbobject.class.php');
|
||||
require_once(APPROOT.'/core/userrights.class.inc.php');
|
||||
require_once('../core/dbobject.class.php');
|
||||
require_once('../core/userrights.class.inc.php');
|
||||
|
||||
/**
|
||||
* This class is used to store, in a persistent manner, user related settings (preferences)
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/core/config.class.inc.php');
|
||||
require_once(APPROOT.'/application/transaction.class.inc.php');
|
||||
require_once('../core/config.class.inc.php');
|
||||
require_once('../application/transaction.class.inc.php');
|
||||
|
||||
define('ITOP_CONFIG_FILE', APPROOT.'/config-itop.php');
|
||||
define('ITOP_CONFIG_FILE', '../config-itop.php');
|
||||
|
||||
class FileUploadException extends Exception
|
||||
{
|
||||
@@ -45,9 +45,8 @@ class utils
|
||||
|
||||
public static function IsModeCLI()
|
||||
{
|
||||
$sSAPIName = php_sapi_name();
|
||||
$sCleanName = strtolower(trim($sSAPIName));
|
||||
if ($sCleanName == 'cli')
|
||||
global $argv;
|
||||
if (isset($argv))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -174,6 +173,28 @@ class utils
|
||||
return file_get_contents($sFileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the application config file
|
||||
* @param string path to the config file
|
||||
* @return void
|
||||
*/
|
||||
public static function SpecifyConfigFile($sFilePath)
|
||||
{
|
||||
self::$m_sConfigFile = $sFilePath;
|
||||
}
|
||||
/**
|
||||
* Get access to the application config file
|
||||
* @param none
|
||||
* @return Config The Config object initialized from the application config file
|
||||
*/
|
||||
public static function GetConfig()
|
||||
{
|
||||
if (self::$m_oConfig == null)
|
||||
{
|
||||
self::$m_oConfig = new Config(self::$m_sConfigFile);
|
||||
}
|
||||
return self::$m_oConfig;
|
||||
}
|
||||
/**
|
||||
* Helper function to convert a value expressed in a 'user friendly format'
|
||||
* as in php.ini, e.g. 256k, 2M, 1G etc. Into a number of bytes
|
||||
@@ -211,7 +232,7 @@ class utils
|
||||
{
|
||||
// Build an absolute URL to this page on this server/port
|
||||
$sServerName = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '';
|
||||
if (MetaModel::GetConfig()->GetSecureConnectionRequired() || MetaModel::GetConfig()->GetHttpsHyperlinks())
|
||||
if (self::GetConfig()->GetSecureConnectionRequired() || self::GetConfig()->GetHttpsHyperlinks())
|
||||
{
|
||||
// If a secure connection is required, or if the URL is requested to start with HTTPS
|
||||
// then any URL must start with https !
|
||||
|
||||
@@ -45,7 +45,6 @@ class WebPage
|
||||
protected $a_include_stylesheets;
|
||||
protected $a_headers;
|
||||
protected $a_base;
|
||||
protected $iNextId;
|
||||
|
||||
public function __construct($s_title)
|
||||
{
|
||||
@@ -58,7 +57,6 @@ class WebPage
|
||||
$this->a_linked_stylesheets = array();
|
||||
$this->a_headers = array();
|
||||
$this->a_base = array( 'href' => '', 'target' => '');
|
||||
$this->iNextId = 0;
|
||||
ob_start(); // Start capturing the output
|
||||
}
|
||||
|
||||
@@ -105,14 +103,6 @@ class WebPage
|
||||
$this->add($this->GetP($s_html));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a pre-formatted text to the body of the page
|
||||
*/
|
||||
public function pre($s_html)
|
||||
{
|
||||
$this->add('<pre>'.$s_html.'</pre>');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a paragraph to the body of the page
|
||||
*/
|
||||
@@ -360,14 +350,5 @@ class WebPage
|
||||
}
|
||||
return $sTag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an ID (for any kind of HTML tag) that is guaranteed unique in this page
|
||||
* @return int The unique ID (in this page)
|
||||
*/
|
||||
public function GetUniqueId()
|
||||
{
|
||||
return $this->iNextId++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT.'/application/uiwizard.class.inc.php');
|
||||
require_once('../application/uiwizard.class.inc.php');
|
||||
|
||||
class WizardHelper
|
||||
{
|
||||
@@ -50,8 +50,8 @@ class WizardHelper
|
||||
foreach($this->m_aData['m_oCurrentValues'] as $sAttCode => $value)
|
||||
{
|
||||
// Because this is stored in a Javascript array, unused indexes
|
||||
// are filled with null values and unused keys (stored as strings) contain $$NULL$$
|
||||
if ( ($sAttCode !='id') && ($sAttCode !== false) && ($value !== null) && ($value !== '$$NULL$$'))
|
||||
// are filled with null values
|
||||
if ( ($sAttCode !='id') && ($sAttCode !== false) && ($value !== null))
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef($this->m_aData['m_sClass'], $sAttCode);
|
||||
if (($oAttDef->IsLinkSet()) && ($value != '') )
|
||||
@@ -227,11 +227,6 @@ class WizardHelper
|
||||
return $this->m_aData['m_sClass'];
|
||||
}
|
||||
|
||||
public function GetFormPrefix()
|
||||
{
|
||||
return $this->m_aData['m_sFormPrefix'];
|
||||
}
|
||||
|
||||
public function GetIdForField($sFieldName)
|
||||
{
|
||||
$sResult = '';
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once(APPROOT."/application/webpage.class.inc.php");
|
||||
require_once("../application/webpage.class.inc.php");
|
||||
/**
|
||||
* Simple web page with no includes or fancy formatting, useful to generateXML documents
|
||||
* The page adds the content-type text/XML and the encoding into the headers
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<?php
|
||||
define('APPROOT', dirname(__FILE__).'/');
|
||||
?>
|
||||
@@ -24,7 +24,7 @@
|
||||
*/
|
||||
|
||||
|
||||
require_once(APPROOT.'/core/email.class.inc.php');
|
||||
require_once('../core/email.class.inc.php');
|
||||
|
||||
/**
|
||||
* A user defined action, to customize the application
|
||||
@@ -235,10 +235,6 @@ class ActionEmail extends ActionNotification
|
||||
|
||||
$sSubject = MetaModel::ApplyParams($this->Get('subject'), $aContextArgs);
|
||||
$sBody = MetaModel::ApplyParams($this->Get('body'), $aContextArgs);
|
||||
|
||||
$oObj = $aContextArgs['this->object()'];
|
||||
$sServerIP = $_SERVER['SERVER_ADDR']; //gethostbyname(gethostname());
|
||||
$sReference = '<iTop/'.get_class($oObj).'/'.$oObj->GetKey().'@'.$sServerIP.'>';
|
||||
|
||||
$oEmail = new EMail();
|
||||
|
||||
@@ -255,14 +251,12 @@ class ActionEmail extends ActionNotification
|
||||
$sTestBody .= "<li>BCC: $sBCC</li>\n";
|
||||
$sTestBody .= "<li>From: $sFrom</li>\n";
|
||||
$sTestBody .= "<li>Reply-To: $sReplyTo</li>\n";
|
||||
$sTestBody .= "<li>References: $sReference</li>\n";
|
||||
$sTestBody .= "</ul>\n";
|
||||
$sTestBody .= "</p>\n";
|
||||
$sTestBody .= "</div>\n";
|
||||
$oEmail->SetBody($sTestBody);
|
||||
$oEmail->SetRecipientTO($this->Get('test_recipient'));
|
||||
$oEmail->SetRecipientFrom($this->Get('test_recipient'));
|
||||
$oEmail->SetReferences($sReference);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -273,7 +267,6 @@ class ActionEmail extends ActionNotification
|
||||
$oEmail->SetRecipientBCC($sBCC);
|
||||
$oEmail->SetRecipientFrom($sFrom);
|
||||
$oEmail->SetRecipientReplyTo($sReplyTo);
|
||||
$oEmail->SetReferences($sReference);
|
||||
}
|
||||
|
||||
if (empty($this->m_aMailErrors))
|
||||
@@ -346,4 +339,4 @@ class ActionEmail extends ActionNotification
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -142,7 +142,7 @@ class iTopArchive
|
||||
|
||||
public function WriteCatalog()
|
||||
{
|
||||
$sXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?".">\n"; // split the XML closing tag that disturbs PSPad's syntax coloring
|
||||
$sXml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">\n"; // split the XML closing tag that disturbs PSPad's syntax coloring
|
||||
$sXml .= "<archive version=\"1.0\">\n";
|
||||
$sXml .= "<title>{$this->m_sTitle}</title>\n";
|
||||
$sXml .= "<description>{$this->m_sDescription}</description>\n";
|
||||
|
||||
@@ -72,15 +72,8 @@ define('DEL_AUTO', 2);
|
||||
*/
|
||||
abstract class AttributeDefinition
|
||||
{
|
||||
public function GetType()
|
||||
{
|
||||
return Dict::S('Core:'.get_class($this));
|
||||
}
|
||||
public function GetTypeDesc()
|
||||
{
|
||||
return Dict::S('Core:'.get_class($this).'+');
|
||||
}
|
||||
|
||||
abstract public function GetType();
|
||||
abstract public function GetTypeDesc();
|
||||
abstract public function GetEditClass();
|
||||
|
||||
protected $m_sCode;
|
||||
@@ -269,11 +262,11 @@ abstract class AttributeDefinition
|
||||
return (string)$sValue;
|
||||
}
|
||||
|
||||
public function GetAllowedValues($aArgs = array(), $sContains = '')
|
||||
public function GetAllowedValues($aArgs = array(), $sBeginsWith = '')
|
||||
{
|
||||
$oValSetDef = $this->GetValuesDef();
|
||||
if (!$oValSetDef) return null;
|
||||
return $oValSetDef->GetValues($aArgs, $sContains);
|
||||
return $oValSetDef->GetValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -318,6 +311,8 @@ class AttributeLinkedSet extends AttributeDefinition
|
||||
return array_merge(parent::ListExpectedParams(), array("allowed_values", "depends_on", "linked_class", "ext_key_to_me", "count_min", "count_max"));
|
||||
}
|
||||
|
||||
public function GetType() {return "Array of objects";}
|
||||
public function GetTypeDesc() {return "Any kind of objects [subclass] of the same class";}
|
||||
public function GetEditClass() {return "List";}
|
||||
|
||||
public function IsWritable() {return true;}
|
||||
@@ -399,6 +394,8 @@ class AttributeDBFieldVoid extends AttributeDefinition
|
||||
// To be overriden, used in GetSQLColumns
|
||||
protected function GetSQLCol() {return "VARCHAR(255)";}
|
||||
|
||||
public function GetType() {return "Void";}
|
||||
public function GetTypeDesc() {return "Any kind of value, from the DB";}
|
||||
public function GetEditClass() {return "String";}
|
||||
|
||||
public function GetValuesDef() {return $this->Get("allowed_values");}
|
||||
@@ -498,6 +495,8 @@ class AttributeInteger extends AttributeDBField
|
||||
//return array_merge(parent::ListExpectedParams(), array());
|
||||
}
|
||||
|
||||
public function GetType() {return "Integer";}
|
||||
public function GetTypeDesc() {return "Numeric value (could be negative)";}
|
||||
public function GetEditClass() {return "String";}
|
||||
protected function GetSQLCol() {return "INT(11)";}
|
||||
|
||||
@@ -593,6 +592,8 @@ class AttributeDecimal extends AttributeDBField
|
||||
return array_merge(parent::ListExpectedParams(), array('digits', 'decimals' /* including precision */));
|
||||
}
|
||||
|
||||
public function GetType() {return "Decimal";}
|
||||
public function GetTypeDesc() {return "Decimal value (could be negative)";}
|
||||
public function GetEditClass() {return "String";}
|
||||
protected function GetSQLCol() {return "DECIMAL(".$this->Get('digits').",".$this->Get('decimals').")";}
|
||||
|
||||
@@ -689,6 +690,8 @@ class AttributeBoolean extends AttributeInteger
|
||||
//return array_merge(parent::ListExpectedParams(), array());
|
||||
}
|
||||
|
||||
public function GetType() {return "Boolean";}
|
||||
public function GetTypeDesc() {return "Boolean";}
|
||||
public function GetEditClass() {return "Integer";}
|
||||
protected function GetSQLCol() {return "TINYINT(1)";}
|
||||
|
||||
@@ -720,6 +723,8 @@ class AttributeString extends AttributeDBField
|
||||
//return array_merge(parent::ListExpectedParams(), array());
|
||||
}
|
||||
|
||||
public function GetType() {return "String";}
|
||||
public function GetTypeDesc() {return "Alphanumeric string";}
|
||||
public function GetEditClass() {return "String";}
|
||||
protected function GetSQLCol() {return "VARCHAR(255)";}
|
||||
|
||||
@@ -1047,6 +1052,8 @@ class AttributeEncryptedString extends AttributeString
|
||||
*/
|
||||
class AttributeText extends AttributeString
|
||||
{
|
||||
public function GetType() {return "Text";}
|
||||
public function GetTypeDesc() {return "Multiline character string";}
|
||||
public function GetEditClass() {return "Text";}
|
||||
protected function GetSQLCol() {return "TEXT";}
|
||||
|
||||
@@ -1068,21 +1075,6 @@ class AttributeText extends AttributeString
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a text column (size > ?), containing HTML code, to an attribute
|
||||
*
|
||||
* @package iTopORM
|
||||
*/
|
||||
class AttributeHTML extends AttributeText
|
||||
{
|
||||
public function GetEditClass() {return "HTML";}
|
||||
|
||||
public function GetAsHTML($sValue)
|
||||
{
|
||||
return $sValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialization of a string: email
|
||||
*
|
||||
@@ -1090,10 +1082,11 @@ class AttributeHTML extends AttributeText
|
||||
*/
|
||||
class AttributeEmailAddress extends AttributeString
|
||||
{
|
||||
public function GetTypeDesc() {return "Email address(es)";}
|
||||
|
||||
public function GetValidationPattern()
|
||||
{
|
||||
// return "^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";
|
||||
return "^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$";
|
||||
return "^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$";
|
||||
}
|
||||
|
||||
public function GetAsHTML($sValue)
|
||||
@@ -1110,6 +1103,8 @@ class AttributeEmailAddress extends AttributeString
|
||||
*/
|
||||
class AttributeIPAddress extends AttributeString
|
||||
{
|
||||
public function GetTypeDesc() {return "IP address";}
|
||||
|
||||
public function GetValidationPattern()
|
||||
{
|
||||
$sNum = '(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])';
|
||||
@@ -1124,39 +1119,27 @@ class AttributeIPAddress extends AttributeString
|
||||
*/
|
||||
class AttributeOQL extends AttributeText
|
||||
{
|
||||
public function GetTypeDesc() {return "OQL expression";}
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialization of a string: template (contains iTop placeholders like $current_contact_id$ or $this->name$)
|
||||
* Specialization of a string: template
|
||||
*
|
||||
* @package iTopORM
|
||||
*/
|
||||
class AttributeTemplateString extends AttributeString
|
||||
{
|
||||
public function GetTypeDesc() {return "Template string";}
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialization of a text: template (contains iTop placeholders like $current_contact_id$ or $this->name$)
|
||||
* Specialization of a text: template
|
||||
*
|
||||
* @package iTopORM
|
||||
*/
|
||||
class AttributeTemplateText extends AttributeText
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialization of a HTML: template (contains iTop placeholders like $current_contact_id$ or $this->name$)
|
||||
*
|
||||
* @package iTopORM
|
||||
*/
|
||||
class AttributeTemplateHTML extends AttributeText
|
||||
{
|
||||
public function GetEditClass() {return "HTML";}
|
||||
|
||||
public function GetAsHTML($sValue)
|
||||
{
|
||||
return $sValue;
|
||||
}
|
||||
public function GetTypeDesc() {return "Multiline template string";}
|
||||
}
|
||||
|
||||
|
||||
@@ -1167,6 +1150,8 @@ class AttributeTemplateHTML extends AttributeText
|
||||
*/
|
||||
class AttributeWikiText extends AttributeText
|
||||
{
|
||||
public function GetTypeDesc() {return "Multiline string with special formatting such as links to objects";}
|
||||
|
||||
public function GetAsHTML($value)
|
||||
{
|
||||
// [SELECT xxxx.... [label]] => hyperlink to a result list
|
||||
@@ -1191,6 +1176,8 @@ class AttributeEnum extends AttributeString
|
||||
//return array_merge(parent::ListExpectedParams(), array());
|
||||
}
|
||||
|
||||
public function GetType() {return "Enum";}
|
||||
public function GetTypeDesc() {return "List of predefined alphanumeric strings";}
|
||||
public function GetEditClass() {return "String";}
|
||||
protected function GetSQLCol()
|
||||
{
|
||||
@@ -1274,9 +1261,9 @@ class AttributeEnum extends AttributeString
|
||||
return $sLabel;
|
||||
}
|
||||
|
||||
public function GetAllowedValues($aArgs = array(), $sContains = '')
|
||||
public function GetAllowedValues($aArgs = array(), $sBeginsWith = '')
|
||||
{
|
||||
$aRawValues = parent::GetAllowedValues($aArgs, $sContains);
|
||||
$aRawValues = parent::GetAllowedValues($aArgs, $sBeginsWith);
|
||||
if (is_null($aRawValues)) return null;
|
||||
$aLocalizedValues = array();
|
||||
foreach ($aRawValues as $sKey => $sValue)
|
||||
@@ -1331,6 +1318,8 @@ class AttributeDateTime extends AttributeDBField
|
||||
//return array_merge(parent::ListExpectedParams(), array());
|
||||
}
|
||||
|
||||
public function GetType() {return "Date";}
|
||||
public function GetTypeDesc() {return "Date and time";}
|
||||
public function GetEditClass() {return "DateTime";}
|
||||
protected function GetSQLCol() {return "TIMESTAMP";}
|
||||
public static function GetAsUnixSeconds($value)
|
||||
@@ -1571,6 +1560,8 @@ class AttributeDate extends AttributeDateTime
|
||||
//return array_merge(parent::ListExpectedParams(), array());
|
||||
}
|
||||
|
||||
public function GetType() {return "Date";}
|
||||
public function GetTypeDesc() {return "Date";}
|
||||
public function GetEditClass() {return "Date";}
|
||||
protected function GetSQLCol() {return "DATE";}
|
||||
|
||||
@@ -1659,6 +1650,8 @@ class AttributeExternalKey extends AttributeDBFieldVoid
|
||||
return array_merge(parent::ListExpectedParams(), array("targetclass", "is_null_allowed", "on_target_delete"));
|
||||
}
|
||||
|
||||
public function GetType() {return "Extkey";}
|
||||
public function GetTypeDesc() {return "Link to another object";}
|
||||
public function GetEditClass() {return "ExtKey";}
|
||||
protected function GetSQLCol() {return "INT(11)";}
|
||||
public function RequiresIndex()
|
||||
@@ -1702,17 +1695,17 @@ class AttributeExternalKey extends AttributeDBFieldVoid
|
||||
return $oValSetDef;
|
||||
}
|
||||
|
||||
public function GetAllowedValues($aArgs = array(), $sContains = '')
|
||||
public function GetAllowedValues($aArgs = array(), $sBeginsWith = '')
|
||||
{
|
||||
try
|
||||
{
|
||||
return parent::GetAllowedValues($aArgs, $sContains);
|
||||
return parent::GetAllowedValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
catch (MissingQueryArgument $e)
|
||||
{
|
||||
// Some required arguments could not be found, enlarge to any existing value
|
||||
$oValSetDef = new ValueSetObjects('SELECT '.$this->GetTargetClass());
|
||||
return $oValSetDef->GetValues($aArgs, $sContains);
|
||||
return $oValSetDef->GetValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1738,22 +1731,6 @@ class AttributeExternalKey extends AttributeDBFieldVoid
|
||||
if (MetaModel::IsValidObject($proposedValue)) return $proposedValue->GetKey();
|
||||
return (int)$proposedValue;
|
||||
}
|
||||
|
||||
public function GetMaximumComboLength()
|
||||
{
|
||||
return $this->GetOptional('max_combo_length', MetaModel::GetConfig()->Get('max_combo_length'));
|
||||
}
|
||||
|
||||
public function GetMinAutoCompleteChars()
|
||||
{
|
||||
return $this->GetOptional('min_autocomplete_chars', MetaModel::GetConfig()->Get('min_autocomplete_chars'));
|
||||
}
|
||||
|
||||
public function AllowTargetCreation()
|
||||
{
|
||||
return $this->GetOptional('allow_target_creation', MetaModel::GetConfig()->Get('allow_target_creation'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1768,6 +1745,8 @@ class AttributeExternalField extends AttributeDefinition
|
||||
return array_merge(parent::ListExpectedParams(), array("extkey_attcode", "target_attcode"));
|
||||
}
|
||||
|
||||
public function GetType() {return "ExtkeyField";}
|
||||
public function GetTypeDesc() {return "Field of an object pointed to by the current object";}
|
||||
public function GetEditClass() {return "ExtField";}
|
||||
protected function GetSQLCol()
|
||||
{
|
||||
@@ -1965,6 +1944,8 @@ class AttributeURL extends AttributeString
|
||||
return array_merge(parent::ListExpectedParams(), array("target"));
|
||||
}
|
||||
|
||||
public function GetType() {return "Url";}
|
||||
public function GetTypeDesc() {return "Absolute or relative URL as a text string";}
|
||||
public function GetEditClass() {return "String";}
|
||||
|
||||
public function GetAsHTML($sValue)
|
||||
@@ -1998,6 +1979,8 @@ class AttributeBlob extends AttributeDefinition
|
||||
return array_merge(parent::ListExpectedParams(), array("depends_on"));
|
||||
}
|
||||
|
||||
public function GetType() {return "Blob";}
|
||||
public function GetTypeDesc() {return "Document";}
|
||||
public function GetEditClass() {return "Document";}
|
||||
|
||||
public function IsDirectField() {return true;}
|
||||
@@ -2141,6 +2124,8 @@ class AttributeOneWayPassword extends AttributeDefinition
|
||||
return array_merge(parent::ListExpectedParams(), array("depends_on"));
|
||||
}
|
||||
|
||||
public function GetType() {return "One Way Password";}
|
||||
public function GetTypeDesc() {return "One Way Password";}
|
||||
public function GetEditClass() {return "One Way Password";}
|
||||
|
||||
public function IsDirectField() {return true;}
|
||||
@@ -2263,6 +2248,8 @@ class AttributeOneWayPassword extends AttributeDefinition
|
||||
// Indexed array having two dimensions
|
||||
class AttributeTable extends AttributeText
|
||||
{
|
||||
public function GetType() {return "Table";}
|
||||
public function GetTypeDesc() {return "Array with 2 dimensions";}
|
||||
public function GetEditClass() {return "Text";}
|
||||
protected function GetSQLCol() {return "TEXT";}
|
||||
|
||||
@@ -2338,6 +2325,8 @@ class AttributeTable extends AttributeText
|
||||
// The PHP value is a hash array, it is stored as a TEXT column
|
||||
class AttributePropertySet extends AttributeTable
|
||||
{
|
||||
public function GetType() {return "PropertySet";}
|
||||
public function GetTypeDesc() {return "List of properties (name and value)";}
|
||||
public function GetEditClass() {return "Text";}
|
||||
protected function GetSQLCol() {return "TEXT";}
|
||||
|
||||
|
||||
@@ -219,14 +219,6 @@ class RowStatus_Modify extends RowStatus
|
||||
}
|
||||
}
|
||||
|
||||
class RowStatus_Disappeared extends RowStatus_Modify
|
||||
{
|
||||
public function GetDescription()
|
||||
{
|
||||
return "disappeared, changed ".$this->m_iChanged." cols";
|
||||
}
|
||||
}
|
||||
|
||||
class RowStatus_Issue extends RowStatus
|
||||
{
|
||||
protected $m_sReason;
|
||||
@@ -255,19 +247,15 @@ class BulkChange
|
||||
// #@# todo: rename the variables to sColIndex
|
||||
protected $m_aAttList; // attcode => iCol
|
||||
protected $m_aExtKeys; // aExtKeys[sExtKeyAttCode][sExtReconcKeyAttCode] = iCol;
|
||||
protected $m_aReconcilKeys; // attcode (attcode = 'id' for the pkey)
|
||||
protected $m_sSynchroScope; // OQL - if specified, then the missing items will be reported
|
||||
protected $m_aOnDisappear; // array of attcode => value, values to be set when an object gets out of scope (ignored if no scope has been defined)
|
||||
protected $m_aReconcilKeys;// attcode (attcode = 'id' for the pkey)
|
||||
|
||||
public function __construct($sClass, $aData, $aAttList, $aExtKeys, $aReconcilKeys, $sSynchroScope = null, $aOnDisappear = null)
|
||||
public function __construct($sClass, $aData, $aAttList, $aExtKeys, $aReconcilKeys)
|
||||
{
|
||||
$this->m_sClass = $sClass;
|
||||
$this->m_aData = $aData;
|
||||
$this->m_aAttList = $aAttList;
|
||||
$this->m_aReconcilKeys = $aReconcilKeys;
|
||||
$this->m_aExtKeys = $aExtKeys;
|
||||
$this->m_sSynchroScope = $sSynchroScope;
|
||||
$this->m_aOnDisappear = $aOnDisappear;
|
||||
}
|
||||
|
||||
protected function ResolveExternalKey($aRowData, $sAttCode, &$aResults)
|
||||
@@ -442,70 +430,6 @@ class BulkChange
|
||||
return $aResults;
|
||||
}
|
||||
|
||||
protected function PrepareMissingObject(&$oTargetObj, &$aErrors)
|
||||
{
|
||||
$aResults = array();
|
||||
$aErrors = array();
|
||||
|
||||
// External keys
|
||||
//
|
||||
foreach($this->m_aExtKeys as $sAttCode => $aKeyConfig)
|
||||
{
|
||||
//$oExtKey = MetaModel::GetAttributeDef(get_class($oTargetObj), $sAttCode);
|
||||
$aResults[$sAttCode]= new CellStatus_Void($oTargetObj->Get($sAttCode));
|
||||
|
||||
foreach ($aKeyConfig as $sForeignAttCode => $iCol)
|
||||
{
|
||||
$aResults[$iCol] = new CellStatus_Void('?');
|
||||
}
|
||||
}
|
||||
|
||||
// Update attributes
|
||||
//
|
||||
foreach($this->m_aOnDisappear as $sAttCode => $value)
|
||||
{
|
||||
if (!MetaModel::IsValidAttCode(get_class($oTargetObj), $sAttCode))
|
||||
{
|
||||
throw new BulkChangeException('Invalid attribute code', array('class' => get_class($oTargetObj), 'attcode' => $sAttCode));
|
||||
}
|
||||
$oTargetObj->Set($sAttCode, $value);
|
||||
if (!array_key_exists($sAttCode, $this->m_aAttList))
|
||||
{
|
||||
// #@# will be out of the reporting... (counted anyway)
|
||||
}
|
||||
}
|
||||
|
||||
// Reporting on fields
|
||||
//
|
||||
$aChangedFields = $oTargetObj->ListChanges();
|
||||
foreach ($this->m_aAttList as $sAttCode => $iCol)
|
||||
{
|
||||
if ($sAttCode == 'id')
|
||||
{
|
||||
$aResults[$iCol]= new CellStatus_Void($oTargetObj->GetKey());
|
||||
}
|
||||
if (array_key_exists($sAttCode, $aChangedFields))
|
||||
{
|
||||
$aResults[$iCol]= new CellStatus_Modify($oTargetObj->Get($sAttCode), $oTargetObj->GetOriginal($sAttCode));
|
||||
}
|
||||
else
|
||||
{
|
||||
// By default... nothing happens
|
||||
$aResults[$iCol]= new CellStatus_Void($oTargetObj->Get($sAttCode));
|
||||
}
|
||||
}
|
||||
|
||||
// Checks
|
||||
//
|
||||
$res = $oTargetObj->CheckConsistency();
|
||||
if ($res !== true)
|
||||
{
|
||||
// $res contains the error description
|
||||
$aErrors["GLOBAL"] = "Attributes not consistent with each others: $res";
|
||||
}
|
||||
return $aResults;
|
||||
}
|
||||
|
||||
|
||||
protected function CreateObject(&$aResult, $iRow, $aRowData, CMDBChange $oChange = null)
|
||||
{
|
||||
@@ -516,7 +440,7 @@ class BulkChange
|
||||
{
|
||||
$sErrors = implode(', ', $aErrors);
|
||||
$aResult[$iRow]["__STATUS__"] = new RowStatus_Issue("Unexpected attribute value(s)");
|
||||
return $oTargetObj;
|
||||
return;
|
||||
}
|
||||
|
||||
// Check that any external key will have a value proposed
|
||||
@@ -535,7 +459,7 @@ class BulkChange
|
||||
{
|
||||
$sMissingKeys = implode(', ', $aMissingKeys);
|
||||
$aResult[$iRow]["__STATUS__"] = new RowStatus_Issue("Could not be created, due to missing external key(s): $sMissingKeys");
|
||||
return $oTargetObj;
|
||||
return;
|
||||
}
|
||||
|
||||
// Optionaly record the results
|
||||
@@ -553,7 +477,6 @@ class BulkChange
|
||||
$aResult[$iRow]["finalclass"] = get_class($oTargetObj);
|
||||
$aResult[$iRow]["id"] = new CellStatus_Void(0);
|
||||
}
|
||||
return $oTargetObj;
|
||||
}
|
||||
|
||||
protected function UpdateObject(&$aResult, $iRow, $oTargetObj, $aRowData, CMDBChange $oChange = null)
|
||||
@@ -589,40 +512,6 @@ class BulkChange
|
||||
$aResult[$iRow]["__STATUS__"] = new RowStatus_NoChange();
|
||||
}
|
||||
}
|
||||
|
||||
protected function UpdateMissingObject(&$aResult, $iRow, $oTargetObj, CMDBChange $oChange = null)
|
||||
{
|
||||
$aResult[$iRow] = $this->PrepareMissingObject($oTargetObj, $aErrors);
|
||||
|
||||
// Reporting
|
||||
//
|
||||
$aResult[$iRow]["finalclass"] = get_class($oTargetObj);
|
||||
$aResult[$iRow]["id"] = new CellStatus_Void($oTargetObj->GetKey());
|
||||
|
||||
if (count($aErrors) > 0)
|
||||
{
|
||||
$sErrors = implode(', ', $aErrors);
|
||||
$aResult[$iRow]["__STATUS__"] = new RowStatus_Issue("Unexpected attribute value(s)");
|
||||
return;
|
||||
}
|
||||
|
||||
$aChangedFields = $oTargetObj->ListChanges();
|
||||
if (count($aChangedFields) > 0)
|
||||
{
|
||||
$aResult[$iRow]["__STATUS__"] = new RowStatus_Disappeared(count($aChangedFields));
|
||||
|
||||
// Optionaly record the results
|
||||
//
|
||||
if ($oChange)
|
||||
{
|
||||
$oTargetObj->DBUpdateTracked($oChange);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult[$iRow]["__STATUS__"] = new RowStatus_Disappeared(0);
|
||||
}
|
||||
}
|
||||
|
||||
public function Process(CMDBChange $oChange = null)
|
||||
{
|
||||
@@ -639,23 +528,14 @@ class BulkChange
|
||||
print_r($this->m_aExtKeys);
|
||||
echo "Reconciliation:\n";
|
||||
print_r($this->m_aReconcilKeys);
|
||||
echo "Synchro scope:\n";
|
||||
print_r($this->m_sSynchroScope);
|
||||
echo "Synchro changes:\n";
|
||||
print_r($this->m_aOnDisappear);
|
||||
//echo "Data:\n";
|
||||
//print_r($this->m_aData);
|
||||
echo "</pre>\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
// Compute the results
|
||||
//
|
||||
if (!is_null($this->m_sSynchroScope))
|
||||
{
|
||||
$aVisited = array();
|
||||
}
|
||||
$aResult = array();
|
||||
foreach($this->m_aData as $iRow => $aRowData)
|
||||
{
|
||||
@@ -725,18 +605,13 @@ class BulkChange
|
||||
switch($oReconciliationSet->Count())
|
||||
{
|
||||
case 0:
|
||||
$oTargetObj = $this->CreateObject($aResult, $iRow, $aRowData, $oChange);
|
||||
$this->CreateObject($aResult, $iRow, $aRowData, $oChange);
|
||||
// $aResult[$iRow]["__STATUS__"]=> set in CreateObject
|
||||
$aVisited[] = $oTargetObj->GetKey();
|
||||
break;
|
||||
case 1:
|
||||
$oTargetObj = $oReconciliationSet->Fetch();
|
||||
$this->UpdateObject($aResult, $iRow, $oTargetObj, $aRowData, $oChange);
|
||||
// $aResult[$iRow]["__STATUS__"]=> set in UpdateObject
|
||||
if (!is_null($this->m_sSynchroScope))
|
||||
{
|
||||
$aVisited[] = $oTargetObj->GetKey();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Found several matches, ambiguous
|
||||
@@ -770,295 +645,8 @@ class BulkChange
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($this->m_sSynchroScope))
|
||||
{
|
||||
// Compute the delta between the scope and visited objects
|
||||
$oScopeSearch = DBObjectSearch::FromOQL($this->m_sSynchroScope);
|
||||
$oScopeSet = new DBObjectSet($oScopeSearch);
|
||||
while ($oObj = $oScopeSet->Fetch())
|
||||
{
|
||||
$iObj = $oObj->GetKey();
|
||||
if (!in_array($iObj, $aVisited))
|
||||
{
|
||||
$iRow++;
|
||||
$this->UpdateMissingObject($aResult, $iRow, $oObj, $oChange);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $aResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the history of bulk imports
|
||||
*/
|
||||
static function DisplayImportHistory(WebPage $oPage, $bFromAjax = false, $bShowAll = false)
|
||||
{
|
||||
$sAjaxDivId = "CSVImportHistory";
|
||||
if (!$bFromAjax)
|
||||
{
|
||||
$oPage->add('<div id="'.$sAjaxDivId.'">');
|
||||
}
|
||||
|
||||
$oPage->p(Dict::S('UI:History:BulkImports+'));
|
||||
|
||||
$oBulkChangeSearch = DBObjectSearch::FromOQL("SELECT CMDBChange WHERE userinfo LIKE '%(CSV)'");
|
||||
|
||||
$iQueryLimit = $bShowAll ? 0 : MetaModel::GetConfig()->GetMaxDisplayLimit() + 1;
|
||||
$oBulkChanges = new DBObjectSet($oBulkChangeSearch, array('date' => false), array(), $iQueryLimit);
|
||||
|
||||
$oAppContext = new ApplicationContext();
|
||||
|
||||
$bLimitExceeded = false;
|
||||
if ($oBulkChanges->Count() > MetaModel::GetConfig()->GetMaxDisplayLimit())
|
||||
{
|
||||
$bLimitExceeded = true;
|
||||
if (!$bShowAll)
|
||||
{
|
||||
$iMaxObjects = MetaModel::GetConfig()->GetMinDisplayLimit();
|
||||
$oBulkChanges->SetLimit($iMaxObjects);
|
||||
}
|
||||
}
|
||||
$oBulkChanges->Seek(0);
|
||||
|
||||
$aDetails = array();
|
||||
while ($oChange = $oBulkChanges->Fetch())
|
||||
{
|
||||
$sDate = '<a href="?step=10&changeid='.$oChange->GetKey().'&'.$oAppContext->GetForLink().'">'.$oChange->Get('date').'</a>';
|
||||
$sUser = $oChange->GetUserName();
|
||||
if (preg_match('/^(.*)\\(CSV\\)$/i', $oChange->Get('userinfo'), $aMatches))
|
||||
{
|
||||
$sUser = $aMatches[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sUser = $oChange->Get('userinfo');
|
||||
}
|
||||
|
||||
$oOpSearch = DBObjectSearch::FromOQL("SELECT CMDBChangeOpCreate WHERE change = :change_id");
|
||||
$oOpSet = new DBObjectSet($oOpSearch, array(), array('change_id' => $oChange->GetKey()));
|
||||
$iCreated = $oOpSet->Count();
|
||||
|
||||
// Get the class from the first item found (assumption: a CSV load is done for a single class)
|
||||
if ($oCreateOp = $oOpSet->Fetch())
|
||||
{
|
||||
$sClass = $oCreateOp->Get('objclass');
|
||||
}
|
||||
|
||||
$oOpSearch = DBObjectSearch::FromOQL("SELECT CMDBChangeOpSetAttribute WHERE change = :change_id");
|
||||
$oOpSet = new DBObjectSet($oOpSearch, array(), array('change_id' => $oChange->GetKey()));
|
||||
|
||||
$aModified = array();
|
||||
$aAttList = array();
|
||||
while ($oModified = $oOpSet->Fetch())
|
||||
{
|
||||
// Get the class (if not done earlier on object creation)
|
||||
$sClass = $oModified->Get('objclass');
|
||||
$iKey = $oModified->Get('objkey');
|
||||
$sAttCode = $oModified->Get('attcode');
|
||||
|
||||
$aAttList[$sClass][$sAttCode] = true;
|
||||
$aModified["$sClass::$iKey"] = true;
|
||||
}
|
||||
$iModified = count($aModified);
|
||||
|
||||
// Assumption: there is only one class of objects being loaded
|
||||
// Then the last class found gives us the class for every object
|
||||
if ( ($iModified > 0) || ($iCreated > 0))
|
||||
{
|
||||
$aDetails[] = array('date' => $sDate, 'user' => $sUser, 'class' => $sClass, 'created' => $iCreated, 'modified' => $iModified);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$aConfig = array( 'date' => array('label' => Dict::S('UI:History:Date'), 'description' => Dict::S('UI:History:Date+')),
|
||||
'user' => array('label' => Dict::S('UI:History:User'), 'description' => Dict::S('UI:History:User+')),
|
||||
'class' => array('label' => Dict::S('Core:AttributeClass'), 'description' => Dict::S('Core:AttributeClass+')),
|
||||
'created' => array('label' => Dict::S('UI:History:StatsCreations'), 'description' => Dict::S('UI:History:StatsCreations+')),
|
||||
'modified' => array('label' => Dict::S('UI:History:StatsModifs'), 'description' => Dict::S('UI:History:StatsModifs+')),
|
||||
);
|
||||
|
||||
if ($bLimitExceeded)
|
||||
{
|
||||
if ($bShowAll)
|
||||
{
|
||||
// Collapsible list
|
||||
$oPage->add('<p>'.Dict::Format('UI:CountOfResults', $oBulkChanges->Count()).' <a class="truncated" onclick="OnTruncatedHistoryToggle(false);">'.Dict::S('UI:CollapseList').'</a></p>');
|
||||
}
|
||||
else
|
||||
{
|
||||
// Truncated list
|
||||
$iMinDisplayLimit = MetaModel::GetConfig()->GetMinDisplayLimit();
|
||||
$sCollapsedLabel = Dict::Format('UI:TruncatedResults', $iMinDisplayLimit, $oBulkChanges->Count());
|
||||
$sLinkLabel = Dict::S('UI:DisplayAll');
|
||||
$oPage->add('<p>'.$sCollapsedLabel.' <a class="truncated" onclick="OnTruncatedHistoryToggle(true);">'.$sLinkLabel.'</p>');
|
||||
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
$('#$sAjaxDivId table.listResults').addClass('truncated');
|
||||
$('#$sAjaxDivId table.listResults tr:last td').addClass('truncated');
|
||||
EOF
|
||||
);
|
||||
|
||||
|
||||
$sAppContext = $oAppContext->GetForLink();
|
||||
$oPage->add_script(
|
||||
<<<EOF
|
||||
function OnTruncatedHistoryToggle(bShowAll)
|
||||
{
|
||||
$.get('../pages/ajax.render.php?{$sAppContext}', {operation: 'displayCSVHistory', showall: bShowAll}, function(data)
|
||||
{
|
||||
$('#$sAjaxDivId').html(data);
|
||||
var table = $('#$sAjaxDivId .listResults');
|
||||
table.tableHover(); // hover tables
|
||||
table.tablesorter( { widgets: ['myZebra', 'truncatedList']} ); // sortable and zebra tables
|
||||
}
|
||||
);
|
||||
}
|
||||
EOF
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Normal display - full list without any decoration
|
||||
}
|
||||
|
||||
$oPage->table($aConfig, $aDetails);
|
||||
|
||||
if (!$bFromAjax)
|
||||
{
|
||||
$oPage->add('</div>');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the details of an import
|
||||
*/
|
||||
static function DisplayImportHistoryDetails(iTopWebPage $oPage, $iChange)
|
||||
{
|
||||
if ($iChange == 0)
|
||||
{
|
||||
throw new Exception("Missing parameter changeid");
|
||||
}
|
||||
$oChange = MetaModel::GetObject('CMDBChange', $iChange, false);
|
||||
if (is_null($oChange))
|
||||
{
|
||||
throw new Exception("Unknown change: $iChange");
|
||||
}
|
||||
$oPage->add("<div><p><h1>".Dict::Format('UI:History:BulkImportDetails', $oChange->Get('date'), $oChange->GetUserName())."</h1></p></div>\n");
|
||||
|
||||
// Assumption : change made one single class of objects
|
||||
$aObjects = array();
|
||||
$aAttributes = array(); // array of attcode => occurences
|
||||
|
||||
$oOpSearch = DBObjectSearch::FromOQL("SELECT CMDBChangeOp WHERE change = :change_id");
|
||||
$oOpSet = new DBObjectSet($oOpSearch, array(), array('change_id' => $iChange));
|
||||
while ($oOperation = $oOpSet->Fetch())
|
||||
{
|
||||
$sClass = $oOperation->Get('objclass');
|
||||
$iKey = $oOperation->Get('objkey');
|
||||
$iObjId = "$sClass::$iKey";
|
||||
if (!isset($aObjects[$iObjId]))
|
||||
{
|
||||
$aObjects[$iObjId] = array();
|
||||
$aObjects[$iObjId]['__class__'] = $sClass;
|
||||
$aObjects[$iObjId]['__id__'] = $iKey;
|
||||
}
|
||||
if (get_class($oOperation) == 'CMDBChangeOpCreate')
|
||||
{
|
||||
$aObjects[$iObjId]['__created__'] = true;
|
||||
}
|
||||
elseif (is_subclass_of($oOperation, 'CMDBChangeOpSetAttribute'))
|
||||
{
|
||||
$sAttCode = $oOperation->Get('attcode');
|
||||
|
||||
if (get_class($oOperation) == 'CMDBChangeOpSetAttributeScalar')
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
$oOldTarget = MetaModel::GetObject($oAttDef->GetTargetClass(), $oOperation->Get('oldvalue'));
|
||||
$oNewTarget = MetaModel::GetObject($oAttDef->GetTargetClass(), $oOperation->Get('newvalue'));
|
||||
$sOldValue = $oOldTarget->GetHyperlink();
|
||||
$sNewValue = $oNewTarget->GetHyperlink();
|
||||
}
|
||||
else
|
||||
{
|
||||
$sOldValue = $oOperation->GetAsHTML('oldvalue');
|
||||
$sNewValue = $oOperation->GetAsHTML('newvalue');
|
||||
}
|
||||
$aObjects[$iObjId][$sAttCode] = $sOldValue.' -> '.$sNewValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aObjects[$iObjId][$sAttCode] = 'n/a';
|
||||
}
|
||||
|
||||
if (isset($aAttributes[$sAttCode]))
|
||||
{
|
||||
$aAttributes[$sAttCode]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aAttributes[$sAttCode] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$aDetails = array();
|
||||
foreach($aObjects as $iUId => $aObjData)
|
||||
{
|
||||
$aRow = array();
|
||||
$oObject = MetaModel::GetObject($aObjData['__class__'], $aObjData['__id__'], false);
|
||||
if (is_null($oObject))
|
||||
{
|
||||
$aRow['object'] = $aObjData['__class__'].'::'.$aObjData['__id__'].' (deleted)';
|
||||
}
|
||||
else
|
||||
{
|
||||
$aRow['object'] = $oObject->GetHyperlink();
|
||||
}
|
||||
if (isset($aObjData['__created__']))
|
||||
{
|
||||
$aRow['operation'] = Dict::S('Change:ObjectCreated');
|
||||
}
|
||||
else
|
||||
{
|
||||
$aRow['operation'] = Dict::S('Change:ObjectModified');
|
||||
}
|
||||
foreach ($aAttributes as $sAttCode => $iOccurences)
|
||||
{
|
||||
if (isset($aObjData[$sAttCode]))
|
||||
{
|
||||
$aRow[$sAttCode] = $aObjData[$sAttCode];
|
||||
}
|
||||
elseif (!is_null($oObject))
|
||||
{
|
||||
// This is the current vaslue: $oObject->GetAsHtml($sAttCode)
|
||||
// whereas we are displaying the value that was set at the time
|
||||
// the object was created
|
||||
// This requires addtional coding...let's do that later
|
||||
$aRow[$sAttCode] = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$aRow[$sAttCode] = '';
|
||||
}
|
||||
}
|
||||
$aDetails[] = $aRow;
|
||||
}
|
||||
|
||||
$aConfig = array();
|
||||
$aConfig['object'] = array('label' => MetaModel::GetName($sClass), 'description' => MetaModel::GetClassDescription($sClass));
|
||||
$aConfig['operation'] = array('label' => Dict::S('UI:History:Changes'), 'description' => Dict::S('UI:History:Changes+'));
|
||||
foreach ($aAttributes as $sAttCode => $iOccurences)
|
||||
{
|
||||
$aConfig[$sAttCode] = array('label' => MetaModel::GetLabel($sClass, $sAttCode), 'description' => MetaModel::GetDescription($sClass, $sAttCode));
|
||||
}
|
||||
$oPage->table($aConfig, $aDetails);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -49,34 +49,6 @@ class CMDBChange extends DBObject
|
||||
MetaModel::Init_AddAttribute(new AttributeDateTime("date", array("allowed_values"=>null, "sql"=>"date", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("userinfo", array("allowed_values"=>null, "sql"=>"userinfo", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
}
|
||||
|
||||
// Helper to keep track of the author of a given change,
|
||||
// taking into account a variety of cases (contact attached or not, impersonation)
|
||||
static public function GetCurrentUserName()
|
||||
{
|
||||
if (UserRights::IsImpersonated())
|
||||
{
|
||||
$sUserString = Dict::Format('UI:Archive_User_OnBehalfOf_User', UserRights::GetRealUserFriendlyName(), UserRights::GetUserFriendlyName());
|
||||
}
|
||||
else
|
||||
{
|
||||
$sUserString = UserRights::GetUserFriendlyName();
|
||||
}
|
||||
return $sUserString;
|
||||
}
|
||||
|
||||
public function GetUserName()
|
||||
{
|
||||
if (preg_match('/^(.*)\\(CSV\\)$/i', $this->Get('userinfo'), $aMatches))
|
||||
{
|
||||
$sUser = $aMatches[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sUser = $this->Get('userinfo');
|
||||
}
|
||||
return $sUser;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -59,8 +59,6 @@ require_once('dbobject.class.php');
|
||||
require_once('dbobjectsearch.class.php');
|
||||
require_once('dbobjectset.class.php');
|
||||
|
||||
require_once('dbproperty.class.inc.php');
|
||||
|
||||
// db change tracking data model
|
||||
require_once('cmdbchange.class.inc.php');
|
||||
require_once('cmdbchangeop.class.inc.php');
|
||||
@@ -152,7 +150,7 @@ abstract class CMDBObject extends DBObject
|
||||
{
|
||||
$original = '';
|
||||
}
|
||||
$oMyChangeOp->Set("prevstring", $original);
|
||||
$oMyChangeOp->Set("prevdata", $original);
|
||||
$iId = $oMyChangeOp->DBInsertNoReload();
|
||||
}
|
||||
elseif ($oAttDef instanceOf AttributeBlob)
|
||||
@@ -234,7 +232,7 @@ abstract class CMDBObject extends DBObject
|
||||
// and we decided that it was too risky to activate it
|
||||
// Anyhow, users willing to have a very strong security could set
|
||||
// skip_strong_security = 0, in the config file
|
||||
$bSkipStrongSecurity = MetaModel::GetConfig()->Get('skip_strong_security');
|
||||
$bSkipStrongSecurity = utils::GetConfig()->Get('skip_strong_security');
|
||||
}
|
||||
if (!$bSkipStrongSecurity)
|
||||
{
|
||||
|
||||
@@ -533,51 +533,6 @@ class CMDBSource
|
||||
// so far, only one line...
|
||||
return implode(', ', $aRes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the slave status of the server
|
||||
* @return bool true if the server is slave
|
||||
*/
|
||||
public static function IsSlaveServer()
|
||||
{
|
||||
try
|
||||
{
|
||||
$result = self::Query('SHOW SLAVE STATUS');
|
||||
}
|
||||
catch(MySQLException $e)
|
||||
{
|
||||
throw new CoreException("Current user not allowed to check the status", array('mysql_error' => $e->getMessage()));
|
||||
}
|
||||
|
||||
if (mysql_num_rows($result) == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Returns one single row anytime
|
||||
$aRow = mysql_fetch_array($result, MYSQL_ASSOC);
|
||||
mysql_free_result($result);
|
||||
|
||||
if (!isset($aRow['Slave_IO_Running']))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!isset($aRow['Slave_SQL_Running']))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// If at least one slave thread is running, then we consider that the slave is enabled
|
||||
if ($aRow['Slave_IO_Running'] == 'Yes')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ($aRow['Slave_SQL_Running'] == 'Yes')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -18,11 +18,6 @@ define('ITOP_VERSION', '$ITOP_VERSION$');
|
||||
define('ITOP_REVISION', '$WCREV$');
|
||||
define('ITOP_BUILD_DATE', '$WCNOW$');
|
||||
|
||||
define('ACCESS_USER_WRITE', 1);
|
||||
define('ACCESS_ADMIN_WRITE', 2);
|
||||
define('ACCESS_FULL', ACCESS_USER_WRITE | ACCESS_ADMIN_WRITE);
|
||||
define('ACCESS_READONLY', 0);
|
||||
|
||||
/**
|
||||
* Configuration read/write
|
||||
*
|
||||
@@ -75,7 +70,6 @@ class Config
|
||||
|
||||
protected $m_aAppModules;
|
||||
protected $m_aDataModels;
|
||||
protected $m_aWebServiceCategories;
|
||||
protected $m_aAddons;
|
||||
protected $m_aDictionaries;
|
||||
|
||||
@@ -124,95 +118,6 @@ class Config
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => true,
|
||||
),
|
||||
'max_combo_length' => array(
|
||||
'type' => 'int',
|
||||
'description' => 'The maximum number of elements in a drop-down list. If more then an autocomplete will be used',
|
||||
'default' => 50,
|
||||
'value' => 50,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'min_autocomplete_chars' => array(
|
||||
'type' => 'int',
|
||||
'description' => 'The minimum number of characters to type in order to trigger the "autocomplete" behavior',
|
||||
'default' => 3,
|
||||
'value' => 3,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'allow_target_creation' => array(
|
||||
'type' => 'bool',
|
||||
'description' => 'Displays the + button on external keys to create target objects',
|
||||
'default' => true,
|
||||
'value' => true,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
// Levels that trigger a confirmation in the CSV import/synchro wizard
|
||||
'csv_import_min_object_confirmation' => array(
|
||||
'type' => 'integer',
|
||||
'description' => 'Minimum number of objects to check for the confirmation percentages',
|
||||
'default' => 3,
|
||||
'value' => 3,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'csv_import_errors_percentage' => array(
|
||||
'type' => 'integer',
|
||||
'description' => 'Percentage of errors that trigger a confirmation in the CSV import',
|
||||
'default' => 50,
|
||||
'value' => 50,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'csv_import_modifications_percentage' => array(
|
||||
'type' => 'integer',
|
||||
'description' => 'Percentage of modifications that trigger a confirmation in the CSV import',
|
||||
'default' => 50,
|
||||
'value' => 50,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'csv_import_creations_percentage' => array(
|
||||
'type' => 'integer',
|
||||
'description' => 'Percentage of creations that trigger a confirmation in the CSV import',
|
||||
'default' => 50,
|
||||
'value' => 50,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
'access_mode' => array(
|
||||
'type' => 'integer',
|
||||
'description' => 'Combination of flags (ACCESS_USER_WRITE | ACCESS_ADMIN_WRITE, or ACCESS_FULL)',
|
||||
'default' => ACCESS_FULL,
|
||||
'value' => ACCESS_FULL,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => true,
|
||||
),
|
||||
'access_message' => array(
|
||||
'type' => 'string',
|
||||
'description' => 'Message displayed to the users when there is any access restriction',
|
||||
'default' => 'iTop is temporarily frozen, please wait... (the admin team)',
|
||||
'value' => '',
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => true,
|
||||
),
|
||||
'online_help' => array(
|
||||
'type' => 'string',
|
||||
'description' => 'Hyperlink to the online-help web page',
|
||||
'default' => 'http://www.combodo.com/itop-help',
|
||||
'value' => '',
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => true,
|
||||
),
|
||||
'log_usage' => array(
|
||||
'type' => 'bool',
|
||||
'description' => 'Log the usage of the application (i.e. the date/time and the user name of each login)',
|
||||
'default' => false,
|
||||
'value' => false,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
),
|
||||
);
|
||||
|
||||
public function IsProperty($sPropCode)
|
||||
@@ -240,6 +145,7 @@ class Config
|
||||
default:
|
||||
throw new CoreException('Unknown type for setting', array('property' => $sPropCode, 'type' => $sType));
|
||||
}
|
||||
|
||||
$this->m_aSettings[$sPropCode]['value'] = $value;
|
||||
$this->m_aSettings[$sPropCode]['source_of_value'] = $sSourceDesc;
|
||||
|
||||
@@ -337,46 +243,38 @@ class Config
|
||||
$this->m_sFile = $sConfigFile;
|
||||
$this->m_aAppModules = array(
|
||||
// Some default modules, always present can be move to an official iTop Module later if needed
|
||||
'application/transaction.class.inc.php',
|
||||
'application/menunode.class.inc.php',
|
||||
'application/user.preferences.class.inc.php',
|
||||
'application/audit.rule.class.inc.php',
|
||||
// Romain - That's dirty, because those classes are in fact part of the core
|
||||
'../application/transaction.class.inc.php',
|
||||
'../application/menunode.class.inc.php',
|
||||
'../application/user.preferences.class.inc.php',
|
||||
'../application/audit.rule.class.inc.php',
|
||||
// Romain - That's dirty, because those 3 classes are in fact part of the core
|
||||
// but I needed those classes to be derived from cmdbAbstractObject
|
||||
// (to be managed via the GUI) and this class in not really known from
|
||||
// the core, PLUS I needed the includes to be there also for the setup
|
||||
// to create the tables.
|
||||
'core/event.class.inc.php',
|
||||
'core/action.class.inc.php',
|
||||
'core/trigger.class.inc.php',
|
||||
'../core/event.class.inc.php',
|
||||
'../core/action.class.inc.php',
|
||||
'../core/trigger.class.inc.php',
|
||||
);
|
||||
$this->m_aDataModels = array();
|
||||
$this->m_aWebServiceCategories = array(
|
||||
'webservices/webservices.basic.php',
|
||||
);
|
||||
$this->m_aAddons = array(
|
||||
// Default AddOn, always present can be moved to an official iTop Module later if needed
|
||||
'user rights' => 'addons/userrights/userrightsprofile.class.inc.php',
|
||||
'user rights' => '../addons/userrights/userrightsprofile.class.inc.php',
|
||||
);
|
||||
$this->m_aDictionaries = array(
|
||||
// Default dictionaries, always present can be moved to an official iTop Module later if needed
|
||||
'dictionaries/dictionary.itop.core.php',
|
||||
'dictionaries/dictionary.itop.ui.php', // Support for English
|
||||
'dictionaries/fr.dictionary.itop.ui.php', // Support for French
|
||||
'dictionaries/fr.dictionary.itop.core.php', // Support for French
|
||||
'dictionaries/es_cr.dictionary.itop.ui.php', // Support for Spanish (from Costa Rica)
|
||||
'dictionaries/es_cr.dictionary.itop.core.php', // Support for Spanish (from Costa Rica)
|
||||
'dictionaries/de.dictionary.itop.ui.php', // Support for German
|
||||
'dictionaries/de.dictionary.itop.core.php', // Support for German
|
||||
'dictionaries/pt_br.dictionary.itop.ui.php', // Support for Brazilian Portuguese
|
||||
'dictionaries/pt_br.dictionary.itop.core.php', // Support for Brazilian Portuguese
|
||||
'dictionaries/ru.dictionary.itop.ui.php', // Support for Russian
|
||||
'dictionaries/ru.dictionary.itop.core.php', // Support for Russian
|
||||
'dictionaries/tr.dictionary.itop.ui.php', // Support for Turkish
|
||||
'dictionaries/tr.dictionary.itop.core.php', // Support for Turkish
|
||||
'dictionaries/zh.dictionary.itop.ui.php', // Support for Chinese
|
||||
'dictionaries/zh.dictionary.itop.core.php', // Support for Chinese
|
||||
'../dictionaries/dictionary.itop.core.php',
|
||||
'../dictionaries/dictionary.itop.ui.php', // Support for English
|
||||
'../dictionaries/fr.dictionary.itop.ui.php', // Support for French
|
||||
'../dictionaries/fr.dictionary.itop.core.php', // Support for French
|
||||
'../dictionaries/es_cr.dictionary.itop.ui.php', // Support for Spanish (from Costa Rica)
|
||||
'../dictionaries/es_cr.dictionary.itop.core.php', // Support for Spanish (from Costa Rica)
|
||||
'../dictionaries/de.dictionary.itop.ui.php', // Support for German
|
||||
'../dictionaries/de.dictionary.itop.core.php', // Support for German
|
||||
'../dictionaries/pt_br.dictionary.itop.ui.php', // Support for Brazilian Portuguese
|
||||
'../dictionaries/pt_br.dictionary.itop.core.php', // Support for Brazilian Portuguese
|
||||
);
|
||||
|
||||
foreach($this->m_aSettings as $sPropCode => $aSettingInfo)
|
||||
{
|
||||
$this->m_aSettings[$sPropCode]['value'] = $aSettingInfo['default'];
|
||||
@@ -474,8 +372,7 @@ class Config
|
||||
}
|
||||
if (!array_key_exists('user rights', $MyModules['addons']))
|
||||
{
|
||||
// Add one, by default
|
||||
$MyModules['addons']['user rights'] = '/addons/userrights/userrightsnull.class.inc.php';
|
||||
$MyModules['addons']['user rights'] = '../addons/userrights/userrightsnull.class.inc.php';
|
||||
}
|
||||
if (!array_key_exists('dictionaries', $MyModules))
|
||||
{
|
||||
@@ -483,10 +380,6 @@ class Config
|
||||
}
|
||||
$this->m_aAppModules = $MyModules['application'];
|
||||
$this->m_aDataModels = $MyModules['business'];
|
||||
if (isset($MyModules['webservices']))
|
||||
{
|
||||
$this->m_aWebServiceCategories = $MyModules['webservices'];
|
||||
}
|
||||
$this->m_aAddons = $MyModules['addons'];
|
||||
$this->m_aDictionaries = $MyModules['dictionaries'];
|
||||
|
||||
@@ -535,8 +428,22 @@ class Config
|
||||
|
||||
protected function Verify()
|
||||
{
|
||||
// Files are verified later on, just before using them -see MetaModel::Plugin()
|
||||
// (we have their final path at that point)
|
||||
foreach ($this->m_aAppModules as $sModule => $sToInclude)
|
||||
{
|
||||
$this->CheckFile('application module', $sToInclude);
|
||||
}
|
||||
foreach ($this->m_aDataModels as $sModule => $sToInclude)
|
||||
{
|
||||
$this->CheckFile('business model', $sToInclude);
|
||||
}
|
||||
foreach ($this->m_aAddons as $sModule => $sToInclude)
|
||||
{
|
||||
$this->CheckFile('addon module', $sToInclude);
|
||||
}
|
||||
foreach ($this->m_aDictionaries as $sModule => $sToInclude)
|
||||
{
|
||||
$this->CheckFile('dictionary', $sToInclude);
|
||||
}
|
||||
}
|
||||
|
||||
public function GetModuleSetting($sModule, $sProperty, $defaultvalue = null)
|
||||
@@ -571,15 +478,6 @@ class Config
|
||||
$this->m_aDataModels = $aDataModels;
|
||||
}
|
||||
|
||||
public function GetWebServiceCategories()
|
||||
{
|
||||
return $this->m_aWebServiceCategories;
|
||||
}
|
||||
public function SetWebServiceCategories($aWebServiceCategories)
|
||||
{
|
||||
$this->m_aWebServiceCategories = $aWebServiceCategories;
|
||||
}
|
||||
|
||||
public function GetAddons()
|
||||
{
|
||||
return $this->m_aAddons;
|
||||
@@ -846,74 +744,7 @@ class Config
|
||||
{
|
||||
return is_writable($this->m_sFile);
|
||||
}
|
||||
public function GetLoadedFile()
|
||||
{
|
||||
return $this->m_sFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the configuration as an associative array
|
||||
* @return boolean True otherwise throws an Exception
|
||||
*/
|
||||
public function ToArray()
|
||||
{
|
||||
$aSettings = array();
|
||||
foreach($this->m_aSettings as $sPropCode => $aSettingInfo)
|
||||
{
|
||||
$aSettings[$sPropCode] = $aSettingInfo['value'];
|
||||
}
|
||||
$aSettings['db_host'] = $this->m_sDBHost;
|
||||
$aSettings['db_user'] = $this->m_sDBUser;
|
||||
$aSettings['db_pwd'] = $this->m_sDBPwd;
|
||||
$aSettings['db_name'] = $this->m_sDBName;
|
||||
$aSettings['db_subname'] = $this->m_sDBSubname;
|
||||
$aSettings['db_character_set'] = $this->m_sDBCharacterSet;
|
||||
$aSettings['db_collation'] = $this->m_sDBCollation;
|
||||
$aSettings['log_global'] = $this->m_bLogGlobal;
|
||||
$aSettings['log_notification'] = $this->m_bLogNotification;
|
||||
$aSettings['log_issue'] = $this->m_bLogIssue;
|
||||
$aSettings['log_web_service'] = $this->m_bLogWebService;
|
||||
$aSettings['min_display_limit'] = $this->m_iMinDisplayLimit;
|
||||
$aSettings['max_display_limit'] = $this->m_iMaxDisplayLimit;
|
||||
$aSettings['standard_reload_interval'] = $this->m_iStandardReloadInterval;
|
||||
$aSettings['fast_reload_interval'] = $this->m_iFastReloadInterval;
|
||||
$aSettings['secure_connection_required'] = $this->m_bSecureConnectionRequired;
|
||||
$aSettings['https_hyperlinks'] = $this->m_bHttpsHyperlinks;
|
||||
$aSettings['default_language'] = $this->m_sDefaultLanguage;
|
||||
$aSettings['allowed_login_types'] = $this->m_sAllowedLoginTypes;
|
||||
$aSettings['encryption_key'] = $this->m_sEncryptionKey;
|
||||
$aSettings['csv_import_charsets'] = $this->m_aCharsets;
|
||||
|
||||
foreach ($this->m_aModuleSettings as $sModule => $aProperties)
|
||||
{
|
||||
foreach ($aProperties as $sProperty => $value)
|
||||
{
|
||||
$aSettings['module_settings'][$sModule][$sProperty] = $value;
|
||||
}
|
||||
}
|
||||
foreach($this->m_aAppModules as $sFile)
|
||||
{
|
||||
$aSettings['application_list'][] = $sFile;
|
||||
}
|
||||
foreach($this->m_aDataModels as $sFile)
|
||||
{
|
||||
$aSettings['datamodel_list'][] = $sFile;
|
||||
}
|
||||
foreach($this->m_aWebServiceCategories as $sFile)
|
||||
{
|
||||
$aSettings['webservice_list'][] = $sFile;
|
||||
}
|
||||
foreach($this->m_aAddons as $sKey => $sFile)
|
||||
{
|
||||
$aSettings['addon_list'][] = $sFile;
|
||||
}
|
||||
foreach($this->m_aDictionaries as $sFile)
|
||||
{
|
||||
$aSettings['dictionary_list'][] = $sFile;
|
||||
}
|
||||
return $aSettings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the configuration to a file (php format) that can be reloaded later
|
||||
* By default write to the same file that was specified when constructing the object
|
||||
@@ -1014,12 +845,6 @@ class Config
|
||||
fwrite($hFile, "\t\t'$sFile',\n");
|
||||
}
|
||||
fwrite($hFile, "\t),\n");
|
||||
fwrite($hFile, "\t'webservices' => array (\n");
|
||||
foreach($this->m_aWebServiceCategories as $sFile)
|
||||
{
|
||||
fwrite($hFile, "\t\t'$sFile',\n");
|
||||
}
|
||||
fwrite($hFile, "\t),\n");
|
||||
fwrite($hFile, "\t'addons' => array (\n");
|
||||
foreach($this->m_aAddons as $sKey => $sFile)
|
||||
{
|
||||
|
||||
@@ -849,14 +849,7 @@ abstract class DBObject
|
||||
|
||||
$sInsertSQL = "INSERT INTO `$sTable` (".join(",", $aFieldsToWrite).") VALUES (".join(", ", $aValuesToWrite).")";
|
||||
|
||||
if (MetaModel::DBIsReadOnly())
|
||||
{
|
||||
$iNewKey = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$iNewKey = CMDBSource::InsertInto($sInsertSQL);
|
||||
}
|
||||
$iNewKey = CMDBSource::InsertInto($sInsertSQL);
|
||||
// Note that it is possible to have a key defined here, and the autoincrement expected, this is acceptable in a non root class
|
||||
if (empty($this->m_iKey))
|
||||
{
|
||||
@@ -949,11 +942,6 @@ abstract class DBObject
|
||||
$this->Reload();
|
||||
return $this->m_iKey;
|
||||
}
|
||||
|
||||
public function DBInsertTracked(CMDBChange $oVoid)
|
||||
{
|
||||
return $this->DBInsert();
|
||||
}
|
||||
|
||||
// Creates a copy of the current object into the database
|
||||
// Returns the id of the newly created object
|
||||
@@ -1016,10 +1004,7 @@ abstract class DBObject
|
||||
$oFilter->AddCondition('id', $this->m_iKey, '=');
|
||||
|
||||
$sSQL = MetaModel::MakeUpdateQuery($oFilter, $aChanges);
|
||||
if (!MetaModel::DBIsReadOnly())
|
||||
{
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
|
||||
$this->DBWriteLinks();
|
||||
@@ -1035,11 +1020,6 @@ abstract class DBObject
|
||||
|
||||
return $this->m_iKey;
|
||||
}
|
||||
|
||||
public function DBUpdateTracked(CMDBChange $oVoid)
|
||||
{
|
||||
return $this->DBUpdate();
|
||||
}
|
||||
|
||||
// Make the current changes persistent - clever wrapper for Insert or Update
|
||||
public function DBWrite()
|
||||
@@ -1063,10 +1043,7 @@ abstract class DBObject
|
||||
$this->OnDelete();
|
||||
|
||||
$sSQL = MetaModel::MakeDeleteQuery($oFilter);
|
||||
if (!MetaModel::DBIsReadOnly())
|
||||
{
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
CMDBSource::Query($sSQL);
|
||||
|
||||
$this->AfterDelete();
|
||||
|
||||
@@ -1074,11 +1051,6 @@ abstract class DBObject
|
||||
$this->m_iKey = null;
|
||||
}
|
||||
|
||||
public function DBDeleteTracked(CMDBChange $oVoid)
|
||||
{
|
||||
$this->DBDelete();
|
||||
}
|
||||
|
||||
public function EnumTransitions()
|
||||
{
|
||||
$sStateAttCode = MetaModel::GetStateAttributeCode(get_class($this));
|
||||
|
||||
@@ -158,30 +158,6 @@ class DBObjectSet
|
||||
return $aRet;
|
||||
}
|
||||
|
||||
public function ToArrayOfValues()
|
||||
{
|
||||
if (!$this->m_bLoaded) $this->Load();
|
||||
|
||||
$aRet = array();
|
||||
foreach($this->m_aData as $iRow => $aObjects)
|
||||
{
|
||||
foreach($aObjects as $sClassAlias => $oObject)
|
||||
{
|
||||
$aRet[$iRow][$sClassAlias.'.'.'id'] = $oObject->GetKey();
|
||||
$sClass = get_class($oObject);
|
||||
foreach(MetaModel::ListAttributeDefs($sClass) as $sAttCode => $oAttDef)
|
||||
{
|
||||
if ($oAttDef->IsScalar())
|
||||
{
|
||||
$sAttName = $sClassAlias.'.'.$sAttCode;
|
||||
$aRet[$iRow][$sAttName] = $oObject->Get($sAttCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $aRet;
|
||||
}
|
||||
|
||||
public function GetColumnAsArray($sAttCode, $bWithId = true)
|
||||
{
|
||||
$aRet = array();
|
||||
|
||||
@@ -1,159 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Database properties - manage database instances in a complex installation
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* A database property
|
||||
*
|
||||
* @package iTopORM
|
||||
*/
|
||||
class DBProperty extends DBObject
|
||||
{
|
||||
public static function Init()
|
||||
{
|
||||
$aParams = array
|
||||
(
|
||||
"category" => "cloud",
|
||||
"key_type" => "autoincrement",
|
||||
"name_attcode" => "name",
|
||||
"state_attcode" => "",
|
||||
"reconc_keys" => array(),
|
||||
"db_table" => "priv_db_properties",
|
||||
"db_key_field" => "id",
|
||||
"db_finalclass_field" => "",
|
||||
);
|
||||
MetaModel::Init_Params($aParams);
|
||||
//MetaModel::Init_InheritAttributes();
|
||||
MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>null, "is_null_allowed"=>false, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("value", array("allowed_values"=>null, "sql"=>"value", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_AddAttribute(new AttributeDateTime("change_date", array("allowed_values"=>null, "sql"=>"change_date", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("change_comment", array("allowed_values"=>null, "sql"=>"change_comment", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to check wether the table has been created into the DB
|
||||
* (this table did not exist in 1.0.1 and older versions)
|
||||
*/
|
||||
public static function IsInstalled()
|
||||
{
|
||||
$sTable = MetaModel::DBGetTable(__CLASS__);
|
||||
if (CMDBSource::IsTable($sTable))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function SetProperty($sName, $sValue, $sComment = '', $sDescription = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
$oSearch = DBObjectSearch::FromOQL('SELECT DBProperty WHERE name = :name');
|
||||
$oSet = new DBObjectSet($oSearch, array(), array('name' => $sName));
|
||||
if ($oSet->Count() == 0)
|
||||
{
|
||||
$oProp = new DBProperty();
|
||||
$oProp->Set('name', $sName);
|
||||
$oProp->Set('description', $sDescription);
|
||||
$oProp->Set('value', $sValue);
|
||||
$oProp->Set('change_date', time());
|
||||
$oProp->Set('change_comment', $sComment);
|
||||
$oProp->DBInsert();
|
||||
}
|
||||
elseif ($oSet->Count() == 1)
|
||||
{
|
||||
$oProp = $oSet->fetch();
|
||||
if (!is_null($sDescription))
|
||||
{
|
||||
$oProp->Set('description', $sDescription);
|
||||
}
|
||||
$oProp->Set('value', $sValue);
|
||||
$oProp->Set('change_date', time());
|
||||
$oProp->Set('change_comment', $sComment);
|
||||
$oProp->DBUpdate();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Houston...
|
||||
throw new CoreException('duplicate db property');
|
||||
}
|
||||
}
|
||||
catch (MySQLException $e)
|
||||
{
|
||||
// This might be because the table could not be found,
|
||||
// let's check it and discard silently if this is really the case
|
||||
if (self::IsInstalled())
|
||||
{
|
||||
throw $e;
|
||||
}
|
||||
IssueLog::Error('Attempting to write a DBProperty while the module has not been installed');
|
||||
}
|
||||
}
|
||||
|
||||
public static function GetProperty($sName, $default = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
$oSearch = DBObjectSearch::FromOQL('SELECT DBProperty WHERE name = :name');
|
||||
$oSet = new DBObjectSet($oSearch, array(), array('name' => $sName));
|
||||
$iCount = $oSet->Count();
|
||||
if ($iCount == 0)
|
||||
{
|
||||
//throw new CoreException('unknown db property', array('name' => $sName));
|
||||
$sValue = $default;
|
||||
}
|
||||
elseif ($iCount == 1)
|
||||
{
|
||||
$oProp = $oSet->fetch();
|
||||
$sValue = $oProp->Get('value');
|
||||
}
|
||||
else
|
||||
{
|
||||
// $iCount > 1
|
||||
// Houston...
|
||||
throw new CoreException('duplicate db property', array('name' => $sName, 'count' => $iCount));
|
||||
}
|
||||
}
|
||||
catch (MySQLException $e)
|
||||
{
|
||||
// This might be because the table could not be found,
|
||||
// let's check it and discard silently if this is really the case
|
||||
if (self::IsInstalled())
|
||||
{
|
||||
throw $e;
|
||||
}
|
||||
$sValue = $default;
|
||||
}
|
||||
return $sValue;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -89,11 +89,6 @@ class EMail
|
||||
$this->m_aHeaders[$sKey] = $sValue;
|
||||
}
|
||||
}
|
||||
|
||||
public function SetReferences($sReferences)
|
||||
{
|
||||
$this->AddToHeader('References', $sReferences);
|
||||
}
|
||||
|
||||
public function SetBody($sBody)
|
||||
{
|
||||
@@ -137,4 +132,4 @@ class EMail
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -258,35 +258,4 @@ class EventWebService extends Event
|
||||
}
|
||||
}
|
||||
|
||||
class EventLoginUsage extends Event
|
||||
{
|
||||
public static function Init()
|
||||
{
|
||||
$aParams = array
|
||||
(
|
||||
"category" => "core/cmdb,view_in_gui",
|
||||
"key_type" => "autoincrement",
|
||||
"name_attcode" => "",
|
||||
"state_attcode" => "",
|
||||
"reconc_keys" => array(),
|
||||
"db_table" => "priv_event_loginusage",
|
||||
"db_key_field" => "id",
|
||||
"db_finalclass_field" => "",
|
||||
);
|
||||
MetaModel::Init_Params($aParams);
|
||||
MetaModel::Init_InheritAttributes();
|
||||
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("user_id", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"user_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_name", array("allowed_values"=>null, "extkey_attcode"=>"user_id", "target_attcode"=>"contactid", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_email", array("allowed_values"=>null, "extkey_attcode"=>"user_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
// Display lists
|
||||
MetaModel::Init_SetZListItems('details', array('date', 'user_id', 'contact_name', 'contact_email', 'userinfo', 'message')); // Attributes to be displayed for the complete details
|
||||
MetaModel::Init_SetZListItems('list', array('date', 'user_id', 'contact_name', 'contact_email', 'userinfo')); // Attributes to be displayed for a list
|
||||
// Search criteria
|
||||
MetaModel::Init_SetZListItems('standard_search', array('date', 'user_id', 'contact_name', 'contact_email')); // Criteria of the std search form
|
||||
// MetaModel::Init_SetZListItems('advanced_search', array('name')); // Criteria of the advanced search form
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -198,10 +198,10 @@ class FilterFromAttribute extends FilterDefinition
|
||||
return $oAttDef->GetValuesDef();
|
||||
}
|
||||
|
||||
public function GetAllowedValues($aArgs = array(), $sContains = '')
|
||||
public function GetAllowedValues($aArgs = array(), $sBeginsWith = '')
|
||||
{
|
||||
$oAttDef = $this->Get("refattribute");
|
||||
return $oAttDef->GetAllowedValues($aArgs, $sContains);
|
||||
return $oAttDef->GetAllowedValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
|
||||
public function GetOperators()
|
||||
|
||||
@@ -1,146 +1,120 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* File logging
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
class FileLog
|
||||
{
|
||||
protected $m_sFile = ''; // log is disabled if this is empty
|
||||
|
||||
public function __construct($sFileName = '')
|
||||
{
|
||||
$this->m_sFile = $sFileName;
|
||||
}
|
||||
|
||||
public function Error($sText)
|
||||
{
|
||||
self::Write("Error | ".$sText);
|
||||
}
|
||||
|
||||
public function Warning($sText)
|
||||
{
|
||||
self::Write("Warning | ".$sText);
|
||||
}
|
||||
|
||||
public function Info($sText)
|
||||
{
|
||||
self::Write("Info | ".$sText);
|
||||
}
|
||||
|
||||
public function Ok($sText)
|
||||
{
|
||||
self::Write("Ok | ".$sText);
|
||||
}
|
||||
|
||||
protected function Write($sText)
|
||||
{
|
||||
if (strlen($this->m_sFile) == 0) return;
|
||||
|
||||
$hLogFile = @fopen($this->m_sFile, 'a');
|
||||
if ($hLogFile !== false)
|
||||
{
|
||||
$sDate = date('Y-m-d H:i:s');
|
||||
fwrite($hLogFile, "$sDate | $sText\n");
|
||||
fclose($hLogFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SetupLog
|
||||
{
|
||||
protected static $m_oFileLog;
|
||||
|
||||
public static function Enable($sTargetFile)
|
||||
{
|
||||
self::$m_oFileLog = new FileLog($sTargetFile);
|
||||
}
|
||||
public static function Error($sText)
|
||||
{
|
||||
self::$m_oFileLog->Error($sText);
|
||||
}
|
||||
public static function Warning($sText)
|
||||
{
|
||||
self::$m_oFileLog->Warning($sText);
|
||||
}
|
||||
public static function Info($sText)
|
||||
{
|
||||
self::$m_oFileLog->Info($sText);
|
||||
}
|
||||
public static function Ok($sText)
|
||||
{
|
||||
self::$m_oFileLog->Ok($sText);
|
||||
}
|
||||
}
|
||||
|
||||
class IssueLog
|
||||
{
|
||||
protected static $m_oFileLog;
|
||||
|
||||
public static function Enable($sTargetFile)
|
||||
{
|
||||
self::$m_oFileLog = new FileLog($sTargetFile);
|
||||
}
|
||||
public static function Error($sText)
|
||||
{
|
||||
self::$m_oFileLog->Error($sText);
|
||||
}
|
||||
public static function Warning($sText)
|
||||
{
|
||||
self::$m_oFileLog->Warning($sText);
|
||||
}
|
||||
public static function Info($sText)
|
||||
{
|
||||
self::$m_oFileLog->Info($sText);
|
||||
}
|
||||
public static function Ok($sText)
|
||||
{
|
||||
self::$m_oFileLog->Ok($sText);
|
||||
}
|
||||
}
|
||||
|
||||
class ToolsLog
|
||||
{
|
||||
protected static $m_oFileLog;
|
||||
|
||||
public static function Enable($sTargetFile)
|
||||
{
|
||||
self::$m_oFileLog = new FileLog($sTargetFile);
|
||||
}
|
||||
public static function Error($sText)
|
||||
{
|
||||
self::$m_oFileLog->Error($sText);
|
||||
}
|
||||
public static function Warning($sText)
|
||||
{
|
||||
self::$m_oFileLog->Warning($sText);
|
||||
}
|
||||
public static function Info($sText)
|
||||
{
|
||||
self::$m_oFileLog->Info($sText);
|
||||
}
|
||||
public static function Ok($sText)
|
||||
{
|
||||
self::$m_oFileLog->Ok($sText);
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* File logging
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
class FileLog
|
||||
{
|
||||
protected $m_sFile = ''; // log is disabled if this is empty
|
||||
|
||||
public function __construct($sFileName = '')
|
||||
{
|
||||
$this->m_sFile = $sFileName;
|
||||
}
|
||||
|
||||
public function Error($sText)
|
||||
{
|
||||
self::Write("Error | ".$sText);
|
||||
}
|
||||
|
||||
public function Warning($sText)
|
||||
{
|
||||
self::Write("Warning | ".$sText);
|
||||
}
|
||||
|
||||
public function Info($sText)
|
||||
{
|
||||
self::Write("Info | ".$sText);
|
||||
}
|
||||
|
||||
public function Ok($sText)
|
||||
{
|
||||
self::Write("Ok | ".$sText);
|
||||
}
|
||||
|
||||
protected function Write($sText)
|
||||
{
|
||||
if (strlen($this->m_sFile) == 0) return;
|
||||
|
||||
$hLogFile = @fopen($this->m_sFile, 'a');
|
||||
if ($hLogFile !== false)
|
||||
{
|
||||
$sDate = date('Y-m-d H:i:s');
|
||||
fwrite($hLogFile, "$sDate | $sText\n");
|
||||
fclose($hLogFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SetupLog
|
||||
{
|
||||
protected static $m_oFileLog;
|
||||
|
||||
public static function Enable($sTargetFile)
|
||||
{
|
||||
self::$m_oFileLog = new FileLog($sTargetFile);
|
||||
}
|
||||
public static function Error($sText)
|
||||
{
|
||||
self::$m_oFileLog->Error($sText);
|
||||
}
|
||||
public static function Warning($sText)
|
||||
{
|
||||
self::$m_oFileLog->Warning($sText);
|
||||
}
|
||||
public static function Info($sText)
|
||||
{
|
||||
self::$m_oFileLog->Info($sText);
|
||||
}
|
||||
public static function Ok($sText)
|
||||
{
|
||||
self::$m_oFileLog->Ok($sText);
|
||||
}
|
||||
}
|
||||
|
||||
class IssueLog
|
||||
{
|
||||
protected static $m_oFileLog;
|
||||
|
||||
public static function Enable($sTargetFile)
|
||||
{
|
||||
self::$m_oFileLog = new FileLog($sTargetFile);
|
||||
}
|
||||
public static function Error($sText)
|
||||
{
|
||||
self::$m_oFileLog->Error($sText);
|
||||
}
|
||||
public static function Warning($sText)
|
||||
{
|
||||
self::$m_oFileLog->Warning($sText);
|
||||
}
|
||||
public static function Info($sText)
|
||||
{
|
||||
self::$m_oFileLog->Info($sText);
|
||||
}
|
||||
public static function Ok($sText)
|
||||
{
|
||||
self::$m_oFileLog->Ok($sText);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
require_once(APPROOT.'core/modulehandler.class.inc.php');
|
||||
|
||||
/**
|
||||
* Metamodel
|
||||
*
|
||||
@@ -904,16 +902,16 @@ abstract class MetaModel
|
||||
// Allowed values
|
||||
//
|
||||
|
||||
public static function GetAllowedValues_att($sClass, $sAttCode, $aArgs = array(), $sContains = '')
|
||||
public static function GetAllowedValues_att($sClass, $sAttCode, $aArgs = array(), $sBeginsWith = '')
|
||||
{
|
||||
$oAttDef = self::GetAttributeDef($sClass, $sAttCode);
|
||||
return $oAttDef->GetAllowedValues($aArgs, $sContains);
|
||||
return $oAttDef->GetAllowedValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
|
||||
public static function GetAllowedValues_flt($sClass, $sFltCode, $aArgs = array(), $sContains = '')
|
||||
public static function GetAllowedValues_flt($sClass, $sFltCode, $aArgs = array(), $sBeginsWith = '')
|
||||
{
|
||||
$oFltDef = self::GetClassFilterDef($sClass, $sFltCode);
|
||||
return $oFltDef->GetAllowedValues($aArgs, $sContains);
|
||||
return $oFltDef->GetAllowedValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -1352,42 +1350,16 @@ abstract class MetaModel
|
||||
// Discard attributes that do not make sense
|
||||
// (missing classes in the current module combination, resulting in irrelevant ext key or link set)
|
||||
//
|
||||
self::Init_CheckZListItems($aItems, $sTargetClass);
|
||||
self::$m_aListData[$sTargetClass][$sListCode] = $aItems;
|
||||
}
|
||||
|
||||
protected static function Init_CheckZListItems(&$aItems, $sTargetClass)
|
||||
{
|
||||
foreach($aItems as $iFoo => $attCode)
|
||||
foreach($aItems as $iFoo => $sAttCode)
|
||||
{
|
||||
if (is_array($attCode))
|
||||
{
|
||||
self::Init_CheckZListItems($attCode, $sTargetClass);
|
||||
}
|
||||
else if (isset(self::$m_aIgnoredAttributes[$sTargetClass][$attCode]))
|
||||
if (isset(self::$m_aIgnoredAttributes[$sTargetClass][$sAttCode]))
|
||||
{
|
||||
unset($aItems[$iFoo]);
|
||||
}
|
||||
}
|
||||
self::$m_aListData[$sTargetClass][$sListCode] = $aItems;
|
||||
}
|
||||
|
||||
public static function FlattenZList($aList)
|
||||
{
|
||||
$aResult = array();
|
||||
foreach($aList as $value)
|
||||
{
|
||||
if (!is_array($value))
|
||||
{
|
||||
$aResult[] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult = array_merge($aResult, self::FlattenZList($value));
|
||||
}
|
||||
}
|
||||
return $aResult;
|
||||
}
|
||||
|
||||
public static function Init_DefineState($sStateCode, $aStateDef)
|
||||
{
|
||||
$sTargetClass = self::GetCallersPHPClass("Init");
|
||||
@@ -1429,7 +1401,6 @@ abstract class MetaModel
|
||||
|
||||
public static function Init_OverloadStateAttribute($sStateCode, $sAttCode, $iFlags)
|
||||
{
|
||||
// Warning: this is not sufficient: the flags have to be copied to the states that are inheriting from this state
|
||||
$sTargetClass = self::GetCallersPHPClass("Init");
|
||||
self::$m_aStates[$sTargetClass][$sStateCode]['attribute_list'][$sAttCode] = $iFlags;
|
||||
}
|
||||
@@ -2359,7 +2330,7 @@ abstract class MetaModel
|
||||
//
|
||||
foreach(self::EnumZLists() as $sListCode)
|
||||
{
|
||||
foreach (self::FlattenZList(self::GetZListItems($sClass, $sListCode)) as $sMyAttCode)
|
||||
foreach (self::GetZListItems($sClass, $sListCode) as $sMyAttCode)
|
||||
{
|
||||
if (!self::IsValidAttCode($sClass, $sMyAttCode))
|
||||
{
|
||||
@@ -2369,7 +2340,6 @@ abstract class MetaModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($aErrors) > 0)
|
||||
{
|
||||
echo "<div style=\"width:100%;padding:10px;background:#FFAAAA;display:;\">";
|
||||
@@ -2565,30 +2535,6 @@ abstract class MetaModel
|
||||
return $aDataDump;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determines wether the target DB is frozen or not
|
||||
*/
|
||||
public static function DBIsReadOnly()
|
||||
{
|
||||
// Improvement: check the mySQL variable -> Read-only
|
||||
|
||||
if (UserRights::IsAdministrator())
|
||||
{
|
||||
return (!self::DBHasAccess(ACCESS_ADMIN_WRITE));
|
||||
}
|
||||
else
|
||||
{
|
||||
return (!self::DBHasAccess(ACCESS_USER_WRITE));
|
||||
}
|
||||
}
|
||||
|
||||
public static function DBHasAccess($iRequested = ACCESS_FULL)
|
||||
{
|
||||
$iMode = self::$m_oConfig->Get('access_mode');
|
||||
if (($iMode & $iRequested) == 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
protected static function MakeDictEntry($sKey, $sValueFromOldSystem, $sDefaultValue, &$bNotInDico)
|
||||
{
|
||||
$sValue = Dict::S($sKey, 'x-no-nothing');
|
||||
@@ -3279,18 +3225,8 @@ abstract class MetaModel
|
||||
CMDBSource::SelectDB(self::$m_sDBName);
|
||||
|
||||
// Some of the init could not be done earlier (requiring classes to be declared and DB to be accessible)
|
||||
// To be deprecated
|
||||
self::InitPlugins();
|
||||
|
||||
foreach(get_declared_classes() as $sPHPClass)
|
||||
{
|
||||
if (is_subclass_of($sPHPClass, 'ModuleHandlerAPI'))
|
||||
{
|
||||
$aCallSpec = array($sPHPClass, 'OnMetaModelStarted');
|
||||
call_user_func_array($aCallSpec, array());
|
||||
}
|
||||
}
|
||||
|
||||
if (false)
|
||||
{
|
||||
echo "Debug<br/>\n";
|
||||
@@ -3308,12 +3244,10 @@ abstract class MetaModel
|
||||
if (self::$m_oConfig->GetLogIssue())
|
||||
{
|
||||
self::$m_bLogIssue = true;
|
||||
IssueLog::Enable(APPROOT.'/error.log');
|
||||
IssueLog::Enable('../error.log');
|
||||
}
|
||||
self::$m_bLogNotification = self::$m_oConfig->GetLogNotification();
|
||||
self::$m_bLogWebService = self::$m_oConfig->GetLogWebService();
|
||||
|
||||
ToolsLog::Enable(APPROOT.'/tools.log');
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3348,7 +3282,7 @@ abstract class MetaModel
|
||||
|
||||
// Romain: this is the only way I've found to cope with the fact that
|
||||
// classes have to be derived from cmdbabstract (to be editable in the UI)
|
||||
require_once(APPROOT.'/application/cmdbabstract.class.inc.php');
|
||||
require_once('../application/cmdbabstract.class.inc.php');
|
||||
|
||||
foreach (self::$m_oConfig->GetAppModules() as $sModule => $sToInclude)
|
||||
{
|
||||
@@ -3358,10 +3292,6 @@ abstract class MetaModel
|
||||
{
|
||||
self::Plugin($sConfigFile, 'business', $sToInclude);
|
||||
}
|
||||
foreach (self::$m_oConfig->GetWebServiceCategories() as $sModule => $sToInclude)
|
||||
{
|
||||
self::Plugin($sConfigFile, 'webservice', $sToInclude);
|
||||
}
|
||||
foreach (self::$m_oConfig->GetAddons() as $sModule => $sToInclude)
|
||||
{
|
||||
self::Plugin($sConfigFile, 'addons', $sToInclude);
|
||||
@@ -3411,36 +3341,13 @@ abstract class MetaModel
|
||||
|
||||
protected static function Plugin($sConfigFile, $sModuleType, $sToInclude)
|
||||
{
|
||||
$sFirstChar = substr($sToInclude, 0, 1);
|
||||
$sSecondChar = substr($sToInclude, 1, 1);
|
||||
if (($sFirstChar != '/') && ($sFirstChar != '\\') && ($sSecondChar != ':'))
|
||||
if (!file_exists($sToInclude))
|
||||
{
|
||||
// It is a relative path, prepend APPROOT
|
||||
if (substr($sToInclude, 0, 3) == '../')
|
||||
{
|
||||
// Preserve compatibility with config files written before 1.0.1
|
||||
// Replace '../' by '<root>/'
|
||||
$sFile = APPROOT.'/'.substr($sToInclude, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
$sFile = APPROOT.'/'.$sToInclude;
|
||||
}
|
||||
throw new CoreException('Wrong filename in configuration file', array('file' => $sConfigFile, 'module' => $sModuleType, 'filename' => $sToInclude));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Leave as is - should be an absolute path
|
||||
$sFile = $sToInclude;
|
||||
}
|
||||
if (!file_exists($sFile))
|
||||
{
|
||||
throw new CoreException('Wrong filename in configuration file', array('file' => $sConfigFile, 'module' => $sModuleType, 'filename' => $sFile));
|
||||
}
|
||||
require_once($sFile);
|
||||
require_once($sToInclude);
|
||||
}
|
||||
|
||||
// #@# to be deprecated!
|
||||
//
|
||||
protected static function InitPlugins()
|
||||
{
|
||||
foreach(self::$m_aPlugins as $sName => $aData)
|
||||
@@ -3598,20 +3505,14 @@ abstract class MetaModel
|
||||
public static function BulkDelete(DBObjectSearch $oFilter)
|
||||
{
|
||||
$sSQL = self::MakeDeleteQuery($oFilter);
|
||||
if (!self::DBIsReadOnly())
|
||||
{
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
|
||||
public static function BulkUpdate(DBObjectSearch $oFilter, array $aValues)
|
||||
{
|
||||
// $aValues is an array of $sAttCode => $value
|
||||
$sSQL = self::MakeUpdateQuery($oFilter, $aValues);
|
||||
if (!self::DBIsReadOnly())
|
||||
{
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
CMDBSource::Query($sSQL);
|
||||
}
|
||||
|
||||
// Links
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Class ModuleHandler
|
||||
* Defines the API to implement module specific actions during page execution
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
abstract class ModuleHandlerAPI
|
||||
{
|
||||
public static function OnMetaModelStarted()
|
||||
{
|
||||
}
|
||||
|
||||
public static function OnMenuCreation()
|
||||
{
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -14,7 +14,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
require_once(APPROOT.'/core/simplecrypt.class.inc.php');
|
||||
require_once('../core/simplecrypt.class.inc.php');
|
||||
|
||||
/**
|
||||
* ormPassword
|
||||
|
||||
@@ -50,6 +50,7 @@ define('UR_ACTION_APPLICATION_DEFINED', 10000); // Application specific actions
|
||||
*/
|
||||
abstract class UserRightsAddOnAPI
|
||||
{
|
||||
abstract public function Setup(); // initial installation
|
||||
abstract public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US'); // could be used during initial installation
|
||||
|
||||
abstract public function Init(); // loads data (possible optimizations)
|
||||
@@ -110,35 +111,6 @@ abstract class User extends cmdbAbstractObject
|
||||
abstract public function CanChangePassword();
|
||||
abstract public function ChangePassword($sOldPassword, $sNewPassword);
|
||||
|
||||
/*
|
||||
* Compute a name in best effort mode
|
||||
*/
|
||||
public function GetFriendlyName()
|
||||
{
|
||||
if (!MetaModel::IsValidAttCode(get_class($this), 'contactid'))
|
||||
{
|
||||
return $this->Get('login');
|
||||
}
|
||||
if ($this->Get('contactid') != 0)
|
||||
{
|
||||
$sFirstName = $this->Get('first_name');
|
||||
$sLastName = $this->Get('last_name');
|
||||
$sEmail = $this->Get('email');
|
||||
if (strlen($sFirstName) > 0)
|
||||
{
|
||||
return "$sFirstName $sLastName";
|
||||
}
|
||||
elseif (strlen($sEmail) > 0)
|
||||
{
|
||||
return "$sLastName <$sEmail>";
|
||||
}
|
||||
else
|
||||
{
|
||||
return $sLastName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Overload the standard behavior
|
||||
*/
|
||||
@@ -338,6 +310,15 @@ class UserRights
|
||||
return $bRes;
|
||||
}
|
||||
|
||||
// Installation (e.g: give default values for users)
|
||||
public static function Setup()
|
||||
{
|
||||
// to be discussed...
|
||||
$bRes = self::$m_oAddOn->Setup();
|
||||
self::FlushPrivileges(true /* reset admin cache */);
|
||||
return $bRes;
|
||||
}
|
||||
|
||||
protected static function IsLoggedIn()
|
||||
{
|
||||
if (self::$m_oUser == null)
|
||||
@@ -391,11 +372,6 @@ class UserRights
|
||||
|
||||
public static function CanChangePassword()
|
||||
{
|
||||
if (MetaModel::DBIsReadOnly())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!is_null(self::$m_oUser))
|
||||
{
|
||||
return self::$m_oUser->CanChangePassword();
|
||||
@@ -418,25 +394,16 @@ class UserRights
|
||||
}
|
||||
}
|
||||
|
||||
public static function ChangePassword($sOldPassword, $sNewPassword, $sName = '')
|
||||
public static function ChangePassword($sCurrentPassword, $sNewPassword)
|
||||
{
|
||||
if (empty($sName))
|
||||
if (!is_null(self::$m_oUser))
|
||||
{
|
||||
$oUser = self::$m_oUser;
|
||||
return self::$m_oUser->ChangePassword($sCurrentPassword, $sNewPassword);
|
||||
}
|
||||
else
|
||||
{
|
||||
// find the id out of the login string
|
||||
$oUser = self::FindUser($sName);
|
||||
}
|
||||
if (is_null($oUser))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $oUser->ChangePassword($sOldPassword, $sNewPassword);
|
||||
}
|
||||
}
|
||||
|
||||
public static function Impersonate($sName, $sPassword)
|
||||
@@ -471,18 +438,6 @@ class UserRights
|
||||
}
|
||||
}
|
||||
|
||||
public static function GetUserObject()
|
||||
{
|
||||
if (is_null(self::$m_oUser))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return self::$m_oUser;
|
||||
}
|
||||
}
|
||||
|
||||
public static function GetUserLanguage()
|
||||
{
|
||||
if (is_null(self::$m_oUser))
|
||||
@@ -533,31 +488,9 @@ class UserRights
|
||||
{
|
||||
return '';
|
||||
}
|
||||
if (!MetaModel::IsValidAttCode(get_class($oUser), 'contactid'))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
return $oUser->Get('contactid');
|
||||
}
|
||||
|
||||
// Render the user name in best effort mode
|
||||
public static function GetUserFriendlyName($sName = '')
|
||||
{
|
||||
if (empty($sName))
|
||||
{
|
||||
$oUser = self::$m_oUser;
|
||||
}
|
||||
else
|
||||
{
|
||||
$oUser = FindUser($sName);
|
||||
}
|
||||
if (is_null($oUser))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
return $oUser->GetFriendlyName();
|
||||
}
|
||||
|
||||
public static function IsImpersonated()
|
||||
{
|
||||
if (is_null(self::$m_oRealUser))
|
||||
@@ -585,15 +518,6 @@ class UserRights
|
||||
return self::$m_oRealUser->GetKey();
|
||||
}
|
||||
|
||||
public static function GetRealUserFriendlyName()
|
||||
{
|
||||
if (is_null(self::$m_oRealUser))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
return self::$m_oRealUser->GetFriendlyName();
|
||||
}
|
||||
|
||||
protected static function CheckLogin()
|
||||
{
|
||||
if (!self::IsLoggedIn())
|
||||
@@ -628,14 +552,6 @@ class UserRights
|
||||
// When initializing, we need to let everything pass trough
|
||||
if (!self::CheckLogin()) return true;
|
||||
|
||||
if (MetaModel::DBIsReadOnly())
|
||||
{
|
||||
if ($iActionCode == UR_ACTION_MODIFY) return false;
|
||||
if ($iActionCode == UR_ACTION_DELETE) return false;
|
||||
if ($iActionCode == UR_ACTION_BULK_MODIFY) return false;
|
||||
if ($iActionCode == UR_ACTION_BULK_DELETE) return false;
|
||||
}
|
||||
|
||||
if (self::IsAdministrator($oUser)) return true;
|
||||
|
||||
if (MetaModel::HasCategory($sClass, 'bizmodel'))
|
||||
@@ -666,14 +582,6 @@ class UserRights
|
||||
// When initializing, we need to let everything pass trough
|
||||
if (!self::CheckLogin()) return true;
|
||||
|
||||
if (MetaModel::DBIsReadOnly())
|
||||
{
|
||||
if ($iActionCode == UR_ACTION_MODIFY) return false;
|
||||
if ($iActionCode == UR_ACTION_DELETE) return false;
|
||||
if ($iActionCode == UR_ACTION_BULK_MODIFY) return false;
|
||||
if ($iActionCode == UR_ACTION_BULK_DELETE) return false;
|
||||
}
|
||||
|
||||
if (self::IsAdministrator($oUser)) return true;
|
||||
|
||||
if (MetaModel::HasCategory($sClass, 'bizmodel'))
|
||||
@@ -696,14 +604,6 @@ class UserRights
|
||||
// When initializing, we need to let everything pass trough
|
||||
if (!self::CheckLogin()) return true;
|
||||
|
||||
if (MetaModel::DBIsReadOnly())
|
||||
{
|
||||
if ($iActionCode == UR_ACTION_MODIFY) return false;
|
||||
if ($iActionCode == UR_ACTION_DELETE) return false;
|
||||
if ($iActionCode == UR_ACTION_BULK_MODIFY) return false;
|
||||
if ($iActionCode == UR_ACTION_BULK_DELETE) return false;
|
||||
}
|
||||
|
||||
if (self::IsAdministrator($oUser)) return true;
|
||||
|
||||
// this module is forbidden for non admins
|
||||
|
||||
@@ -51,23 +51,25 @@ abstract class ValueSetDefinition
|
||||
}
|
||||
|
||||
|
||||
public function GetValues($aArgs, $sContains = '')
|
||||
public function GetValues($aArgs, $sBeginsWith = '')
|
||||
{
|
||||
if (!$this->m_bIsLoaded)
|
||||
{
|
||||
$this->LoadValues($aArgs);
|
||||
$this->m_bIsLoaded = true;
|
||||
}
|
||||
if (strlen($sContains) == 0)
|
||||
if (strlen($sBeginsWith) == 0)
|
||||
{
|
||||
$aRet = $this->m_aValues;
|
||||
}
|
||||
else
|
||||
{
|
||||
$iCheckedLen = strlen($sBeginsWith);
|
||||
$sBeginsWith = strtolower($sBeginsWith);
|
||||
$aRet = array();
|
||||
foreach ($this->m_aValues as $sKey=>$sValue)
|
||||
{
|
||||
if (stripos($sValue, $sContains) !== false)
|
||||
if (strtolower(substr($sValue, 0, $iCheckedLen)) == $sBeginsWith)
|
||||
{
|
||||
$aRet[$sKey] = $sValue;
|
||||
}
|
||||
|
||||
@@ -807,14 +807,6 @@ div#logo div {
|
||||
background: url(../images/banner-bkg.png) repeat-x scroll 0 0 transparent;
|
||||
text-align: right;
|
||||
}
|
||||
#admin-banner {
|
||||
float: left;
|
||||
margin-top: 2px;
|
||||
padding: 8px;
|
||||
border: 1px solid #c33;
|
||||
background-color: #fee;
|
||||
-moz-border-radius: 0.5em;
|
||||
}
|
||||
#global-search {
|
||||
height: 55px;
|
||||
float: right;
|
||||
@@ -894,26 +886,4 @@ tr.row_modified td {
|
||||
tr.row_added td {
|
||||
border-bottom: 1px #ccc solid;
|
||||
padding: 2px;
|
||||
}
|
||||
a.truncated {
|
||||
cursor: pointer;
|
||||
}
|
||||
.org_combo
|
||||
{
|
||||
font-size:x-small;
|
||||
width: auto;
|
||||
max-width: 200px;
|
||||
}
|
||||
span.form_validation {
|
||||
width:24px;
|
||||
text-align:center;
|
||||
}
|
||||
.notification {
|
||||
border: 1px solid #c33;
|
||||
background-color: #fee;
|
||||
padding: 0.5em;
|
||||
margin: 0.5em;
|
||||
text-align:center;
|
||||
width: 95%;
|
||||
-moz-border-radius: 0.5em;
|
||||
}
|
||||
}
|
||||
@@ -33,102 +33,6 @@
|
||||
// Class: CMDBChange
|
||||
//
|
||||
|
||||
Dict::Add('DE DE', 'English', 'English', array(
|
||||
'Core:AttributeLinkedSet' => 'Array of objects',
|
||||
'Core:AttributeLinkedSet+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeLinkedSetIndirect' => 'Array of objects (N-N)',
|
||||
'Core:AttributeLinkedSetIndirect+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeInteger' => 'Integer',
|
||||
'Core:AttributeInteger+' => 'Numeric value (could be negative)',
|
||||
|
||||
'Core:AttributeDecimal' => 'Decimal',
|
||||
'Core:AttributeDecimal+' => 'Decimal value (could be negative)',
|
||||
|
||||
'Core:AttributeBoolean' => 'Boolean',
|
||||
'Core:AttributeBoolean+' => 'Boolean',
|
||||
|
||||
'Core:AttributeString' => 'String',
|
||||
'Core:AttributeString+' => 'Alphanumeric string',
|
||||
|
||||
'Core:AttributeClass' => 'Class',
|
||||
'Core:AttributeClass+' => 'Class',
|
||||
|
||||
'Core:AttributeApplicationLanguage' => 'User language',
|
||||
'Core:AttributeApplicationLanguage+' => 'Language and country (EN US)',
|
||||
|
||||
'Core:AttributeFinalClass' => 'Class (auto)',
|
||||
'Core:AttributeFinalClass+' => 'Real class of the object (automatically created by the core)',
|
||||
|
||||
'Core:AttributePassword' => 'Password',
|
||||
'Core:AttributePassword+' => 'Password of an external device',
|
||||
|
||||
'Core:AttributeEncryptedString' => 'Encrypted string',
|
||||
'Core:AttributeEncryptedString+' => 'String encrypted with a local key',
|
||||
|
||||
'Core:AttributeText' => 'Text',
|
||||
'Core:AttributeText+' => 'Multiline character string',
|
||||
|
||||
'Core:AttributeHTML' => 'HTML',
|
||||
'Core:AttributeHTML+' => 'HTML string',
|
||||
|
||||
'Core:AttributeEmailAddress' => 'Email address',
|
||||
'Core:AttributeEmailAddress+' => 'Email address',
|
||||
|
||||
'Core:AttributeIPAddress' => 'IP address',
|
||||
'Core:AttributeIPAddress+' => 'IP address',
|
||||
|
||||
'Core:AttributeOQL' => 'OQL',
|
||||
'Core:AttributeOQL+' => 'Object Query Langage expression',
|
||||
|
||||
'Core:AttributeEnum' => 'Enum',
|
||||
'Core:AttributeEnum+' => 'List of predefined alphanumeric strings',
|
||||
|
||||
'Core:AttributeTemplateString' => 'Template string',
|
||||
'Core:AttributeTemplateString+' => 'String containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateText' => 'Template text',
|
||||
'Core:AttributeTemplateText+' => 'Text containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateHTML' => 'Template HTML',
|
||||
'Core:AttributeTemplateHTML+' => 'HTML containing placeholders',
|
||||
|
||||
'Core:AttributeWikiText' => 'Wiki article',
|
||||
'Core:AttributeWikiText+' => 'Wiki formatted text',
|
||||
|
||||
'Core:AttributeDateTime' => 'Date/time',
|
||||
'Core:AttributeDateTime+' => 'Date and time (year-month-day hh:mm:ss)',
|
||||
|
||||
'Core:AttributeDate' => 'Date',
|
||||
'Core:AttributeDate+' => 'Date (year-month-day)',
|
||||
|
||||
'Core:AttributeDeadline' => 'Deadline',
|
||||
'Core:AttributeDeadline+' => 'Date, displayed relatively to the current time',
|
||||
|
||||
'Core:AttributeExternalKey' => 'External key',
|
||||
'Core:AttributeExternalKey+' => 'External (or foreign) key',
|
||||
|
||||
'Core:AttributeExternalField' => 'External field',
|
||||
'Core:AttributeExternalField+' => 'Field mapped from an external key',
|
||||
|
||||
'Core:AttributeURL' => 'URL',
|
||||
'Core:AttributeURL+' => 'Absolute or relative URL as a text string',
|
||||
|
||||
'Core:AttributeBlob' => 'Blob',
|
||||
'Core:AttributeBlob+' => 'Any binary content (document)',
|
||||
|
||||
'Core:AttributeOneWayPassword' => 'One way password',
|
||||
'Core:AttributeOneWayPassword+' => 'One way encrypted (hashed) password',
|
||||
|
||||
'Core:AttributeTable' => 'Table',
|
||||
'Core:AttributeTable+' => 'Indexed array having two dimensions',
|
||||
|
||||
'Core:AttributePropertySet' => 'Properties',
|
||||
'Core:AttributePropertySet+' => 'List of untyped properties (name and value)',
|
||||
));
|
||||
|
||||
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Class:CMDBChange' => 'Change',
|
||||
'Class:CMDBChange+' => 'Protokllierung der Changes',
|
||||
@@ -203,8 +107,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
// Used by CMDBChangeOp... & derived classes
|
||||
Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'Change:ObjectCreated' => 'Objekt erstellt',
|
||||
'Change:ObjectDeleted' => 'Object deleted',
|
||||
'Change:ObjectModified' => 'Object modified',
|
||||
'Change:ObjectDeleted' => 'Objekt erstellt',
|
||||
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$s geändert zu %2$s (vorheriger Wert: %3$s)',
|
||||
'Change:Text_AppendedTo_AttName' => '%1$s zugefügt an %2$s',
|
||||
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$s modifiziert, vorheriger Wert: %2$s',
|
||||
|
||||
@@ -439,12 +439,6 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:History:User+' => 'Benutzer, der die Änderung durchführte',
|
||||
'UI:History:Changes' => 'Änderungen',
|
||||
'UI:History:Changes+' => 'Änderungen, die am Objekt durchgeführt wurden',
|
||||
'UI:History:StatsCreations' => 'Created',
|
||||
'UI:History:StatsCreations+' => 'Count of objects created',
|
||||
'UI:History:StatsModifs' => 'Modified',
|
||||
'UI:History:StatsModifs+' => 'Count of objects modified',
|
||||
'UI:History:StatsDeletes' => 'Deleted',
|
||||
'UI:History:StatsDeletes+' => 'Count of objects deleted',
|
||||
'UI:Loading' => 'Laden...',
|
||||
'UI:Menu:Actions' => 'Aktionen',
|
||||
'UI:Menu:New' => 'Neu...',
|
||||
@@ -487,8 +481,6 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
|
||||
'UI:LogOff:ThankYou' => 'Vielen Dank dafür, dass Sie iTop benutzen!',
|
||||
'UI:LogOff:ClickHereToLoginAgain' => 'Klicken Sie hier, um sich wieder anzumelden...',
|
||||
'UI:ChangePwdMenu' => 'Passwort ändern...',
|
||||
'UI:AccessRO-All' => 'iTop is read-only',
|
||||
'UI:AccessRO-Users' => 'iTop is read-only for end-users',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'Neues Passwort und das wiederholte Passwort entsprechen nicht überein!',
|
||||
'UI:Button:Login' => 'iTop betreten',
|
||||
'UI:Login:Error:AccessRestricted' => 'Der iTop-Zugang ist gesperrt. Bitte kontaktieren Sie einen iTop-Administrator.',
|
||||
|
||||
@@ -23,101 +23,6 @@
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Core:AttributeLinkedSet' => 'Array of objects',
|
||||
'Core:AttributeLinkedSet+' => 'Any kind of objects of the same class or subclass',
|
||||
|
||||
'Core:AttributeLinkedSetIndirect' => 'Array of objects (N-N)',
|
||||
'Core:AttributeLinkedSetIndirect+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeInteger' => 'Integer',
|
||||
'Core:AttributeInteger+' => 'Numeric value (could be negative)',
|
||||
|
||||
'Core:AttributeDecimal' => 'Decimal',
|
||||
'Core:AttributeDecimal+' => 'Decimal value (could be negative)',
|
||||
|
||||
'Core:AttributeBoolean' => 'Boolean',
|
||||
'Core:AttributeBoolean+' => 'Boolean',
|
||||
|
||||
'Core:AttributeString' => 'String',
|
||||
'Core:AttributeString+' => 'Alphanumeric string',
|
||||
|
||||
'Core:AttributeClass' => 'Class',
|
||||
'Core:AttributeClass+' => 'Class',
|
||||
|
||||
'Core:AttributeApplicationLanguage' => 'User language',
|
||||
'Core:AttributeApplicationLanguage+' => 'Language and country (EN US)',
|
||||
|
||||
'Core:AttributeFinalClass' => 'Class (auto)',
|
||||
'Core:AttributeFinalClass+' => 'Real class of the object (automatically created by the core)',
|
||||
|
||||
'Core:AttributePassword' => 'Password',
|
||||
'Core:AttributePassword+' => 'Password of an external device',
|
||||
|
||||
'Core:AttributeEncryptedString' => 'Encrypted string',
|
||||
'Core:AttributeEncryptedString+' => 'String encrypted with a local key',
|
||||
|
||||
'Core:AttributeText' => 'Text',
|
||||
'Core:AttributeText+' => 'Multiline character string',
|
||||
|
||||
'Core:AttributeHTML' => 'HTML',
|
||||
'Core:AttributeHTML+' => 'HTML string',
|
||||
|
||||
'Core:AttributeEmailAddress' => 'Email address',
|
||||
'Core:AttributeEmailAddress+' => 'Email address',
|
||||
|
||||
'Core:AttributeIPAddress' => 'IP address',
|
||||
'Core:AttributeIPAddress+' => 'IP address',
|
||||
|
||||
'Core:AttributeOQL' => 'OQL',
|
||||
'Core:AttributeOQL+' => 'Object Query Langage expression',
|
||||
|
||||
'Core:AttributeEnum' => 'Enum',
|
||||
'Core:AttributeEnum+' => 'List of predefined alphanumeric strings',
|
||||
|
||||
'Core:AttributeTemplateString' => 'Template string',
|
||||
'Core:AttributeTemplateString+' => 'String containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateText' => 'Template text',
|
||||
'Core:AttributeTemplateText+' => 'Text containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateHTML' => 'Template HTML',
|
||||
'Core:AttributeTemplateHTML+' => 'HTML containing placeholders',
|
||||
|
||||
'Core:AttributeWikiText' => 'Wiki article',
|
||||
'Core:AttributeWikiText+' => 'Wiki formatted text',
|
||||
|
||||
'Core:AttributeDateTime' => 'Date/time',
|
||||
'Core:AttributeDateTime+' => 'Date and time (year-month-day hh:mm:ss)',
|
||||
|
||||
'Core:AttributeDate' => 'Date',
|
||||
'Core:AttributeDate+' => 'Date (year-month-day)',
|
||||
|
||||
'Core:AttributeDeadline' => 'Deadline',
|
||||
'Core:AttributeDeadline+' => 'Date, displayed relatively to the current time',
|
||||
|
||||
'Core:AttributeExternalKey' => 'External key',
|
||||
'Core:AttributeExternalKey+' => 'External (or foreign) key',
|
||||
|
||||
'Core:AttributeExternalField' => 'External field',
|
||||
'Core:AttributeExternalField+' => 'Field mapped to an external key',
|
||||
|
||||
'Core:AttributeURL' => 'URL',
|
||||
'Core:AttributeURL+' => 'Absolute or relative URL as a text string',
|
||||
|
||||
'Core:AttributeBlob' => 'Blob',
|
||||
'Core:AttributeBlob+' => 'Any binary content (document)',
|
||||
|
||||
'Core:AttributeOneWayPassword' => 'One way password',
|
||||
'Core:AttributeOneWayPassword+' => 'One way encrypted (hashed) password',
|
||||
|
||||
'Core:AttributeTable' => 'Table',
|
||||
'Core:AttributeTable+' => 'Indexed array having two dimensions',
|
||||
|
||||
'Core:AttributePropertySet' => 'Properties',
|
||||
'Core:AttributePropertySet+' => 'List of untyped properties (name and value)',
|
||||
));
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
@@ -203,7 +108,6 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Change:ObjectCreated' => 'Object created',
|
||||
'Change:ObjectDeleted' => 'Object deleted',
|
||||
'Change:ObjectModified' => 'Object modified',
|
||||
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$s set to %2$s (previous value: %3$s)',
|
||||
'Change:Text_AppendedTo_AttName' => '%1$s appended to %2$s',
|
||||
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$s modified, previous value: %2$s',
|
||||
|
||||
@@ -336,7 +336,6 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:Button:Cancel' => 'Cancel',
|
||||
'UI:Button:Apply' => 'Apply',
|
||||
'UI:Button:Back' => ' << Back ',
|
||||
'UI:Button:Restart' => ' |<< Restart ',
|
||||
'UI:Button:Next' => ' Next >> ',
|
||||
'UI:Button:Finish' => ' Finish ',
|
||||
'UI:Button:DoImport' => ' Run the Import ! ',
|
||||
@@ -399,21 +398,12 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:History:LastModified_On_By' => 'Last modified on %1$s by %2$s.',
|
||||
'UI:HistoryTab' => 'History',
|
||||
'UI:NotificationsTab' => 'Notifications',
|
||||
'UI:History:BulkImports' => 'History',
|
||||
'UI:History:BulkImports+' => 'List of CSV imports (last first)',
|
||||
'UI:History:BulkImportDetails' => 'Changes resulting from the CSV import performed on %1$s (by %2$s)',
|
||||
'UI:History:Date' => 'Date',
|
||||
'UI:History:Date+' => 'Date of the change',
|
||||
'UI:History:User' => 'User',
|
||||
'UI:History:User+' => 'User who made the change',
|
||||
'UI:History:Changes' => 'Changes',
|
||||
'UI:History:Changes+' => 'Changes made to the object',
|
||||
'UI:History:StatsCreations' => 'Created',
|
||||
'UI:History:StatsCreations+' => 'Count of objects created',
|
||||
'UI:History:StatsModifs' => 'Modified',
|
||||
'UI:History:StatsModifs+' => 'Count of objects modified',
|
||||
'UI:History:StatsDeletes' => 'Deleted',
|
||||
'UI:History:StatsDeletes+' => 'Count of objects deleted',
|
||||
'UI:Loading' => 'Loading...',
|
||||
'UI:Menu:Actions' => 'Actions',
|
||||
'UI:Menu:New' => 'New...',
|
||||
@@ -456,8 +446,6 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:LogOff:ThankYou' => 'Thank you for using iTop',
|
||||
'UI:LogOff:ClickHereToLoginAgain' => 'Click here to login again...',
|
||||
'UI:ChangePwdMenu' => 'Change Password...',
|
||||
'UI:AccessRO-All' => 'iTop is read-only',
|
||||
'UI:AccessRO-Users' => 'iTop is read-only for end-users',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'New password and retyped new password do not match !',
|
||||
'UI:Button:Login' => 'Enter iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'iTop access is restricted. Please, contact an iTop administrator.',
|
||||
@@ -473,7 +461,6 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'UI:CSVImport:idField' => 'id (Primary Key)',
|
||||
'UI:Title:BulkImport' => 'iTop - Bulk import',
|
||||
'UI:Title:BulkImport+' => 'CSV Import Wizard',
|
||||
'UI:Title:BulkSynchro_nbItem_ofClass_class' => 'Synchronization of %1$d objects of class %2$s',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- select one --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'Internal error: "%1$s" is an incorrect code because "%2$s" is NOT an external key of the class "%3$s"',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d objects(s) will stay unchanged.',
|
||||
@@ -855,7 +842,6 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'UI:DisplayThisMessageAtStartup' => 'Display this message at startup',
|
||||
'UI:RelationshipGraph' => 'Graphical view',
|
||||
'UI:RelationshipList' => 'List',
|
||||
'UI:OperationCancelled' => 'Operation Cancelled',
|
||||
|
||||
'Portal:Title' => 'iTop user portal',
|
||||
'Portal:Refresh' => 'Refresh',
|
||||
@@ -875,10 +861,7 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'Portal:Button:CloseTicket' => 'Close this ticket',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'Enter your comments about the resolution of this ticket:',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Error: the current user is not associated with a Contact/Person. Please contact your administrator.',
|
||||
'Portal:Attachments' => 'Attachments',
|
||||
'Portal:AddAttachment' => ' Add Attachment ',
|
||||
'Portal:RemoveAttachment' => ' Remove Attachment ',
|
||||
'Portal:Attachment_No_To_Ticket_Name' => 'Attachment #%1$d to %2$s (%3$s)',
|
||||
|
||||
'Enum:Undefined' => 'Undefined',
|
||||
));
|
||||
|
||||
|
||||
@@ -29,102 +29,6 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
Dict::Add('ES CR', 'English', 'English', array(
|
||||
'Core:AttributeLinkedSet' => 'Array of objects',
|
||||
'Core:AttributeLinkedSet+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeLinkedSetIndirect' => 'Array of objects (N-N)',
|
||||
'Core:AttributeLinkedSetIndirect+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeInteger' => 'Integer',
|
||||
'Core:AttributeInteger+' => 'Numeric value (could be negative)',
|
||||
|
||||
'Core:AttributeDecimal' => 'Decimal',
|
||||
'Core:AttributeDecimal+' => 'Decimal value (could be negative)',
|
||||
|
||||
'Core:AttributeBoolean' => 'Boolean',
|
||||
'Core:AttributeBoolean+' => 'Boolean',
|
||||
|
||||
'Core:AttributeString' => 'String',
|
||||
'Core:AttributeString+' => 'Alphanumeric string',
|
||||
|
||||
'Core:AttributeClass' => 'Class',
|
||||
'Core:AttributeClass+' => 'Class',
|
||||
|
||||
'Core:AttributeApplicationLanguage' => 'User language',
|
||||
'Core:AttributeApplicationLanguage+' => 'Language and country (EN US)',
|
||||
|
||||
'Core:AttributeFinalClass' => 'Class (auto)',
|
||||
'Core:AttributeFinalClass+' => 'Real class of the object (automatically created by the core)',
|
||||
|
||||
'Core:AttributePassword' => 'Password',
|
||||
'Core:AttributePassword+' => 'Password of an external device',
|
||||
|
||||
'Core:AttributeEncryptedString' => 'Encrypted string',
|
||||
'Core:AttributeEncryptedString+' => 'String encrypted with a local key',
|
||||
|
||||
'Core:AttributeText' => 'Text',
|
||||
'Core:AttributeText+' => 'Multiline character string',
|
||||
|
||||
'Core:AttributeHTML' => 'HTML',
|
||||
'Core:AttributeHTML+' => 'HTML string',
|
||||
|
||||
'Core:AttributeEmailAddress' => 'Email address',
|
||||
'Core:AttributeEmailAddress+' => 'Email address',
|
||||
|
||||
'Core:AttributeIPAddress' => 'IP address',
|
||||
'Core:AttributeIPAddress+' => 'IP address',
|
||||
|
||||
'Core:AttributeOQL' => 'OQL',
|
||||
'Core:AttributeOQL+' => 'Object Query Langage expression',
|
||||
|
||||
'Core:AttributeEnum' => 'Enum',
|
||||
'Core:AttributeEnum+' => 'List of predefined alphanumeric strings',
|
||||
|
||||
'Core:AttributeTemplateString' => 'Template string',
|
||||
'Core:AttributeTemplateString+' => 'String containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateText' => 'Template text',
|
||||
'Core:AttributeTemplateText+' => 'Text containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateHTML' => 'Template HTML',
|
||||
'Core:AttributeTemplateHTML+' => 'HTML containing placeholders',
|
||||
|
||||
'Core:AttributeWikiText' => 'Wiki article',
|
||||
'Core:AttributeWikiText+' => 'Wiki formatted text',
|
||||
|
||||
'Core:AttributeDateTime' => 'Date/time',
|
||||
'Core:AttributeDateTime+' => 'Date and time (year-month-day hh:mm:ss)',
|
||||
|
||||
'Core:AttributeDate' => 'Date',
|
||||
'Core:AttributeDate+' => 'Date (year-month-day)',
|
||||
|
||||
'Core:AttributeDeadline' => 'Deadline',
|
||||
'Core:AttributeDeadline+' => 'Date, displayed relatively to the current time',
|
||||
|
||||
'Core:AttributeExternalKey' => 'External key',
|
||||
'Core:AttributeExternalKey+' => 'External (or foreign) key',
|
||||
|
||||
'Core:AttributeExternalField' => 'External field',
|
||||
'Core:AttributeExternalField+' => 'Field mapped from an external key',
|
||||
|
||||
'Core:AttributeURL' => 'URL',
|
||||
'Core:AttributeURL+' => 'Absolute or relative URL as a text string',
|
||||
|
||||
'Core:AttributeBlob' => 'Blob',
|
||||
'Core:AttributeBlob+' => 'Any binary content (document)',
|
||||
|
||||
'Core:AttributeOneWayPassword' => 'One way password',
|
||||
'Core:AttributeOneWayPassword+' => 'One way encrypted (hashed) password',
|
||||
|
||||
'Core:AttributeTable' => 'Table',
|
||||
'Core:AttributeTable+' => 'Indexed array having two dimensions',
|
||||
|
||||
'Core:AttributePropertySet' => 'Properties',
|
||||
'Core:AttributePropertySet+' => 'List of untyped properties (name and value)',
|
||||
));
|
||||
|
||||
|
||||
//
|
||||
// Class: CMDBChange
|
||||
//
|
||||
|
||||
@@ -304,498 +304,494 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array(
|
||||
'Menu:WelcomeMenuPage+' => 'Bienvenido a iTop',
|
||||
'UI:WelcomeMenu:Title' => 'Bienvenido a iTop',
|
||||
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop es un completo; portal IT funcional basado en código abierto (OpenSource).</p>
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop es un completo; portal IT funcioanl basado en código abierto (OpenSource).</p>
|
||||
<ul>Incluye:
|
||||
<li>Una CMDB competa (Configuration management database) para documentar y manejar el inverntario de TI..</li>
|
||||
<li>Un módul de gestión de incidentes, para llevar la trazabilidad y comunicar los eventos que estan afectando IT.</li>
|
||||
<li>Un módulo de gestion de cambio para planear y llevar la trazabilidad de cambios hechos al ambiente de TI.</li>
|
||||
<li>Un módulo de gestion de cambio para planear y llevar la trazabilidad hechos al ambiente de TI.</li>
|
||||
<li>Una base de conocimiento para acelerar la correción de incidentes.</li>
|
||||
<li>Un moódulo de Cortes/Caídas para documentar todas las caídas planeadas o no y notificar a los contactods del caso.</li>
|
||||
<li>Tableros de controles para rapidamente tener visión general del ambiente TI..</li>
|
||||
</ul>
|
||||
<p>Todos los modulos pueden ser configurados, paso a paso, individual e independientemente de los otros.</p>',
|
||||
<p>All the modules can be setup, step by step, indepently of each other.</p>',
|
||||
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop esta orientada a los proveedores de servicios, le permite a los Ingenieros de TI administrar facilmente multiples clientes y organizaciones.
|
||||
<ul>iTop, provee un conjunto de funciones de procesos de negocio que:
|
||||
<li>Mejora Enhances IT management effectiveness</li>
|
||||
<li>Dirige el desempeño de la operaciones de TI</li>
|
||||
<li>Incrementa la satisfaccion del cliente y provee a los ejecutivos con detalles del desempeño del negocio.</li>
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop is service provider oriented, it allows IT engineers to manage easily multiple customers or organizations.
|
||||
<ul>iTop, delivers a feature-rich set of business processes that:
|
||||
<li>Enhances IT management effectiveness</li>
|
||||
<li>Drives IT operations performance</li>
|
||||
<li>Improves customer satisfaction and provides executives with insights into business performance.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>iTop es completamente abierto para ser integrado con su actual infraestructura de Gestion de TI.</p>
|
||||
<p>iTop is completely opened to be integrated within your current IT Management infrastructure.</p>
|
||||
<p>
|
||||
<ul>Adoptar esta nueva generacion de portales de operaciones de TI le ayudara a:
|
||||
<li>Mejorar gestion de entornos de TI mas y mas complejos.</li>
|
||||
<li>Implementar los procesos de ITIL a su propio ritmo.</li>
|
||||
<li>Administrar el bien mas importante de su TI: Documentacion.</li>
|
||||
<ul>Adopting this new generation of IT Operational portal will help you to:
|
||||
<li>Better manage a more and more complex IT environment.</li>
|
||||
<li>Implement ITIL processes at your own pace.</li>
|
||||
<li>Manage the most important asset of your IT: Documentation.</li>
|
||||
</ul>
|
||||
</p>',
|
||||
|
||||
'UI:WelcomeMenu:MyCalls' => 'Mis solicitudes',
|
||||
'UI:WelcomeMenu:MyIncidents' => 'Incidentes asignados a mi',
|
||||
'UI:AllOrganizations' => ' Todas las Organizaciones',
|
||||
'UI:YourSearch' => 'Su busqueda',
|
||||
'UI:LoggedAsMessage' => 'Conectado como %1$s',
|
||||
'UI:LoggedAsMessage+Admin' => 'Conectado como %1$s (Administrator)',
|
||||
'UI:Button:Logoff' => 'Cerrar sesion',
|
||||
'UI:Button:GlobalSearch' => 'Buscar',
|
||||
'UI:Button:Search' => ' Buscar ',
|
||||
'UI:Button:Query' => ' Consulta ',
|
||||
'UI:WelcomeMenu:MyCalls' => 'My requests',
|
||||
'UI:WelcomeMenu:MyIncidents' => 'Incidents assigned to me',
|
||||
'UI:AllOrganizations' => ' All Organizations ',
|
||||
'UI:YourSearch' => 'Your Search',
|
||||
'UI:LoggedAsMessage' => 'Logged in as %1$s',
|
||||
'UI:LoggedAsMessage+Admin' => 'Logged in as %1$s (Administrator)',
|
||||
'UI:Button:Logoff' => 'Log off',
|
||||
'UI:Button:GlobalSearch' => 'Search',
|
||||
'UI:Button:Search' => ' Search ',
|
||||
'UI:Button:Query' => ' Query ',
|
||||
'UI:Button:Ok' => 'Ok',
|
||||
'UI:Button:Cancel' => 'Cancelar',
|
||||
'UI:Button:Apply' => 'Aplicar',
|
||||
'UI:Button:Back' => ' << Anterior ',
|
||||
'UI:Button:Next' => ' Siguiente >> ',
|
||||
'UI:Button:Finish' => ' Finalizar ',
|
||||
'UI:Button:DoImport' => ' Importar los datos ! ',
|
||||
'UI:Button:Done' => ' Listo ',
|
||||
'UI:Button:SimulateImport' => ' Simular la Importacion ',
|
||||
'UI:Button:Test' => 'Probar!',
|
||||
'UI:Button:Evaluate' => ' Evaluar ',
|
||||
'UI:Button:AddObject' => ' Agregar... ',
|
||||
'UI:Button:BrowseObjects' => ' Examinar... ',
|
||||
'UI:Button:Add' => ' agregar ',
|
||||
'UI:Button:AddToList' => ' << Agregar ',
|
||||
'UI:Button:RemoveFromList' => ' Remover >> ',
|
||||
'UI:Button:FilterList' => ' Filtrar... ',
|
||||
'UI:Button:Create' => ' Crear ',
|
||||
'UI:Button:Delete' => ' Borrar! ',
|
||||
'UI:Button:ChangePassword' => ' Cambiar Contraseña',
|
||||
'UI:Button:ResetPassword' => ' Restablecer Contraseña',
|
||||
'UI:Button:Cancel' => 'Cancel',
|
||||
'UI:Button:Apply' => 'Apply',
|
||||
'UI:Button:Back' => ' << Back ',
|
||||
'UI:Button:Next' => ' Next >> ',
|
||||
'UI:Button:Finish' => ' Finish ',
|
||||
'UI:Button:DoImport' => ' Run the Import ! ',
|
||||
'UI:Button:Done' => ' Done ',
|
||||
'UI:Button:SimulateImport' => ' Simulate the Import ',
|
||||
'UI:Button:Test' => 'Test!',
|
||||
'UI:Button:Evaluate' => ' Evaluate ',
|
||||
'UI:Button:AddObject' => ' Add... ',
|
||||
'UI:Button:BrowseObjects' => ' Browse... ',
|
||||
'UI:Button:Add' => ' Add ',
|
||||
'UI:Button:AddToList' => ' << Add ',
|
||||
'UI:Button:RemoveFromList' => ' Remove >> ',
|
||||
'UI:Button:FilterList' => ' Filter... ',
|
||||
'UI:Button:Create' => ' Create ',
|
||||
'UI:Button:Delete' => ' Delete ! ',
|
||||
'UI:Button:ChangePassword' => ' Change Password ',
|
||||
'UI:Button:ResetPassword' => ' Reset Password ',
|
||||
|
||||
'UI:SearchToggle' => 'Buscar',
|
||||
'UI:SearchToggle' => 'Search',
|
||||
'UI:ClickToCreateNew' => 'Crear un nuevo %1$s',
|
||||
'UI:SearchFor_Class' => 'Buscar %1$s objetos',
|
||||
'UI:NoObjectToDisplay' => 'Ningún objeto para visualizar.',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => 'El parametro object_id es obligatorio cuando link_attr es especificado. Verifique la definicion de la plantilla de visualizacion.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => 'El parametro target_attr es obligatorio cuando link_attr es especificado. Verifique la definicion de la plantilla de visualizacion.',
|
||||
'UI:Error:MandatoryTemplateParameter_group_by' => 'El parametro group_by es obligatorio. Verifique la definicion de la plantilla de visualizacion.',
|
||||
'UI:Error:InvalidGroupByFields' => 'La lista de campos para agrupar por: "%1$s" es invalida.',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => 'Error: Estilo de bloque no soportado: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Definicio de vinculo incorrecto: la clase de objeto a administrar : %1$s no fue encontrada como clave externa en la clase %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'No se encontro el objeto: %1$s:%2$d.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Error: Verifique el modelo de datos, Existen referencias cisculares en la dependencias entre los campos.',
|
||||
'UI:Error:UploadedFileTooBig' => 'archivo cargado es muy grande. (tamaño maximo permitido es de %1$s. Verifique su configuracion de PHP para upload_max_filesize.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'El archivo cargado ha sido truncado!',
|
||||
'UI:Error:NoTmpDir' => 'El directorio temporal no ha sido definido.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'No fue posible escribir el archivo temporal al disco. upload_tmp_dir = "%1$s".',
|
||||
'UI:Error:UploadStoppedByExtension_FileName' => 'Carga de archivo interrumpida por la extension. (Nombre de archivo original = "%1$s").',
|
||||
'UI:Error:UploadFailedUnknownCause_Code' => 'Carga de archivo fallida, causa desconocida. (Codigo de error = "%1$s").',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => 'Parameter object_id is mandatory when link_attr is specified. Check the definition of the display template.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => 'Parameter target_attr is mandatory when link_attr is specified. Check the definition of the display template.',
|
||||
'UI:Error:MandatoryTemplateParameter_group_by' => 'Parameter group_by is mandatory. Check the definition of the display template.',
|
||||
'UI:Error:InvalidGroupByFields' => 'Invalid list of fields to group by: "%1$s".',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => 'Error: unsupported style of block: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Incorrect link definition: the class of objects to manage: %1$s was not found as an external key in the class %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Object: %1$s:%2$d not found.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Error: Circular reference in the dependencies between the fields, check the data model.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Uploaded file is too big. (Max allowed size is %1$s. Check you PHP configuration for upload_max_filesize and post_max_size.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Uploaded file has been truncated !',
|
||||
'UI:Error:NoTmpDir' => 'The temporary directory is not defined.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Unable to write the temporary file to the disk. upload_tmp_dir = "%1$s".',
|
||||
'UI:Error:UploadStoppedByExtension_FileName' => 'Upload stopped by extension. (Original file name = "%1$s").',
|
||||
'UI:Error:UploadFailedUnknownCause_Code' => 'File upload failed, unknown cause. (Error code = "%1$s").',
|
||||
|
||||
'UI:Error:1ParametersMissing' => 'Error: El siguiente parametro debe ser especificado para esta operacion: %1$s.',
|
||||
'UI:Error:2ParametersMissing' => 'Error: Los siguientes parametros deben ser especificados para esta operacion: %1$s and %2$s.',
|
||||
'UI:Error:3ParametersMissing' => 'Error: Los siguientes parametros deben ser especificados para esta operacion: %1$s, %2$s and %3$s.',
|
||||
'UI:Error:4ParametersMissing' => 'Error: Los siguientes parametros deben ser especificados para esta operacion: %1$s, %2$s, %3$s and %4$s.',
|
||||
'UI:Error:IncorrectOQLQuery_Message' => 'Error: Consulta OQL incorrecta: %1$s',
|
||||
'UI:Error:AnErrorOccuredWhileRunningTheQuery_Message' => 'Se ha producido un error al ejecutar la consulta: %1$s',
|
||||
'UI:Error:ObjectAlreadyUpdated' => 'Error: el objeta ha sido previamente actualizado.',
|
||||
'UI:Error:ObjectCannotBeUpdated' => 'Error: el objeto no puede ser actualizado.',
|
||||
'UI:Error:ObjectsAlreadyDeleted' => 'Error: los objetos ya han sido borrados!',
|
||||
'UI:Error:BulkDeleteNotAllowedOn_Class' => 'No esta autorizado a borrar un lote de de objetos de la clase %1$s',
|
||||
'UI:Error:DeleteNotAllowedOn_Class' => 'No esta autorizado a borrar objetos del la clase %1$s',
|
||||
'UI:Error:BulkModifyNotAllowedOn_Class' => 'No esta autorizado a actualizar un lote de de objetos de la clase %1$s',
|
||||
'UI:Error:ObjectAlreadyCloned' => 'Error: el objeto ha sido previamente duplicado!',
|
||||
'UI:Error:ObjectAlreadyCreated' => 'Error: el objeto ha sido previamente creado!',
|
||||
'UI:Error:Invalid_Stimulus_On_Object_In_State' => 'Error: estimulo invalido "%1$s" en objeto %2$s en estado "%3$s".',
|
||||
'UI:Error:1ParametersMissing' => 'Error: the following parameter must be specified for this operation: %1$s.',
|
||||
'UI:Error:2ParametersMissing' => 'Error: the following parameters must be specified for this operation: %1$s and %2$s.',
|
||||
'UI:Error:3ParametersMissing' => 'Error: the following parameters must be specified for this operation: %1$s, %2$s and %3$s.',
|
||||
'UI:Error:4ParametersMissing' => 'Error: the following parameters must be specified for this operation: %1$s, %2$s, %3$s and %4$s.',
|
||||
'UI:Error:IncorrectOQLQuery_Message' => 'Error: incorrect OQL query: %1$s',
|
||||
'UI:Error:AnErrorOccuredWhileRunningTheQuery_Message' => 'An error occured while running the query: %1$s',
|
||||
'UI:Error:ObjectAlreadyUpdated' => 'Error: the object has already been updated.',
|
||||
'UI:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated.',
|
||||
'UI:Error:ObjectsAlreadyDeleted' => 'Error: objects have already been deleted!',
|
||||
'UI:Error:BulkDeleteNotAllowedOn_Class' => 'You are not allowed to perform a bulk delete of objects of class %1$s',
|
||||
'UI:Error:DeleteNotAllowedOn_Class' => 'You are not allowed to delete objects of class %1$s',
|
||||
'UI:Error:BulkModifyNotAllowedOn_Class' => 'You are not allowed to perform a bulk update of objects of class %1$s',
|
||||
'UI:Error:ObjectAlreadyCloned' => 'Error: the object has already been cloned!',
|
||||
'UI:Error:ObjectAlreadyCreated' => 'Error: the object has already been created!',
|
||||
'UI:Error:Invalid_Stimulus_On_Object_In_State' => 'Error: invalid stimulus "%1$s" on object %2$s in state "%3$s".',
|
||||
|
||||
|
||||
'UI:GroupBy:Count' => 'Cuenta',
|
||||
'UI:GroupBy:Count+' => 'Numero de elementoso',
|
||||
'UI:CountOfObjects' => '%1$d objetos cumplen criterio.',
|
||||
'UI_CountOfObjectsShort' => '%1$d objetos.',
|
||||
'UI:NoObject_Class_ToDisplay' => 'No hay %1$s para mostrar',
|
||||
'UI:History:LastModified_On_By' => 'Ultima modificacion el %1$s por %2$s.',
|
||||
'UI:HistoryTab' => 'Historia',
|
||||
'UI:History:Date' => 'Fecha',
|
||||
'UI:History:Date+' => 'Fecha del Cambio',
|
||||
'UI:History:User' => 'Usuario',
|
||||
'UI:History:User+' => 'Usuario que hizo el cambio',
|
||||
'UI:History:Changes' => 'Cambios',
|
||||
'UI:History:Changes+' => 'Chambios hechos al objeto',
|
||||
'UI:Loading' => 'Cargando...',
|
||||
'UI:Menu:Actions' => 'Acciones',
|
||||
'UI:Menu:New' => 'Nuevo...',
|
||||
'UI:History:StatsCreations' => 'Created',
|
||||
'UI:History:StatsCreations+' => 'Count of objects created',
|
||||
'UI:History:StatsModifs' => 'Modified',
|
||||
'UI:History:StatsModifs+' => 'Count of objects modified',
|
||||
'UI:History:StatsDeletes' => 'Deleted',
|
||||
'UI:History:StatsDeletes+' => 'Count of objects deleted',
|
||||
'UI:GroupBy:Count' => 'Count',
|
||||
'UI:GroupBy:Count+' => 'Number of elements',
|
||||
'UI:CountOfObjects' => '%1$d objects matching the criteria.',
|
||||
'UI_CountOfObjectsShort' => '%1$d objects.',
|
||||
'UI:NoObject_Class_ToDisplay' => 'No %1$s to display',
|
||||
'UI:History:LastModified_On_By' => 'Last modified on %1$s by %2$s.',
|
||||
'UI:HistoryTab' => 'History',
|
||||
'UI:History:Date' => 'Date',
|
||||
'UI:History:Date+' => 'Date of the change',
|
||||
'UI:History:User' => 'User',
|
||||
'UI:History:User+' => 'User who made the change',
|
||||
'UI:History:Changes' => 'Changes',
|
||||
'UI:History:Changes+' => 'Changes made to the object',
|
||||
'UI:Loading' => 'Loading...',
|
||||
'UI:Menu:Actions' => 'Actions',
|
||||
'UI:Menu:New' => 'New...',
|
||||
'UI:Menu:Add' => 'Add...',
|
||||
'UI:Menu:Manage' => 'Manage...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'exportar a CSV',
|
||||
'UI:Menu:Modify' => 'Modificar...',
|
||||
'UI:Menu:Delete' => 'Borrar...',
|
||||
'UI:Menu:Manage' => 'Administrar...',
|
||||
'UI:Menu:BulkDelete' => 'Borrar...',
|
||||
'UI:UndefinedObject' => 'indefinido',
|
||||
'UI:Document:OpenInNewWindow:Download' => 'abrir en nueva ventana: %1$s, Descargar: %2$s',
|
||||
'UI:SelectAllToggle+' => 'Seleccionar / Deseleccionar Todo',
|
||||
'UI:TruncatedResults' => 'Mostrando %1$d objetos de %2$d',
|
||||
'UI:DisplayAll' => 'Mostrar todo',
|
||||
'UI:CountOfResults' => '%1$d objeto(s)',
|
||||
'UI:ChangesLogTitle' => 'Registro de cambios (%1$d):',
|
||||
'UI:EmptyChangesLogTitle' => 'Registro de cambios esta vacio',
|
||||
'UI:Menu:CSVExport' => 'CSV Export',
|
||||
'UI:Menu:Modify' => 'Modify...',
|
||||
'UI:Menu:Delete' => 'Delete...',
|
||||
'UI:Menu:Manage' => 'Manage...',
|
||||
'UI:Menu:BulkDelete' => 'Delete...',
|
||||
'UI:UndefinedObject' => 'undefined',
|
||||
'UI:Document:OpenInNewWindow:Download' => 'Open in new window: %1$s, Download: %2$s',
|
||||
'UI:SelectAllToggle+' => 'Select / Deselect All',
|
||||
'UI:TruncatedResults' => '%1$d objects displayed out of %2$d',
|
||||
'UI:DisplayAll' => 'Display All',
|
||||
'UI:CountOfResults' => '%1$d object(s)',
|
||||
'UI:ChangesLogTitle' => 'Changes log (%1$d):',
|
||||
'UI:EmptyChangesLogTitle' => 'Changes log is empty',
|
||||
'UI:SearchFor_Class_Objects' => 'Buscar %1$s objetos',
|
||||
'UI:OQLQueryBuilderTitle' => 'Constructor de consultas OQL',
|
||||
'UI:OQLQueryTab' => 'Consulta OQL',
|
||||
'UI:SimpleSearchTab' => 'Busqueda simple',
|
||||
'UI:Details+' => 'Detalles',
|
||||
'UI:SearchValue:Any' => '* Cualquiera *',
|
||||
'UI:SearchValue:Mixed' => '* mezclado *',
|
||||
'UI:SelectOne' => '-- Seleccione uno --',
|
||||
'UI:Login:Welcome' => 'Bienvenido a iTop!',
|
||||
'UI:Login:IncorrectLoginPassword' => 'Usuario/Contraseña incorrecto, por favor intente otra vez.',
|
||||
'UI:Login:IdentifyYourself' => 'Identifiquese antes de continuar',
|
||||
'UI:Login:UserNamePrompt' => 'Nombre de Usuario',
|
||||
'UI:Login:PasswordPrompt' => 'Contraseña',
|
||||
'UI:Login:ChangeYourPassword' => 'Cambien su Contraseña',
|
||||
'UI:Login:OldPasswordPrompt' => 'Contraseña Anterior',
|
||||
'UI:Login:NewPasswordPrompt' => 'Contraseña Nueva',
|
||||
'UI:Login:RetypeNewPasswordPrompt' => 'Reintroduzca Nueva contraseña',
|
||||
'UI:Login:IncorrectOldPassword' => 'Error: la contraseña anterior es incorrecta',
|
||||
'UI:LogOffMenu' => 'Cerrar sesion',
|
||||
'UI:ChangePwdMenu' => 'Cambiar Contraseña...',
|
||||
'UI:AccessRO-All' => 'iTop is read-only',
|
||||
'UI:AccessRO-Users' => 'iTop is read-only for end-users',
|
||||
'UI:Login:Error:AccessRestricted' => 'El acceso a iTop esta restringido. Por favor contacte al administrador de iTop.',
|
||||
'UI:Login:Error:AccessAdmin' => 'Acceso restringido a usuarios con privilegio de administrador. Por favor contacte al administrador de iTop.',
|
||||
'UI:CSVImport:MappingSelectOne' => '-- seleccione uno --',
|
||||
'UI:CSVImport:MappingNotApplicable' => '-- ignore este campo --',
|
||||
'UI:CSVImport:NoData' => 'Conjunto de datos vacio..., pro favor provea alguna data!',
|
||||
'UI:Title:DataPreview' => 'Vista previa de datos',
|
||||
'UI:CSVImport:ErrorOnlyOneColumn' => 'Error: La data solo contiene una columna. Selecciono el separador de campos adecuado?',
|
||||
'UI:CSVImport:FieldName' => 'Campo %1$d',
|
||||
'UI:CSVImport:DataLine1' => 'Linea de datos 1',
|
||||
'UI:CSVImport:DataLine2' => 'Linea de datos 2',
|
||||
'UI:CSVImport:idField' => 'id (Clave primaria)',
|
||||
'UI:Title:BulkImport' => 'iTop - Importacion por lotes',
|
||||
'UI:Title:BulkImport+' => 'Asistente de importar CSV',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- seleccione uno --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'error interno: "%1$s" es un codigo incorrecto debido a que "%2$s" NO es una clave externa de la clase "%3$s"',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d objeto(s) permanecera sin cambio.',
|
||||
'UI:CSVImport:ObjectsWillBeModified' => '%1$d objeto(s) sera modificado.',
|
||||
'UI:CSVImport:ObjectsWillBeAdded' => '%1$d objeto(s) sera agregado.',
|
||||
'UI:CSVImport:ObjectsWillHaveErrors' => '%1$d objeto(s) tendra error.',
|
||||
'UI:OQLQueryBuilderTitle' => 'OQL Query Builder',
|
||||
'UI:OQLQueryTab' => 'OQL Query',
|
||||
'UI:SimpleSearchTab' => 'Simple Search',
|
||||
'UI:Details+' => 'Details',
|
||||
'UI:SearchValue:Any' => '* Any *',
|
||||
'UI:SearchValue:Mixed' => '* mixed *',
|
||||
'UI:SelectOne' => '-- select one --',
|
||||
'UI:Login:Welcome' => 'Welcome to iTop!',
|
||||
'UI:Login:IncorrectLoginPassword' => 'Incorrect login/password, please try again.',
|
||||
'UI:Login:IdentifyYourself' => 'Identify yourself before continuing',
|
||||
'UI:Login:UserNamePrompt' => 'User Name',
|
||||
'UI:Login:PasswordPrompt' => 'Password',
|
||||
'UI:Login:ChangeYourPassword' => 'Change Your Password',
|
||||
'UI:Login:OldPasswordPrompt' => 'Old password',
|
||||
'UI:Login:NewPasswordPrompt' => 'New password',
|
||||
'UI:Login:RetypeNewPasswordPrompt' => 'Retype new password',
|
||||
'UI:Login:IncorrectOldPassword' => 'Error: the old password is incorrect',
|
||||
'UI:LogOffMenu' => 'Log off',
|
||||
'UI:ChangePwdMenu' => 'Change Password...',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'New password and retyped new password do not match !',
|
||||
'UI:Button:Login' => 'Enter iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'iTop access is restricted. Please, contact an iTop administrator.',
|
||||
'UI:Login:Error:AccessAdmin' => 'Access restricted to people having administrator privileges. Please, contact an iTop administrator.',
|
||||
'UI:CSVImport:MappingSelectOne' => '-- select one --',
|
||||
'UI:CSVImport:MappingNotApplicable' => '-- ignore this field --',
|
||||
'UI:CSVImport:NoData' => 'Empty data set..., please provide some data!',
|
||||
'UI:Title:DataPreview' => 'Data Preview',
|
||||
'UI:CSVImport:ErrorOnlyOneColumn' => 'Error: The data contains only one column. Did you select the appropriate separator character?',
|
||||
'UI:CSVImport:FieldName' => 'Field %1$d',
|
||||
'UI:CSVImport:DataLine1' => 'Data Line 1',
|
||||
'UI:CSVImport:DataLine2' => 'Data Line 2',
|
||||
'UI:CSVImport:idField' => 'id (Primary Key)',
|
||||
'UI:Title:BulkImport' => 'iTop - Bulk import',
|
||||
'UI:Title:BulkImport+' => 'CSV Import Wizard',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- select one --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'Internal error: "%1$s" is an incorrect code because "%2$s" is NOT an external key of the class "%3$s"',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d objects(s) will stay unchanged.',
|
||||
'UI:CSVImport:ObjectsWillBeModified' => '%1$d objects(s) will be modified.',
|
||||
'UI:CSVImport:ObjectsWillBeAdded' => '%1$d objects(s) will be added.',
|
||||
'UI:CSVImport:ObjectsWillHaveErrors' => '%1$d objects(s) will have errors.',
|
||||
'UI:CSVImport:ObjectsRemainedUnchanged' => '%1$d objects(s) remained unchanged.',
|
||||
'UI:CSVImport:ObjectsWereModified' => '%1$d objeto(s) sera modificado.',
|
||||
'UI:CSVImport:ObjectsWereAdded' => '%1$d objeto(s) fue agregado.',
|
||||
'UI:CSVImport:ObjectsHadErrors' => '%1$d objeto(s) tuvo errores.',
|
||||
'UI:Title:CSVImportStep2' => 'Paso 2 de 5: opciones de datos CSV',
|
||||
'UI:Title:CSVImportStep3' => 'Paso 3 de 5: mapeo de datos',
|
||||
'UI:Title:CSVImportStep4' => 'Paso 4 de 5: simular la importacion',
|
||||
'UI:Title:CSVImportStep5' => 'Paso 5 de 5: importacion completada',
|
||||
'UI:CSVImport:LinesNotImported' => 'Lineas que no pudieron ser cargadas:',
|
||||
'UI:CSVImport:LinesNotImported+' => 'Las siguientes lineas no pudieron ser importadas porque contienen errores',
|
||||
'UI:CSVImport:SeparatorComma+' => ', (coma)',
|
||||
'UI:CSVImport:SeparatorSemicolon+' => '; (punto y coma)',
|
||||
'UI:CSVImport:SeparatorTab+' => 'tabulador',
|
||||
'UI:CSVImport:SeparatorOther' => 'otro:',
|
||||
'UI:CSVImport:QualifierDoubleQuote+' => '" (comilla doble)',
|
||||
'UI:CSVImport:QualifierSimpleQuote+' => '\' (comilla simple)',
|
||||
'UI:CSVImport:QualifierOther' => 'otro:',
|
||||
'UI:CSVImport:TreatFirstLineAsHeader' => 'Use la primera linea como encabezado de columna(nombre de columnas))',
|
||||
'UI:CSVImport:Skip_N_LinesAtTheBeginning' => 'Omitir %1$s linea(s) al inicio de el archivo',
|
||||
'UI:CSVImport:CSVDataPreview' => 'Vista previa de los datos CSV',
|
||||
'UI:CSVImport:SelectFile' => 'Seleccione el archivo a importar:',
|
||||
'UI:CSVImport:Tab:LoadFromFile' => 'Cargar desde archivo',
|
||||
'UI:CSVImport:Tab:CopyPaste' => 'Copiar y pegar data',
|
||||
'UI:CSVImport:Tab:Templates' => 'Plantillas',
|
||||
'UI:CSVImport:PasteData' => 'Pegue la data a importar:',
|
||||
'UI:CSVImport:PickClassForTemplate' => 'seleccione la plantilla a descargar: ',
|
||||
'UI:CSVImport:SeparatorCharacter' => 'Caracter separador:',
|
||||
'UI:CSVImport:TextQualifierCharacter' => 'Caracter para calificar como texto',
|
||||
'UI:CSVImport:CommentsAndHeader' => 'Comentarios y encabezado',
|
||||
'UI:CSVImport:SelectClass' => 'Seleccione la clase a importar:',
|
||||
'UI:CSVImport:AdvancedMode' => 'Modo avanzado',
|
||||
'UI:CSVImport:AdvancedMode+' => 'En modo avanzado el "id" (clave primaria) de los objetos puede ser usado para actualizar y renombrar objetos.' .
|
||||
'Sin embargo, la columna "id" (si esta presente) solo puede ser usado como criterio de busqueda y no puede ser combinado con ningun otro criterio de busqueda.',
|
||||
'UI:CSVImport:SelectAClassFirst' => 'Para configurar el mapeo, primero seleccione un clase.',
|
||||
'UI:CSVImport:HeaderFields' => 'Campos',
|
||||
'UI:CSVImport:HeaderMappings' => 'Mapeo',
|
||||
'UI:CSVImport:HeaderSearch' => 'Buscar?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => 'Por favor seleccione un mapeo para cada categoria.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => 'Por favor seleccione al menos un criterio de busqueda',
|
||||
'UI:CSVImport:ObjectsWereModified' => '%1$d objects(s) were modified.',
|
||||
'UI:CSVImport:ObjectsWereAdded' => '%1$d objects(s) were added.',
|
||||
'UI:CSVImport:ObjectsHadErrors' => '%1$d objects(s) had errors.',
|
||||
'UI:Title:CSVImportStep2' => 'Step 2 of 5: CSV data options',
|
||||
'UI:Title:CSVImportStep3' => 'Step 3 of 5: Data mapping',
|
||||
'UI:Title:CSVImportStep4' => 'Step 4 of 5: Import simulation',
|
||||
'UI:Title:CSVImportStep5' => 'Step 5 of 5: Import completed',
|
||||
'UI:CSVImport:LinesNotImported' => 'Lines that could not be loaded:',
|
||||
'UI:CSVImport:LinesNotImported+' => 'The following lines have not been imported because they contain errors',
|
||||
'UI:CSVImport:SeparatorComma+' => ', (comma)',
|
||||
'UI:CSVImport:SeparatorSemicolon+' => '; (semicolon)',
|
||||
'UI:CSVImport:SeparatorTab+' => 'tab',
|
||||
'UI:CSVImport:SeparatorOther' => 'other:',
|
||||
'UI:CSVImport:QualifierDoubleQuote+' => '" (double quote)',
|
||||
'UI:CSVImport:QualifierSimpleQuote+' => '\' (simple quote)',
|
||||
'UI:CSVImport:QualifierOther' => 'other:',
|
||||
'UI:CSVImport:TreatFirstLineAsHeader' => 'Treat the first line as a header (column names)',
|
||||
'UI:CSVImport:Skip_N_LinesAtTheBeginning' => 'Skip %1$s line(s) at the beginning of the file',
|
||||
'UI:CSVImport:CSVDataPreview' => 'CSV Data Preview',
|
||||
'UI:CSVImport:SelectFile' => 'Select the file to import:',
|
||||
'UI:CSVImport:Tab:LoadFromFile' => 'Load from a file',
|
||||
'UI:CSVImport:Tab:CopyPaste' => 'Copy and paste data',
|
||||
'UI:CSVImport:Tab:Templates' => 'Templates',
|
||||
'UI:CSVImport:PasteData' => 'Paste the data to import:',
|
||||
'UI:CSVImport:PickClassForTemplate' => 'Pick the template to download: ',
|
||||
'UI:CSVImport:SeparatorCharacter' => 'Separator character:',
|
||||
'UI:CSVImport:TextQualifierCharacter' => 'Text qualifier character',
|
||||
'UI:CSVImport:CommentsAndHeader' => 'Comments and header',
|
||||
'UI:CSVImport:SelectClass' => 'Select the class to import:',
|
||||
'UI:CSVImport:AdvancedMode' => 'Advanced mode',
|
||||
'UI:CSVImport:AdvancedMode+' => 'In advanced mode the "id" (primary key) of the objects can be used to update and rename objects.' .
|
||||
'However the column "id" (if present) can only be used as a search criteria and can not be combined with any other search criteria.',
|
||||
'UI:CSVImport:SelectAClassFirst' => 'To configure the mapping, select a class first.',
|
||||
'UI:CSVImport:HeaderFields' => 'Fields',
|
||||
'UI:CSVImport:HeaderMappings' => 'Mappings',
|
||||
'UI:CSVImport:HeaderSearch' => 'Search?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => 'Please select a mapping for every field.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => 'Please select at least one search criteria',
|
||||
|
||||
'UI:UniversalSearchTitle' => 'iTop - Busqueda Universal',
|
||||
'UI:UniversalSearchTitle' => 'iTop - Universal Search',
|
||||
'UI:UniversalSearch:Error' => 'Error: %1$s',
|
||||
'UI:UniversalSearch:LabelSelectTheClass' => 'Seleccione la clase a buscar: ',
|
||||
'UI:UniversalSearch:LabelSelectTheClass' => 'Select the class to search: ',
|
||||
|
||||
'UI:Audit:Title' => 'iTop - Auditoria a CMDB',
|
||||
'UI:Audit:InteractiveAudit' => 'Auditoria Interactiva',
|
||||
'UI:Audit:HeaderAuditRule' => 'Reglas de Auditoria',
|
||||
'UI:Audit:HeaderNbObjects' => '# Objetos',
|
||||
'UI:Audit:HeaderNbErrors' => '# Errores',
|
||||
'UI:Audit:Title' => 'iTop - CMDB Audit',
|
||||
'UI:Audit:InteractiveAudit' => 'Interactive Audit',
|
||||
'UI:Audit:HeaderAuditRule' => 'Audit Rule',
|
||||
'UI:Audit:HeaderNbObjects' => '# Objects',
|
||||
'UI:Audit:HeaderNbErrors' => '# Errors',
|
||||
'UI:Audit:PercentageOk' => '% Ok',
|
||||
|
||||
'UI:RunQuery:Title' => 'iTop - Evaluacion de consultas OQL',
|
||||
'UI:RunQuery:QueryExamples' => 'Explorador de Consultas',
|
||||
'UI:RunQuery:HeaderPurpose' => 'Proposito',
|
||||
'UI:RunQuery:HeaderPurpose+' => 'Explicacion acerca de la consulta',
|
||||
'UI:RunQuery:HeaderOQLExpression' => 'Expresion OQL',
|
||||
'UI:RunQuery:HeaderOQLExpression+' => 'La consulta en syntaxis OQL',
|
||||
'UI:RunQuery:ExpressionToEvaluate' => 'Expresion a evaluar: ',
|
||||
'UI:RunQuery:MoreInfo' => 'Mas informacion acerca de la consulta: ',
|
||||
'UI:RunQuery:DevelopedQuery' => 'Expresion de consulta rediseñada: ',
|
||||
'UI:RunQuery:SerializedFilter' => 'Filtro de serializacion: ',
|
||||
'UI:RunQuery:Error' => 'Ha ocurrido un error al ejecutar la consulta: %1$s',
|
||||
'UI:RunQuery:Title' => 'iTop - OQL Query Evaluation',
|
||||
'UI:RunQuery:QueryExamples' => 'Query Examples',
|
||||
'UI:RunQuery:HeaderPurpose' => 'Purpose',
|
||||
'UI:RunQuery:HeaderPurpose+' => 'Explanation about the query',
|
||||
'UI:RunQuery:HeaderOQLExpression' => 'OQL Expression',
|
||||
'UI:RunQuery:HeaderOQLExpression+' => 'The query in OQL syntax',
|
||||
'UI:RunQuery:ExpressionToEvaluate' => 'Expression to evaluate: ',
|
||||
'UI:RunQuery:MoreInfo' => 'More information about the query: ',
|
||||
'UI:RunQuery:DevelopedQuery' => 'Redevelopped query expression: ',
|
||||
'UI:RunQuery:SerializedFilter' => 'Serialized filter: ',
|
||||
'UI:RunQuery:Error' => 'An error occured while running the query: %1$s',
|
||||
|
||||
'UI:Schema:Title' => 'Esquema de objetos iTop',
|
||||
'UI:Schema:CategoryMenuItem' => 'Categoria <b>%1$s</b>',
|
||||
'UI:Schema:Relationships' => 'Relaciones',
|
||||
'UI:Schema:AbstractClass' => 'Clase abstracta: ningun objeto de esta clase puede ser representado.',
|
||||
'UI:Schema:NonAbstractClass' => 'Clase no abstracta: objetos de esta clase pueden ser representados.',
|
||||
'UI:Schema:ClassHierarchyTitle' => 'Jerarquia de clases',
|
||||
'UI:Schema:AllClasses' => 'Todas las clases',
|
||||
'UI:Schema:ExternalKey_To' => 'clave externa a %1$s',
|
||||
'UI:Schema:Columns_Description' => 'Columnas: <em>%1$s</em>',
|
||||
'UI:Schema:Default_Description' => 'Predeterminar: "%1$s"',
|
||||
'UI:Schema:NullAllowed' => 'Permite Null',
|
||||
'UI:Schema:NullNotAllowed' => 'NO permite Null',
|
||||
'UI:Schema:Attributes' => 'Atributos',
|
||||
'UI:Schema:AttributeCode' => 'Codigo de Atributo',
|
||||
'UI:Schema:AttributeCode+' => 'Codigo interno del atributo',
|
||||
'UI:Schema:Label' => 'Etiqueta',
|
||||
'UI:Schema:Label+' => 'Etiqueta del atributo',
|
||||
'UI:Schema:Type' => 'Tipo',
|
||||
'UI:Schema:Title' => 'iTop objects schema',
|
||||
'UI:Schema:CategoryMenuItem' => 'Category <b>%1$s</b>',
|
||||
'UI:Schema:Relationships' => 'Relationships',
|
||||
'UI:Schema:AbstractClass' => 'Abstract class: no object from this class can be instantiated.',
|
||||
'UI:Schema:NonAbstractClass' => 'Non abstract class: objects from this class can be instantiated.',
|
||||
'UI:Schema:ClassHierarchyTitle' => 'Class hierarchy',
|
||||
'UI:Schema:AllClasses' => 'All classes',
|
||||
'UI:Schema:ExternalKey_To' => 'External key to %1$s',
|
||||
'UI:Schema:Columns_Description' => 'Columns: <em>%1$s</em>',
|
||||
'UI:Schema:Default_Description' => 'Default: "%1$s"',
|
||||
'UI:Schema:NullAllowed' => 'Null Allowed',
|
||||
'UI:Schema:NullNotAllowed' => 'Null NOT Allowed',
|
||||
'UI:Schema:Attributes' => 'Attributes',
|
||||
'UI:Schema:AttributeCode' => 'Attribute Code',
|
||||
'UI:Schema:AttributeCode+' => 'Internal code of the attribute',
|
||||
'UI:Schema:Label' => 'Label',
|
||||
'UI:Schema:Label+' => 'Label of the attribute',
|
||||
'UI:Schema:Type' => 'Type',
|
||||
|
||||
'UI:Schema:Type+' => 'Tipo de dato del atributo',
|
||||
'UI:Schema:Origin' => 'Origen',
|
||||
'UI:Schema:Origin+' => 'La clase base en donde esta definido este atributo',
|
||||
'UI:Schema:Description' => 'Descripcion',
|
||||
'UI:Schema:Description+' => 'Descripcion del atributo',
|
||||
'UI:Schema:AllowedValues' => 'Valores permitidos',
|
||||
'UI:Schema:AllowedValues+' => 'Restricciones en los posibles valores para este atributo',
|
||||
'UI:Schema:MoreInfo' => 'Mas informacion',
|
||||
'UI:Schema:MoreInfo+' => 'Mas informacion acerca del campo definido en la base de datos',
|
||||
'UI:Schema:SearchCriteria' => 'Criterio de busqueda',
|
||||
'UI:Schema:FilterCode' => 'Codigo de filtro',
|
||||
'UI:Schema:FilterCode+' => 'Codigo de este criterio de busqueda',
|
||||
'UI:Schema:FilterDescription' => 'Descripcion',
|
||||
'UI:Schema:FilterDescription+' => 'Descripcion de este criterio de busqueda',
|
||||
'UI:Schema:AvailOperators' => 'Operadores disponibles',
|
||||
'UI:Schema:AvailOperators+' => 'Operadores posibles para este criterio de busqueda',
|
||||
'UI:Schema:ChildClasses' => 'Clases menores',
|
||||
'UI:Schema:ReferencingClasses' => 'Clases de referencia',
|
||||
'UI:Schema:RelatedClasses' => 'Clases relacionadas',
|
||||
'UI:Schema:LifeCycle' => 'Ciclo de vida',
|
||||
'UI:Schema:Triggers' => 'Gatillos',
|
||||
'UI:Schema:Relation_Code_Description' => 'Relacion <em>%1$s</em> (%2$s)',
|
||||
'UI:Schema:RelationDown_Description' => 'Abajo: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Arriba: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: propagar a %2$d niveles, consulta: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: no se propaga(%2$d nivel), consulta: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s esta referenciado por la clase %2$s a travez de el campo %3$s',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s esta vinculado a %2$s a travez de %3$s::<em>%4$s</em>',
|
||||
'UI:Schema:Links:1-n' => 'Clases apuntando a %1$s (1:n enlaces):',
|
||||
'UI:Schema:Links:n-n' => 'Clases apuntando a %1$s (n:n enlaces):',
|
||||
'UI:Schema:Links:All' => 'Grafico de todos los casos relacionados',
|
||||
'UI:Schema:NoLifeCyle' => 'No hay ciclo de vida definido para esta clase.',
|
||||
'UI:Schema:LifeCycleTransitions' => 'Transiciones',
|
||||
'UI:Schema:LifeCyleAttributeOptions' => 'Opciones del atributo',
|
||||
'UI:Schema:LifeCycleHiddenAttribute' => 'Oculto',
|
||||
'UI:Schema:LifeCycleReadOnlyAttribute' => 'Solo-lectrura',
|
||||
'UI:Schema:LifeCycleMandatoryAttribute' => 'Mandatorio',
|
||||
'UI:Schema:LifeCycleAttributeMustChange' => 'Debe cambiar',
|
||||
'UI:Schema:LifeCycleAttributeMustPrompt' => 'Se le pedira al usuario que cambie el valor',
|
||||
'UI:Schema:LifeCycleEmptyList' => 'lista vacia',
|
||||
'UI:Schema:Type+' => 'Data type of the attribute',
|
||||
'UI:Schema:Origin' => 'Origin',
|
||||
'UI:Schema:Origin+' => 'The base class in which this attribute is defined',
|
||||
'UI:Schema:Description' => 'Description',
|
||||
'UI:Schema:Description+' => 'Description of the attribute',
|
||||
'UI:Schema:AllowedValues' => 'Allowed values',
|
||||
'UI:Schema:AllowedValues+' => 'Restrictions on the possible values for this attribute',
|
||||
'UI:Schema:MoreInfo' => 'More info',
|
||||
'UI:Schema:MoreInfo+' => 'More information about the field defined in the database',
|
||||
'UI:Schema:SearchCriteria' => 'Search criteria',
|
||||
'UI:Schema:FilterCode' => 'Filter code',
|
||||
'UI:Schema:FilterCode+' => 'Code of this search criteria',
|
||||
'UI:Schema:FilterDescription' => 'Description',
|
||||
'UI:Schema:FilterDescription+' => 'Description of this search criteria',
|
||||
'UI:Schema:AvailOperators' => 'Available operators',
|
||||
'UI:Schema:AvailOperators+' => 'Possible operators for this search criteria',
|
||||
'UI:Schema:ChildClasses' => 'Child classes',
|
||||
'UI:Schema:ReferencingClasses' => 'Referencing classes',
|
||||
'UI:Schema:RelatedClasses' => 'Related classes',
|
||||
'UI:Schema:LifeCycle' => 'Life cycle',
|
||||
'UI:Schema:Triggers' => 'Triggers',
|
||||
'UI:Schema:Relation_Code_Description' => 'Relation <em>%1$s</em> (%2$s)',
|
||||
'UI:Schema:RelationDown_Description' => 'Down: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Up: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: propagate to %2$d levels, query: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: does not propagates (%2$d levels), query: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s is referenced by the class %2$s via the field %3$s',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s is linked to %2$s via %3$s::<em>%4$s</em>',
|
||||
'UI:Schema:Links:1-n' => 'Classes pointing to %1$s (1:n links):',
|
||||
'UI:Schema:Links:n-n' => 'Classes linked to %1$s (n:n links):',
|
||||
'UI:Schema:Links:All' => 'Graph of all related classes',
|
||||
'UI:Schema:NoLifeCyle' => 'There is no life cycle defined for this class.',
|
||||
'UI:Schema:LifeCycleTransitions' => 'Transitions',
|
||||
'UI:Schema:LifeCyleAttributeOptions' => 'Attribute options',
|
||||
'UI:Schema:LifeCycleHiddenAttribute' => 'Hidden',
|
||||
'UI:Schema:LifeCycleReadOnlyAttribute' => 'Read-only',
|
||||
'UI:Schema:LifeCycleMandatoryAttribute' => 'Mandatory',
|
||||
'UI:Schema:LifeCycleAttributeMustChange' => 'Must change',
|
||||
'UI:Schema:LifeCycleAttributeMustPrompt' => 'User will be prompted to change the value',
|
||||
'UI:Schema:LifeCycleEmptyList' => 'empty list',
|
||||
|
||||
'UI:LinksWidget:Autocomplete+' => 'Escriba los primeros 3 caracteres...',
|
||||
'UI:Combo:SelectValue' => '--- seleccione un valor ---',
|
||||
'UI:Label:SelectedObjects' => 'Objetos seleccionados: ',
|
||||
'UI:Label:AvailableObjects' => 'Objetos disponibles: ',
|
||||
'UI:Link_Class_Attributes' => '%1$s atributos',
|
||||
'UI:SelectAllToggle+' => 'Seleccionar todo / Deseleccionar todo',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => 'Agregar %1$s objetos vinculados con %2$s: %3$s',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => 'Administrar %1$s objetos vinculados con %2$s: %3$s',
|
||||
'UI:AddLinkedObjectsOf_Class' => 'Agregar %1$ss...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => 'Eliminar los objetos seleccionados',
|
||||
'UI:Message:EmptyList:UseAdd' => 'La lista esta vaica, use el boton Agregar... para agregar elementos.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Use la forma arriba para buscar objetos a ser agregados.',
|
||||
'UI:LinksWidget:Autocomplete+' => 'Type the first 3 characters...',
|
||||
'UI:Combo:SelectValue' => '--- select a value ---',
|
||||
'UI:Label:SelectedObjects' => 'Selected objects: ',
|
||||
'UI:Label:AvailableObjects' => 'Available objects: ',
|
||||
'UI:Link_Class_Attributes' => '%1$s attributes',
|
||||
'UI:SelectAllToggle+' => 'Select All / Deselect All',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => 'Add %1$s objects linked with %2$s: %3$s',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => 'Manage %1$s objects linked with %2$s: %3$s',
|
||||
'UI:AddLinkedObjectsOf_Class' => 'Add %1$ss...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => 'Remove selected objects',
|
||||
'UI:Message:EmptyList:UseAdd' => 'The list is empty, use the "Add..." button to add elements.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Use the search form above to search for objects to be added.',
|
||||
|
||||
'UI:Wizard:FinalStepTitle' => 'Paso final: Confirmacion',
|
||||
'UI:Title:DeletionOf_Object' => 'Borrado de %1$s',
|
||||
'UI:Title:BulkDeletionOf_Count_ObjectsOf_Class' => 'Borrado por lote de %1$d objetos de la clase %2$s',
|
||||
'UI:Delete:NotAllowedToDelete' => 'No esta autorizado para borrar este objeto',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => 'No esta autorizado para actualizar el siguiente campo(s): %1$s',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'Este objeto no pudo ser borrado porque el usuario actual no posee suficientes permisos',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => 'Este objeto no pudo ser borrado porque algunas operaciones manuales deben ser ejecutadas antes de eso',
|
||||
'UI:Archive_User_OnBehalfOf_User' => '%1$s en nombre de %2$s',
|
||||
'UI:Delete:AutomaticallyDeleted' => 'Borrado automaticamente',
|
||||
'UI:Delete:AutomaticResetOf_Fields' => 'reinicio automatico de campo(s): %1$s',
|
||||
'UI:Delete:CleaningUpRefencesTo_Object' => 'Limpiando todas las referencias a %1$s...',
|
||||
'UI:Delete:CleaningUpRefencesTo_Several_ObjectsOf_Class' => 'Limpiando todas las referencias a %1$d objetos de la clase %2$s...',
|
||||
'UI:Delete:Done+' => 'Lo que se hizo...',
|
||||
'UI:Delete:_Name_Class_Deleted' => '%1$s - %2$s borrado.',
|
||||
'UI:Delete:ConfirmDeletionOf_Name' => 'Borrado de %1$s',
|
||||
'UI:Delete:ConfirmDeletionOf_Count_ObjectsOf_Class' => 'Borrado de %1$d objetos de al clase %2$s',
|
||||
'UI:Delete:ShouldBeDeletedAtomaticallyButNotAllowed' => 'Beberia ser eliminado automaticamente, pero usted no esta autorizado para hacerlo',
|
||||
'UI:Delete:MustBeDeletedManuallyButNotAllowed' => 'Debe ser borrado manualmente - pero usted no esta autorizado para borrar este objeto, por favor contacte al administrador de la aplicacion',
|
||||
'UI:Delete:WillBeDeletedAutomatically' => 'Sera borrado automaticamente',
|
||||
'UI:Delete:MustBeDeletedManually' => 'Debe ser borrado manualmente',
|
||||
'UI:Delete:CannotUpdateBecause_Issue' => 'Debe ser actualizado automaticamente, pero: %1$s',
|
||||
'UI:Delete:WillAutomaticallyUpdate_Fields' => 'sera actualizado automaticamente (reset: %1$s)',
|
||||
'UI:Delete:Count_Objects/LinksReferencing_Object' => '%1$d objetos/vinculos estan referenciando %2$s',
|
||||
'UI:Delete:Count_Objects/LinksReferencingTheObjects' => '%1$d objetos/vinculos estan referenciando algunos de los objetos a ser borrados',
|
||||
'UI:Delete:ReferencesMustBeDeletedToEnsureIntegrity' => 'Para asegurar la integridad de la Base de Datos, cualquier referencia debera ser completamente eliminada',
|
||||
'UI:Delete:Consequence+' => 'Lo que se hara',
|
||||
'UI:Delete:SorryDeletionNotAllowed' => 'Disculpe, usted no esta autorizado a eliminar este objeto, vea la explciacion detallada abajo',
|
||||
'UI:Delete:PleaseDoTheManualOperations' => 'Por favor ejecute las operaciones manuales antes de eliminar este objeto',
|
||||
'UI:Delect:Confirm_Object' => 'Por favor confirme que quiere borrar %1$s.',
|
||||
'UI:Delect:Confirm_Count_ObjectsOf_Class' => 'Port favor confirme que quiere eliminar los siguientes %1$d objeto de la clase %2$s.',
|
||||
'UI:WelcomeToITop' => 'Bienvenido a iTop',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s detalles',
|
||||
'UI:Wizard:FinalStepTitle' => 'Final step: confirmation',
|
||||
'UI:Title:DeletionOf_Object' => 'Deletion of %1$s',
|
||||
'UI:Title:BulkDeletionOf_Count_ObjectsOf_Class' => 'Bulk deletion of %1$d objects of class %2$s',
|
||||
'UI:Delete:NotAllowedToDelete' => 'You are not allowed to delete this object',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => 'You are not allowed to update the following field(s): %1$s',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'This object could not be deleted because the current user do not have sufficient rights',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => 'This object could not be deleted because some manual operations must be performed prior to that',
|
||||
'UI:Archive_User_OnBehalfOf_User' => '%1$s on behalf of %2$s',
|
||||
'UI:Delete:AutomaticallyDeleted' => 'automatically deleted',
|
||||
'UI:Delete:AutomaticResetOf_Fields' => 'automatic reset of field(s): %1$s',
|
||||
'UI:Delete:CleaningUpRefencesTo_Object' => 'Cleaning up all references to %1$s...',
|
||||
'UI:Delete:CleaningUpRefencesTo_Several_ObjectsOf_Class' => 'Cleaning up all references to %1$d objects of class %2$s...',
|
||||
'UI:Delete:Done+' => 'What was done...',
|
||||
'UI:Delete:_Name_Class_Deleted' => '%1$s - %2$s deleted.',
|
||||
'UI:Delete:ConfirmDeletionOf_Name' => 'Deletion of %1$s',
|
||||
'UI:Delete:ConfirmDeletionOf_Count_ObjectsOf_Class' => 'Deletion of %1$d objects of class %2$s',
|
||||
'UI:Delete:ShouldBeDeletedAtomaticallyButNotAllowed' => 'Should be automaticaly deleted, but you are not allowed to do so',
|
||||
'UI:Delete:MustBeDeletedManuallyButNotAllowed' => 'Must be deleted manually - but you are not allowed to delete this object, please contact your application admin',
|
||||
'UI:Delete:WillBeDeletedAutomatically' => 'Will be automaticaly deleted',
|
||||
'UI:Delete:MustBeDeletedManually' => 'Must be deleted manually',
|
||||
'UI:Delete:CannotUpdateBecause_Issue' => 'Should be automatically updated, but: %1$s',
|
||||
'UI:Delete:WillAutomaticallyUpdate_Fields' => 'will be automaticaly updated (reset: %1$s)',
|
||||
'UI:Delete:Count_Objects/LinksReferencing_Object' => '%1$d objects/links are referencing %2$s',
|
||||
'UI:Delete:Count_Objects/LinksReferencingTheObjects' => '%1$d objects/links are referencing some of the objects to be deleted',
|
||||
'UI:Delete:ReferencesMustBeDeletedToEnsureIntegrity' => 'To ensure Database integrity, any reference should be further eliminated',
|
||||
'UI:Delete:Consequence+' => 'What will be done',
|
||||
'UI:Delete:SorryDeletionNotAllowed' => 'Sorry, you are not allowed to delete this object, see the detailed explanations above',
|
||||
'UI:Delete:PleaseDoTheManualOperations' => 'Please perform the manual operations listed above prior to requesting the deletion of this object',
|
||||
'UI:Delect:Confirm_Object' => 'Please confirm that you want to delete %1$s.',
|
||||
'UI:Delect:Confirm_Count_ObjectsOf_Class' => 'Please confirm that you want to delete the following %1$d objects of class %2$s.',
|
||||
'UI:WelcomeToITop' => 'Welcome to iTop',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s details',
|
||||
'UI:ErrorPageTitle' => 'iTop - Error',
|
||||
'UI:ObjectDoesNotExist' => 'Disculpe, este objeto no existe (o no esta autorizado para verlo).',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - Resultados de la Busqueda',
|
||||
'UI:Search:NoSearch' => 'Nada para buscar',
|
||||
'UI:FullTextSearchTitle_Text' => 'Resultados para "%1$s":',
|
||||
'UI:Search:Count_ObjectsOf_Class_Found' => '%1$d objeto(s) de la clase %2$s encontrado(s).',
|
||||
'UI:Search:NoObjectFound' => 'No se encontraron objetos.',
|
||||
'UI:ModificationPageTitle_Object_Class' => 'iTop - %1$s - %2$s modificacion',
|
||||
'UI:ModificationTitle_Class_Object' => 'Modificacion de %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - Duplicar %1$s - %2$s modificacion',
|
||||
'UI:CloneTitle_Class_Object' => 'Duplicado de %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Creacion de un nuevo %1$s ',
|
||||
'UI:CreationTitle_Class' => 'Creacion de un nuevo %1$s',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Seleccione el tipo de %1$s a crear:',
|
||||
'UI:Class_Object_NotUpdated' => 'No se detectaron cambios, %1$s (%2$s) <strong>no</strong> fue modificado.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) actualizado.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Eliminar por lote',
|
||||
'UI:BulkDeleteTitle' => 'Seleccione los objetos que desea eliminar:',
|
||||
'UI:PageTitle:ObjectCreated' => 'Objeto de iTop creado.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s creado.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => 'Aplicando %1$s en el objeto: %2$s en estado %3$s al estado deseado: %4$s.',
|
||||
'UI:ObjectCouldNotBeWritten' => 'el objeto no pudo ser escrito: %1$s',
|
||||
'UI:PageTitle:FatalError' => 'iTop - Error Fatal',
|
||||
'UI:FatalErrorMessage' => 'Error fatal, iTop no puede continuar.',
|
||||
'UI:SystemIntrusion' => 'Acceso denegado. Esta tratando de ejecutar una operacion no permitida para usted.',
|
||||
'UI:ObjectDoesNotExist' => 'Sorry, this object does not exist (or you are not allowed to view it).',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - Search Results',
|
||||
'UI:Search:NoSearch' => 'Nothing to search for',
|
||||
'UI:FullTextSearchTitle_Text' => 'Results for "%1$s":',
|
||||
'UI:Search:Count_ObjectsOf_Class_Found' => '%1$d object(s) of class %2$s found.',
|
||||
'UI:Search:NoObjectFound' => 'No object found.',
|
||||
'UI:ModificationPageTitle_Object_Class' => 'iTop - %1$s - %2$s modification',
|
||||
'UI:ModificationTitle_Class_Object' => 'Modification of %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - Clone %1$s - %2$s modification',
|
||||
'UI:CloneTitle_Class_Object' => 'Clone of %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Creation of a new %1$s ',
|
||||
'UI:CreationTitle_Class' => 'Creation of a new %1$s',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Select the type of %1$s to create:',
|
||||
'UI:Class_Object_NotUpdated' => 'No change detected, %1$s (%2$s) has <strong>not</strong> been modified.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) updated.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Bulk Delete',
|
||||
'UI:BulkDeleteTitle' => 'Select the objects you want to delete:',
|
||||
'UI:PageTitle:ObjectCreated' => 'iTop Object Created.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s created.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => 'Applying %1$s on object: %2$s in state %3$s to target state: %4$s.',
|
||||
'UI:ObjectCouldNotBeWritten' => 'The object could not be written: %1$s',
|
||||
'UI:PageTitle:FatalError' => 'iTop - Fatal Error',
|
||||
'UI:FatalErrorMessage' => 'Fatal error, iTop cannot continue.',
|
||||
'UI:SystemIntrusion' => 'Access denied. You have trying to perform an operation that is not allowed for you.',
|
||||
'UI:Error_Details' => 'Error: %1$s.',
|
||||
|
||||
'UI:PageTitle:ClassProjections' => 'Administracion de usuarios iTop - proyecciones de clases',
|
||||
'UI:PageTitle:ProfileProjections' => 'Administracion de usuarios iTop - proyecciones de perfil',
|
||||
'UI:UserManagement:Class' => 'Clase',
|
||||
'UI:UserManagement:Class+' => 'Clase de objetos',
|
||||
'UI:UserManagement:ProjectedObject' => 'Objeto',
|
||||
'UI:UserManagement:ProjectedObject+' => 'Objeto proyectado',
|
||||
'UI:UserManagement:AnyObject' => '* cualquiera *',
|
||||
'UI:UserManagement:User' => 'Usuario',
|
||||
'UI:UserManagement:User+' => 'Usuario implicado en la proyeccion',
|
||||
'UI:UserManagement:Profile' => 'Perfil',
|
||||
'UI:UserManagement:Profile+' => 'Perfil en el cual se especifico la proyeccion',
|
||||
'UI:UserManagement:Action:Read' => 'Leer',
|
||||
'UI:UserManagement:Action:Read+' => 'Leer/Mostrar objetos',
|
||||
'UI:UserManagement:Action:Modify' => 'Modificar',
|
||||
'UI:UserManagement:Action:Modify+' => 'Crear y editar (modificar) objetos',
|
||||
'UI:UserManagement:Action:Delete' => 'Eliminar',
|
||||
'UI:UserManagement:Action:Delete+' => 'Eliminar objetos',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Lectura por lote (Exportar)',
|
||||
'UI:UserManagement:Action:BulkRead+' => 'Listar objetos o exportar masivamente',
|
||||
'UI:UserManagement:Action:BulkModify' => 'Modificacion masiva',
|
||||
'UI:UserManagement:Action:BulkModify+' => 'Crear/Editar masivamente (importar CSV)',
|
||||
'UI:UserManagement:Action:BulkDelete' => 'eliminacion masiva',
|
||||
'UI:UserManagement:Action:BulkDelete+' => 'eliminacion masiva de objetos',
|
||||
'UI:PageTitle:ClassProjections' => 'iTop user management - class projections',
|
||||
'UI:PageTitle:ProfileProjections' => 'iTop user management - profile projections',
|
||||
'UI:UserManagement:Class' => 'Class',
|
||||
'UI:UserManagement:Class+' => 'Class of objects',
|
||||
'UI:UserManagement:ProjectedObject' => 'Object',
|
||||
'UI:UserManagement:ProjectedObject+' => 'Projected object',
|
||||
'UI:UserManagement:AnyObject' => '* any *',
|
||||
'UI:UserManagement:User' => 'User',
|
||||
'UI:UserManagement:User+' => 'User involved in the projection',
|
||||
'UI:UserManagement:Profile' => 'Profile',
|
||||
'UI:UserManagement:Profile+' => 'Profile in which the projection is specified',
|
||||
'UI:UserManagement:Action:Read' => 'Read',
|
||||
'UI:UserManagement:Action:Read+' => 'Read/display objects',
|
||||
'UI:UserManagement:Action:Modify' => 'Modify',
|
||||
'UI:UserManagement:Action:Modify+' => 'Create and edit (modify) objects',
|
||||
'UI:UserManagement:Action:Delete' => 'Delete',
|
||||
'UI:UserManagement:Action:Delete+' => 'Delete objects',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Bulk Read (Export)',
|
||||
'UI:UserManagement:Action:BulkRead+' => 'List objects or export massively',
|
||||
'UI:UserManagement:Action:BulkModify' => 'Bulk Modify',
|
||||
'UI:UserManagement:Action:BulkModify+' => 'Massively create/edit (CSV import)',
|
||||
'UI:UserManagement:Action:BulkDelete' => 'Bulk Delete',
|
||||
'UI:UserManagement:Action:BulkDelete+' => 'Massively delete objects',
|
||||
'UI:UserManagement:Action:Stimuli' => 'Stimuli',
|
||||
'UI:UserManagement:Action:Stimuli+' => 'Acciones (compound) permitidas',
|
||||
'UI:UserManagement:Action' => 'Accion',
|
||||
'UI:UserManagement:Action+' => 'Accion ejecutada por el usuario',
|
||||
'UI:UserManagement:TitleActions' => 'Acciones',
|
||||
'UI:UserManagement:Permission' => 'Permisos',
|
||||
'UI:UserManagement:Permission+' => 'Permisos de usuario',
|
||||
'UI:UserManagement:Attributes' => 'Atributos',
|
||||
'UI:UserManagement:ActionAllowed:Yes' => 'Si',
|
||||
'UI:UserManagement:Action:Stimuli+' => 'Allowed (compound) actions',
|
||||
'UI:UserManagement:Action' => 'Action',
|
||||
'UI:UserManagement:Action+' => 'Action performed by the user',
|
||||
'UI:UserManagement:TitleActions' => 'Actions',
|
||||
'UI:UserManagement:Permission' => 'Permission',
|
||||
'UI:UserManagement:Permission+' => 'User\'s permissions',
|
||||
'UI:UserManagement:Attributes' => 'Attributes',
|
||||
'UI:UserManagement:ActionAllowed:Yes' => 'Yes',
|
||||
'UI:UserManagement:ActionAllowed:No' => 'No',
|
||||
'UI:UserManagement:AdminProfile+' => 'Los administradores tienen acceso total de lectura/escritura para todos los objetos en la base de datos.',
|
||||
'UI:UserManagement:AdminProfile+' => 'Administrators have full read/write access to all objects in the database.',
|
||||
'UI:UserManagement:NoLifeCycleApplicable' => 'N/A',
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => 'No se ha definido ciclo de vida para esta clase',
|
||||
'UI:UserManagement:GrantMatrix' => 'Matriz de acceso',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => 'Vinculo entre %1$s y %2$s',
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => 'No lifecycle has been defined for this class',
|
||||
'UI:UserManagement:GrantMatrix' => 'Grant Matrix',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => 'Link between %1$s and %2$s',
|
||||
|
||||
'Menu:AdminTools' => 'Herramientas Administrativas',
|
||||
'Menu:AdminTools+' => 'Herramientas de administracion',
|
||||
'Menu:AdminTools?' => 'Herramientas accesibles soloa usuariso con perfil de administrador',
|
||||
'Menu:AdminTools' => 'Admin tools',
|
||||
'Menu:AdminTools+' => 'Administration tools',
|
||||
'Menu:AdminTools?' => 'Tools accessible only to users having the administrator profile',
|
||||
|
||||
'UI:ChangeManagementMenu' => 'Control de Cambios',
|
||||
'UI:ChangeManagementMenu+' => 'Control de Cambios',
|
||||
'UI:ChangeManagementMenu:Title' => 'Sumario de cambios',
|
||||
'UI-ChangeManagementMenu-ChangesByType' => 'Cambios por tipo',
|
||||
'UI-ChangeManagementMenu-ChangesByStatus' => 'Cambios por estado',
|
||||
'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'Cambios por grupo de trabajo',
|
||||
'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Cambios no asignados aun',
|
||||
'UI:ChangeManagementMenu' => 'Change Management',
|
||||
'UI:ChangeManagementMenu+' => 'Change Management',
|
||||
'UI:ChangeManagementMenu:Title' => 'Changes Overview',
|
||||
'UI-ChangeManagementMenu-ChangesByType' => 'Changes by type',
|
||||
'UI-ChangeManagementMenu-ChangesByStatus' => 'Changes by status',
|
||||
'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'Changes by workgroup',
|
||||
'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Changes not yet assigned',
|
||||
|
||||
'UI:ConfigurationItemsMenu'=> 'Elementos de configuracion',
|
||||
'UI:ConfigurationItemsMenu+'=> 'Todos los dispositivos',
|
||||
'UI:ConfigurationItemsMenu:Title' => 'Sumario de Elementos de Configuracion',
|
||||
'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Servidores por criticidad',
|
||||
'UI-ConfigurationItemsMenu-PCsByCriticity' => 'PCs por criticidad',
|
||||
'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Dispositivos de red por criticidad',
|
||||
'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Aplicaciones por criticidad',
|
||||
'UI:ConfigurationItemsMenu'=> 'Configuration Items',
|
||||
'UI:ConfigurationItemsMenu+'=> 'All Devices',
|
||||
'UI:ConfigurationItemsMenu:Title' => 'Configuration Items Overview',
|
||||
'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Servers by criticity',
|
||||
'UI-ConfigurationItemsMenu-PCsByCriticity' => 'PCs by criticity',
|
||||
'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Network devices by criticity',
|
||||
'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Applications by criticity',
|
||||
|
||||
'UI:ConfigurationManagementMenu' => 'Gestion de la Configuracion',
|
||||
'UI:ConfigurationManagementMenu+' => 'Gestion de la Configuracion',
|
||||
'UI:ConfigurationManagementMenu:Title' => 'Sumario de Infrastructura',
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => 'Objetos de infrastructura por tipo',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => 'Objetos de infraestructura por estatus',
|
||||
'UI:ConfigurationManagementMenu' => 'Configuration Management',
|
||||
'UI:ConfigurationManagementMenu+' => 'Configuration Management',
|
||||
'UI:ConfigurationManagementMenu:Title' => 'Infrastructure Overview',
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => 'Infrastructure objects by type',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => 'Infrastructure objects by status',
|
||||
|
||||
'UI:ConfigMgmtMenuOverview:Title' => 'Panel de control for Gestion de la Configuracion',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => 'Elementos de la configuracion por estado',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => 'elementos de configuracion por tipo',
|
||||
'UI:ConfigMgmtMenuOverview:Title' => 'Dashboard for Configuration Management',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => 'Configuration Items by status',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => 'Configuration Items by type',
|
||||
|
||||
'UI:RequestMgmtMenuOverview:Title' => 'Panel de control for Gestion de Solicitudes',
|
||||
'UI-RequestManagementOverview-RequestByService' => 'Solicitudes de usuario por servicio',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => 'Solicitudes de usuario por prioridad',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => 'Solicitudes de usuario sin asignar a un agente',
|
||||
'UI:RequestMgmtMenuOverview:Title' => 'Dashboard for Request Management',
|
||||
'UI-RequestManagementOverview-RequestByService' => 'User Requests by service',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => 'User Requests by priority',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => 'User Requests not yet assigned to an agent',
|
||||
|
||||
'UI:IncidentMgmtMenuOverview:Title' => 'Panel de control for Gestion de Incidentes',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => 'Incidentes por servicio',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => 'Incidentes por prioridad',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => 'Incidentes no asignados a un agente',
|
||||
'UI:IncidentMgmtMenuOverview:Title' => 'Dashboard for Incident Management',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => 'Incidents by service',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => 'Incident by priority',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => 'Incidents not yet assigned to an agent',
|
||||
|
||||
'UI:ChangeMgmtMenuOverview:Title' => 'Panel de control for Control de Cambios',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => 'Cambios por tipo',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => 'Cambios no asignados a un agente',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => 'Interrupciones de servicios debida a cambios',
|
||||
'UI:ChangeMgmtMenuOverview:Title' => 'Dashboard for Change Management',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => 'Changes by type',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => 'Changes not yet assigned to an agent',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => 'Outages due to changes',
|
||||
|
||||
'UI:ServiceMgmtMenuOverview:Title' => 'Panel de control for Gestion de Servicios',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => 'Contratos de usuario a ser renovados en 30 dias',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => 'contratos de proveedores a ser renovados en 30 dias',
|
||||
'UI:ServiceMgmtMenuOverview:Title' => 'Dashboard for Service Management',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => 'Customer contracts to be renewed in 30 days',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => 'Provider contracts to be renewed in 30 days',
|
||||
|
||||
'UI:ContactsMenu' => 'Contactos',
|
||||
'UI:ContactsMenu+' => 'Contactos',
|
||||
'UI:ContactsMenu:Title' => 'Sumario de Contactos',
|
||||
'UI-ContactsMenu-ContactsByLocation' => 'Contactos por ubicacion',
|
||||
'UI-ContactsMenu-ContactsByType' => 'Contactos por tipo',
|
||||
'UI-ContactsMenu-ContactsByStatus' => 'Contactos por estado',
|
||||
'UI:ContactsMenu' => 'Contacts',
|
||||
'UI:ContactsMenu+' => 'Contacts',
|
||||
'UI:ContactsMenu:Title' => 'Contacts Overview',
|
||||
'UI-ContactsMenu-ContactsByLocation' => 'Contacts by location',
|
||||
'UI-ContactsMenu-ContactsByType' => 'Contacts by type',
|
||||
'UI-ContactsMenu-ContactsByStatus' => 'Contacts by status',
|
||||
|
||||
'Menu:CSVImportMenu' => 'Importar CSV',
|
||||
'Menu:CSVImportMenu+' => 'Creacion o actualizacion masiva',
|
||||
'Menu:CSVImportMenu' => 'CSV import',
|
||||
'Menu:CSVImportMenu+' => 'Bulk creation or update',
|
||||
|
||||
'Menu:DataModelMenu' => 'Modelo de Datos',
|
||||
'Menu:DataModelMenu+' => 'Sumario del Modelo de Datos',
|
||||
'Menu:DataModelMenu' => 'Data Model',
|
||||
'Menu:DataModelMenu+' => 'Overview of the Data Model',
|
||||
|
||||
'Menu:ExportMenu' => 'Exportar',
|
||||
'Menu:ExportMenu+' => 'Exportar los resultados de cualquier consulta eb HTML, CSV o XML',
|
||||
'Menu:ExportMenu' => 'Export',
|
||||
'Menu:ExportMenu+' => 'Export the results of any query in HTML, CSV or XML',
|
||||
|
||||
'Menu:NotificationsMenu' => 'Notificaciones',
|
||||
'Menu:NotificationsMenu+' => 'Configuracion de las Notificaciones',
|
||||
'UI:NotificationsMenu:Title' => 'Configuracion de las <span class="hilite">Notificaciones</span>',
|
||||
'UI:NotificationsMenu:Help' => 'Ayuda',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>En iTop las notificaciones son completamente personalizables. Estan basadas en dos conjuntos de objetos: <i>Gatuillos y acciones</i>.</p>
|
||||
<p><i><b>Gatillos</b></i> definen cuando una notificacion debe ser ejecutada. existen 3 tipos de gatillos para cubrir las 3 diferentes fases del ciclo de vida de un objeto:
|
||||
'Menu:NotificationsMenu' => 'Notifications',
|
||||
'Menu:NotificationsMenu+' => 'Configuration of the Notifications',
|
||||
'UI:NotificationsMenu:Title' => 'Configuration of the <span class="hilite">Notifications</span>',
|
||||
'UI:NotificationsMenu:Help' => 'Help',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>In iTop the notifications are fully customizable. They are based on two sets of objects: <i>triggers and actions</i>.</p>
|
||||
<p><i><b>Triggers</b></i> define when a notification will be executed. There are 3 types of triggers for covering 3 differents phases of an object life cycle:
|
||||
<ol>
|
||||
<li>los gatillos "OnCreate" son ejecutados cuando un objeto de la clase especificada es creado</li>
|
||||
<li>los gatillos "OnStateEnter" son ejecutados antes de que un determinado objeto entre un estado especificado (viniendo de otro estado)</li>
|
||||
<li>los gatillos "OnStateLeave" son ejecutados cuando un objeto de clase determinada deja un estado especificado</li>
|
||||
<li>the "OnCreate" triggers get executed when an object of the specified class is created</li>
|
||||
<li>the "OnStateEnter" triggers get executed before an object of the given class enters a specified state (coming from another state)</li>
|
||||
<li>the "OnStateLeave" triggers get executed when an object of the given class is leaving a specified state</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>
|
||||
<i><b>Acciones</b></i> definen las acciones a ser ejecutadas cuando los gatillos se disparan, por ahora el unico tipo de accion consiste en enviar un mensaje de correo.
|
||||
Tales acciones tambien definen la plantilla a ser usada para enviar el correo asi como otros parametros del mensaje como receptor, importancia, etc.
|
||||
<i><b>Actions</b></i> define the actions to be performed when the triggers execute. For now there is only one kind of action consisting in sending an email message.
|
||||
Such actions also define the template to be used for sending the email as well as the other parameters of the message like the recipients, importance, etc.
|
||||
</p>
|
||||
<p>Una pagina especial: <a href="../setup/email.test.php" target="_blank">email.test.php</a> esta disponible para pruebar y diagnosticar su configuracion de correo de PHP.</p>
|
||||
<p>Para ser ejecutadas, las acciones deben estar asociadas con los gatillos.
|
||||
Cuando se asocien con un gatillo, cada accion recibe un numero de "orden", esto especifica en que orden se ejecutaran las acciones.</p>',
|
||||
<p>A special page: <a href="../setup/email.test.php" target="_blank">email.test.php</a> is available for testing and troubleshooting your PHP mail configuration.</p>
|
||||
<p>To be executed, actions must be associated to triggers.
|
||||
When associated with a trigger, each action is given an "order" number, specifying in which order the actions are to be executed.</p>',
|
||||
'UI:NotificationsMenu:Triggers' => 'Disparadores',
|
||||
'UI:NotificationsMenu:AvailableTriggers' => 'Disparadores disponibles',
|
||||
'UI:NotificationsMenu:AvailableTriggers' => 'Disparadores disponiblesAvailable triggers',
|
||||
'UI:NotificationsMenu:OnCreate' => 'cuando un objeto es creado',
|
||||
'UI:NotificationsMenu:OnStateEnter' => 'Cuando un objeto entra a un estado específico',
|
||||
'UI:NotificationsMenu:OnStateLeave' => 'Cuando un objeto sale de un estado específico',
|
||||
@@ -827,7 +823,7 @@ Cuando se asocien con un gatillo, cada accion recibe un numero de "orden", esto
|
||||
'Menu:UserAccountsMenu:Title' => 'Cuentas de usuario',
|
||||
|
||||
'UI:iTopVersion:Short' => 'iTop versión %1$s',
|
||||
'UI:iTopVersion:Long' => 'iTop versión %1$s-%2$s compilada en %3$s',
|
||||
'UI:iTopVersion:Long' => 'iTop versión %1$s-%2$s built on %3$s',
|
||||
'UI:PropertiesTab' => 'Propiedades',
|
||||
|
||||
'UI:OpenDocumentInNewWindow_' => 'Abra este documento en una ventana nueva: %1$s',
|
||||
@@ -840,9 +836,9 @@ Cuando se asocien con un gatillo, cada accion recibe un numero de "orden", esto
|
||||
'UI:Deadline_Hours_Minutes' => '%1$dh %2$dmin',
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$dd %2$dh %3$dmin',
|
||||
'UI:Help' => 'Ayuda',
|
||||
'UI:PasswordConfirm' => '(Confirmar)',
|
||||
'UI:PasswordConfirm' => '(Confirm)',
|
||||
|
||||
'Enum:Undefined' => 'Indefinido',
|
||||
'Enum:Undefined' => 'Undefined',
|
||||
));
|
||||
|
||||
?>
|
||||
|
||||
@@ -24,102 +24,6 @@
|
||||
*/
|
||||
|
||||
|
||||
Dict::Add('FR FR', 'English', 'English', array(
|
||||
'Core:AttributeLinkedSet' => 'Objets liés (1-n)',
|
||||
'Core:AttributeLinkedSet+' => 'Liste d\'objets d\'une classe donnée et pointant sur l\'objet courant',
|
||||
|
||||
'Core:AttributeLinkedSetIndirect' => 'Objets liés (1-n)',
|
||||
'Core:AttributeLinkedSetIndirect+' => 'Liste d\'objets d\'une classe donnée et liés à l\'objet courant via une classe intermédiaire',
|
||||
|
||||
'Core:AttributeInteger' => 'Nombre entier',
|
||||
'Core:AttributeInteger+' => 'Valeur numérique entière',
|
||||
|
||||
'Core:AttributeDecimal' => 'Nombre décimal',
|
||||
'Core:AttributeDecimal+' => 'Valeur numérique décimale',
|
||||
|
||||
'Core:AttributeBoolean' => 'Booléen',
|
||||
'Core:AttributeBoolean+' => 'Booléen',
|
||||
|
||||
'Core:AttributeString' => 'Chaîne de caractères',
|
||||
'Core:AttributeString+' => 'Chaîne de caractères (limitée à une ligne)',
|
||||
|
||||
'Core:AttributeClass' => 'Classe',
|
||||
'Core:AttributeClass+' => 'Classe d\'objets',
|
||||
|
||||
'Core:AttributeApplicationLanguage' => 'Langue',
|
||||
'Core:AttributeApplicationLanguage+' => 'Codes langue et pays (EN US)',
|
||||
|
||||
'Core:AttributeFinalClass' => 'Classe',
|
||||
'Core:AttributeFinalClass+' => 'Classe réelle de l\'objet (attribut créé automatiquement)',
|
||||
|
||||
'Core:AttributePassword' => 'Mot de passe',
|
||||
'Core:AttributePassword+' => 'Mot de passe qui peut être lu en clair',
|
||||
|
||||
'Core:AttributeEncryptedString' => 'Chaîne encryptée',
|
||||
'Core:AttributeEncryptedString+' => 'Chaîne encryptée avec une clé locale',
|
||||
|
||||
'Core:AttributeText' => 'Texte',
|
||||
'Core:AttributeText+' => 'Chaîne de caractères de plusieurs lignes',
|
||||
|
||||
'Core:AttributeHTML' => 'HTML',
|
||||
'Core:AttributeHTML+' => 'Texte formatté en HTML',
|
||||
|
||||
'Core:AttributeEmailAddress' => 'Adresse électronique',
|
||||
'Core:AttributeEmailAddress+' => 'Adresse électronique (xxxx@yyy.zzz)',
|
||||
|
||||
'Core:AttributeIPAddress' => 'Adresse IP',
|
||||
'Core:AttributeIPAddress+' => 'Adresse IP',
|
||||
|
||||
'Core:AttributeOQL' => 'Expression OQL',
|
||||
'Core:AttributeOQL+' => 'Expression formattée en "Object Query Language"',
|
||||
|
||||
'Core:AttributeEnum' => 'Enumération',
|
||||
'Core:AttributeEnum+' => 'Valeur choisie parmi un liste de chaîne de caractères',
|
||||
|
||||
'Core:AttributeTemplateString' => 'Modèle de chaîne de caractères',
|
||||
'Core:AttributeTemplateString+' => 'Chaîne de caractères d\'une ligne, contenant des espaces réservés pour des données iTop',
|
||||
|
||||
'Core:AttributeTemplateText' => 'Modèle de texte',
|
||||
'Core:AttributeTemplateText+' => 'Texte contenant des espaces réservés pour des données iTop',
|
||||
|
||||
'Core:AttributeTemplateHTML' => 'Modèle HTML',
|
||||
'Core:AttributeTemplateHTML+' => 'HTML contenant des espaces réservés pour des données iTop',
|
||||
|
||||
'Core:AttributeWikiText' => 'Article Wiki',
|
||||
'Core:AttributeWikiText+' => 'Texte formatté en Wiki',
|
||||
|
||||
'Core:AttributeDateTime' => 'Date/heure',
|
||||
'Core:AttributeDateTime+' => 'Date et heure (année-mois-jour hh:mm:ss)',
|
||||
|
||||
'Core:AttributeDate' => 'Date',
|
||||
'Core:AttributeDate+' => 'Date (année-mois-jour)',
|
||||
|
||||
'Core:AttributeDeadline' => 'Délai',
|
||||
'Core:AttributeDeadline+' => 'Date/heure exprimée relativement à l\'heure courante',
|
||||
|
||||
'Core:AttributeExternalKey' => 'Clé externe',
|
||||
'Core:AttributeExternalKey+' => 'Clé externe',
|
||||
|
||||
'Core:AttributeExternalField' => 'Attribut externe',
|
||||
'Core:AttributeExternalField+' => 'Copie de la valeur d\'un attribut de l\'objet lié par une clé externe',
|
||||
|
||||
'Core:AttributeURL' => 'URL',
|
||||
'Core:AttributeURL+' => 'URL absolue ou relative',
|
||||
|
||||
'Core:AttributeBlob' => 'Blob',
|
||||
'Core:AttributeBlob+' => 'Contenu binaire (document)',
|
||||
|
||||
'Core:AttributeOneWayPassword' => 'Mot de passe "one way"',
|
||||
'Core:AttributeOneWayPassword+' => 'Mot de passe qui peut être vérifié mais jamais lu en clair',
|
||||
|
||||
'Core:AttributeTable' => 'Table',
|
||||
'Core:AttributeTable+' => 'Tableau à deux dimensions',
|
||||
|
||||
'Core:AttributePropertySet' => 'Propriétés',
|
||||
'Core:AttributePropertySet+' => 'Liste de propriétés (nom et valeur) non typées',
|
||||
));
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -204,7 +108,6 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'Change:ObjectCreated' => 'Elément créé',
|
||||
'Change:ObjectDeleted' => 'Elément effacé',
|
||||
'Change:ObjectModified' => 'Elément modifié',
|
||||
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$s modifié en %2$s (ancienne valeur: %3$s)',
|
||||
'Change:Text_AppendedTo_AttName' => '%1$s ajouté à %2$s',
|
||||
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$s modifié, ancienne valeur: %2$s',
|
||||
|
||||
@@ -338,7 +338,6 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'UI:Button:Cancel' => 'Annuler',
|
||||
'UI:Button:Apply' => 'Appliquer',
|
||||
'UI:Button:Back' => ' << Retour ',
|
||||
'UI:Button:Restart' => ' |<< Recommencer ',
|
||||
'UI:Button:Next' => ' Suite >> ',
|
||||
'UI:Button:Finish' => ' Terminer ',
|
||||
'UI:Button:DoImport' => ' Lancer l\'import ! ',
|
||||
@@ -400,21 +399,12 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'UI:History:LastModified_On_By' => 'Dernière modification par %2$s le %1$s.',
|
||||
'UI:HistoryTab' => 'Historique',
|
||||
'UI:NotificationsTab' => 'Notifications',
|
||||
'UI:History:BulkImports' => 'Historique',
|
||||
'UI:History:BulkImports+' => 'Liste des imports CSV (le dernier est en haut de la liste)',
|
||||
'UI:History:BulkImportDetails' => 'Changements résultant de l\'import CSV du %1$s (auteur: %2$s)',
|
||||
'UI:History:Date' => 'Date',
|
||||
'UI:History:Date+' => 'Date de modification',
|
||||
'UI:History:User' => 'Utilisateur',
|
||||
'UI:History:User+' => 'Utilisateur qui a fait la modification',
|
||||
'UI:History:Changes' => 'Changements',
|
||||
'UI:History:Changes+' => 'Changements sur cet objet',
|
||||
'UI:History:StatsCreations' => 'Créés',
|
||||
'UI:History:StatsCreations+' => 'Nombre d\'objets créés',
|
||||
'UI:History:StatsModifs' => 'Modifiés',
|
||||
'UI:History:StatsModifs+' => 'Nombre d\'objets modifiés',
|
||||
'UI:History:StatsDeletes' => 'Effacés',
|
||||
'UI:History:StatsDeletes+' => 'Nombre d\'objets effacés',
|
||||
'UI:Loading' => 'Chargement...',
|
||||
'UI:Menu:Actions' => 'Actions',
|
||||
'UI:Menu:New' => 'Créer...',
|
||||
@@ -457,8 +447,6 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'UI:LogOff:ThankYou' => 'Merci d\'avoir utilisé iTop',
|
||||
'UI:LogOff:ClickHereToLoginAgain' => 'Cliquez ici pour vous reconnecter...',
|
||||
'UI:ChangePwdMenu' => 'Changer de mot de passe...',
|
||||
'UI:AccessRO-All' => 'iTop est en lecture seule',
|
||||
'UI:AccessRO-Users' => 'iTop est en lecture seule pour les utilisateurs finaux',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'Les deux saisies du nouveau mot de passe ne sont pas identiques !',
|
||||
'UI:Button:Login' => 'Entrer dans iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'L\'accès à iTop est soumis à autorisation. Merci de contacter votre administrateur iTop.',
|
||||
@@ -474,7 +462,6 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
||||
'UI:CSVImport:idField' => 'id (Clef primaire)',
|
||||
'UI:Title:BulkImport' => 'iTop - Import massif',
|
||||
'UI:Title:BulkImport+' => 'Assistant d\'import CSV',
|
||||
'UI:Title:BulkSynchro_nbItem_ofClass_class' => 'Synchronisation de %1$d éléments de type %2$s',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- choisir une valeur --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'Erreur interne: "%1$s" n\'est pas une code correct car "%2$s" n\'est pas une clef externe de la classe "%3$s"',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d objets(s) resteront inchangés.',
|
||||
@@ -864,7 +851,6 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé
|
||||
'UI:DisplayThisMessageAtStartup' => 'Afficher ce message au démarrage',
|
||||
'UI:RelationshipGraph' => 'Vue graphique',
|
||||
'UI:RelationshipList' => 'Liste',
|
||||
'UI:OperationCancelled' => 'Opération Annulée',
|
||||
|
||||
'Portal:Title' => 'Portail utilisateur iTop',
|
||||
'Portal:Refresh' => 'Rafraîchir',
|
||||
@@ -884,10 +870,6 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé
|
||||
'Portal:Button:CloseTicket' => 'Clôre cette requête',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'Vos commentaires à propos du traitement de cette requête:',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Erreur: l\'utilisateur courant n\'est pas associé à une Personne/Contact. Contactez votre administrateur.',
|
||||
'Portal:Attachments' => 'Pièces jointes',
|
||||
'Portal:AddAttachment' => ' Ajouter une pièce jointe ',
|
||||
'Portal:RemoveAttachment' => ' Enlever la pièce jointe ',
|
||||
'Portal:Attachment_No_To_Ticket_Name' => 'Pièce jointe #%1$d à %2$s (%3$s)',
|
||||
|
||||
'Enum:Undefined' => 'Non défini',
|
||||
));
|
||||
|
||||
@@ -24,102 +24,6 @@
|
||||
*/
|
||||
|
||||
|
||||
Dict::Add('PT BR', 'English', 'English', array(
|
||||
'Core:AttributeLinkedSet' => 'Array of objects',
|
||||
'Core:AttributeLinkedSet+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeLinkedSetIndirect' => 'Array of objects (N-N)',
|
||||
'Core:AttributeLinkedSetIndirect+' => 'Any kind of objects [subclass] of the same class',
|
||||
|
||||
'Core:AttributeInteger' => 'Integer',
|
||||
'Core:AttributeInteger+' => 'Numeric value (could be negative)',
|
||||
|
||||
'Core:AttributeDecimal' => 'Decimal',
|
||||
'Core:AttributeDecimal+' => 'Decimal value (could be negative)',
|
||||
|
||||
'Core:AttributeBoolean' => 'Boolean',
|
||||
'Core:AttributeBoolean+' => 'Boolean',
|
||||
|
||||
'Core:AttributeString' => 'String',
|
||||
'Core:AttributeString+' => 'Alphanumeric string',
|
||||
|
||||
'Core:AttributeClass' => 'Class',
|
||||
'Core:AttributeClass+' => 'Class',
|
||||
|
||||
'Core:AttributeApplicationLanguage' => 'User language',
|
||||
'Core:AttributeApplicationLanguage+' => 'Language and country (EN US)',
|
||||
|
||||
'Core:AttributeFinalClass' => 'Class (auto)',
|
||||
'Core:AttributeFinalClass+' => 'Real class of the object (automatically created by the core)',
|
||||
|
||||
'Core:AttributePassword' => 'Password',
|
||||
'Core:AttributePassword+' => 'Password of an external device',
|
||||
|
||||
'Core:AttributeEncryptedString' => 'Encrypted string',
|
||||
'Core:AttributeEncryptedString+' => 'String encrypted with a local key',
|
||||
|
||||
'Core:AttributeText' => 'Text',
|
||||
'Core:AttributeText+' => 'Multiline character string',
|
||||
|
||||
'Core:AttributeHTML' => 'HTML',
|
||||
'Core:AttributeHTML+' => 'HTML string',
|
||||
|
||||
'Core:AttributeEmailAddress' => 'Email address',
|
||||
'Core:AttributeEmailAddress+' => 'Email address',
|
||||
|
||||
'Core:AttributeIPAddress' => 'IP address',
|
||||
'Core:AttributeIPAddress+' => 'IP address',
|
||||
|
||||
'Core:AttributeOQL' => 'OQL',
|
||||
'Core:AttributeOQL+' => 'Object Query Langage expression',
|
||||
|
||||
'Core:AttributeEnum' => 'Enum',
|
||||
'Core:AttributeEnum+' => 'List of predefined alphanumeric strings',
|
||||
|
||||
'Core:AttributeTemplateString' => 'Template string',
|
||||
'Core:AttributeTemplateString+' => 'String containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateText' => 'Template text',
|
||||
'Core:AttributeTemplateText+' => 'Text containing placeholders',
|
||||
|
||||
'Core:AttributeTemplateHTML' => 'Template HTML',
|
||||
'Core:AttributeTemplateHTML+' => 'HTML containing placeholders',
|
||||
|
||||
'Core:AttributeWikiText' => 'Wiki article',
|
||||
'Core:AttributeWikiText+' => 'Wiki formatted text',
|
||||
|
||||
'Core:AttributeDateTime' => 'Date/time',
|
||||
'Core:AttributeDateTime+' => 'Date and time (year-month-day hh:mm:ss)',
|
||||
|
||||
'Core:AttributeDate' => 'Date',
|
||||
'Core:AttributeDate+' => 'Date (year-month-day)',
|
||||
|
||||
'Core:AttributeDeadline' => 'Deadline',
|
||||
'Core:AttributeDeadline+' => 'Date, displayed relatively to the current time',
|
||||
|
||||
'Core:AttributeExternalKey' => 'External key',
|
||||
'Core:AttributeExternalKey+' => 'External (or foreign) key',
|
||||
|
||||
'Core:AttributeExternalField' => 'External field',
|
||||
'Core:AttributeExternalField+' => 'Field mapped from an external key',
|
||||
|
||||
'Core:AttributeURL' => 'URL',
|
||||
'Core:AttributeURL+' => 'Absolute or relative URL as a text string',
|
||||
|
||||
'Core:AttributeBlob' => 'Blob',
|
||||
'Core:AttributeBlob+' => 'Any binary content (document)',
|
||||
|
||||
'Core:AttributeOneWayPassword' => 'One way password',
|
||||
'Core:AttributeOneWayPassword+' => 'One way encrypted (hashed) password',
|
||||
|
||||
'Core:AttributeTable' => 'Table',
|
||||
'Core:AttributeTable+' => 'Indexed array having two dimensions',
|
||||
|
||||
'Core:AttributePropertySet' => 'Properties',
|
||||
'Core:AttributePropertySet+' => 'List of untyped properties (name and value)',
|
||||
));
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -408,19 +408,12 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'UI:NoObject_Class_ToDisplay' => 'Nenhum %1$s para mostrar',
|
||||
'UI:History:LastModified_On_By' => 'Ultima modificacao de %1$s por %2$s.',
|
||||
'UI:HistoryTab' => 'Historico',
|
||||
'UI:History:BulkImports' => 'History',
|
||||
'UI:History:BulkImports+' => 'List of CSV imports (last first)',
|
||||
'UI:History:BulkImportDetails' => 'Changes resulting from the CSV import performed on %1$s (by %2$s)',
|
||||
'UI:History:Date' => 'Data',
|
||||
'UI:History:Date+' => 'Data da alteração',
|
||||
'UI:History:User' => 'Usuario',
|
||||
'UI:History:User+' => 'Usuario que fez alteração',
|
||||
'UI:History:Changes' => 'Alterações',
|
||||
'UI:History:Changes+' => 'Alterações feita no objeto',
|
||||
'UI:History:StatsModifs' => 'Modified',
|
||||
'UI:History:StatsModifs+' => 'Count of objects modified',
|
||||
'UI:History:StatsDeletes' => 'Deleted',
|
||||
'UI:History:StatsDeletes+' => 'Count of objects deleted',
|
||||
'UI:Loading' => 'Carregando...',
|
||||
'UI:Menu:Actions' => 'Ações',
|
||||
'UI:Menu:New' => 'Novo...',
|
||||
@@ -460,8 +453,6 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array(
|
||||
'UI:Login:IncorrectOldPassword' => 'Erro: senha incorreta',
|
||||
'UI:LogOffMenu' => 'Sair',
|
||||
'UI:ChangePwdMenu' => 'Alterar senha...',
|
||||
'UI:AccessRO-All' => 'iTop is read-only',
|
||||
'UI:AccessRO-Users' => 'iTop is read-only for end-users',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'A nova senha nao confere!',
|
||||
'UI:Button:Login' => 'Enter iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'iTop accesso restrito. Por favor, contate o suporte.',
|
||||
|
||||
@@ -1,385 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Vladimir Shilov <shilow@ukr.net>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: CMDBChange
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChange' => 'Изменение',
|
||||
'Class:CMDBChange+' => 'Отслеживание изменений',
|
||||
'Class:CMDBChange/Attribute:date' => 'дата',
|
||||
'Class:CMDBChange/Attribute:date+' => 'дата и время регистрации изменений',
|
||||
'Class:CMDBChange/Attribute:userinfo' => 'разная информация',
|
||||
'Class:CMDBChange/Attribute:userinfo+' => 'изменение определённые -вызвавшим-',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOp
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOp' => 'Операция изменения',
|
||||
'Class:CMDBChangeOp+' => 'Отслеживание операции изменения',
|
||||
'Class:CMDBChangeOp/Attribute:change' => 'изменение',
|
||||
'Class:CMDBChangeOp/Attribute:change+' => 'изменение',
|
||||
'Class:CMDBChangeOp/Attribute:date' => 'дата',
|
||||
'Class:CMDBChangeOp/Attribute:date+' => 'дата и время изменения',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo' => 'пользователь',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo+' => 'кто сделал изменение',
|
||||
'Class:CMDBChangeOp/Attribute:objclass' => 'класс объекта',
|
||||
'Class:CMDBChangeOp/Attribute:objclass+' => 'класс объекта',
|
||||
'Class:CMDBChangeOp/Attribute:objkey' => 'id объекта',
|
||||
'Class:CMDBChangeOp/Attribute:objkey+' => 'id объекта',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass' => 'тип',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpCreate
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOpCreate' => 'создание объекта',
|
||||
'Class:CMDBChangeOpCreate+' => 'Отслеживание создания объекта',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpDelete
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOpDelete' => 'удаление объекта',
|
||||
'Class:CMDBChangeOpDelete+' => 'Отслеживание удаления объекта',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttribute
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOpSetAttribute' => 'изменение объекта',
|
||||
'Class:CMDBChangeOpSetAttribute+' => 'Отслеживание изменения объекта',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode' => 'Атрибут',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode+' => 'код изменённого свойства',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeScalar
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOpSetAttributeScalar' => 'изменение свойства',
|
||||
'Class:CMDBChangeOpSetAttributeScalar+' => 'Отслеживание изменения скалярного свойства объекта',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue' => 'Предыдущее значение',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue+' => 'предыдущее значение атрибута',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue' => 'Новое значение',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue+' => 'новое значение атрибута',
|
||||
));
|
||||
// Used by CMDBChangeOp... & derived classes
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Change:ObjectCreated' => 'Объект создан',
|
||||
'Change:ObjectDeleted' => 'Объект удалён',
|
||||
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$s установлено в %2$s (предыдущее значение: %3$s)',
|
||||
'Change:Text_AppendedTo_AttName' => '%1$s добавлено к %2$s',
|
||||
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$s изменено, предыдущее значение: %2$s',
|
||||
'Change:AttName_Changed' => '%1$s изменено',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeBlob
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOpSetAttributeBlob' => 'изменение данных',
|
||||
'Class:CMDBChangeOpSetAttributeBlob+' => 'отслеживание изменения данных',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => 'Предыдущие данные',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => 'предыдущее содержимое атрибута',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeText
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:CMDBChangeOpSetAttributeText' => 'изменение текста',
|
||||
'Class:CMDBChangeOpSetAttributeText+' => 'отслеживание изменения текста',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => 'Предыдущие данные',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => 'предыдущее содержимое атрибута',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Event
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:Event' => 'Журнал событий',
|
||||
'Class:Event+' => 'Внутренние событие приложения',
|
||||
'Class:Event/Attribute:message' => 'сообщение',
|
||||
'Class:Event/Attribute:message+' => 'короткое описание собітия',
|
||||
'Class:Event/Attribute:date' => 'дата',
|
||||
'Class:Event/Attribute:date+' => 'дата и время регистрации изменений',
|
||||
'Class:Event/Attribute:userinfo' => 'информация о пользователе',
|
||||
'Class:Event/Attribute:userinfo+' => 'идентификация пользователя, действия которого вызвали это событие',
|
||||
'Class:Event/Attribute:finalclass' => 'тип',
|
||||
'Class:Event/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotification
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:EventNotification' => 'Уведомление о событии',
|
||||
'Class:EventNotification+' => 'Отслеживание отосланных уведомлений',
|
||||
'Class:EventNotification/Attribute:trigger_id' => 'Триггер',
|
||||
'Class:EventNotification/Attribute:trigger_id+' => 'учётная запись пользователя',
|
||||
'Class:EventNotification/Attribute:action_id' => 'пользователь',
|
||||
'Class:EventNotification/Attribute:action_id+' => 'учётная запись пользователя',
|
||||
'Class:EventNotification/Attribute:object_id' => 'id объекта',
|
||||
'Class:EventNotification/Attribute:object_id+' => 'id объекта (класс заданный тригером ?)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotificationEmail
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:EventNotificationEmail' => 'Отправка сообщений на e-mail',
|
||||
'Class:EventNotificationEmail+' => 'Отслеживание отправленных писем',
|
||||
'Class:EventNotificationEmail/Attribute:to' => 'Кому',
|
||||
'Class:EventNotificationEmail/Attribute:to+' => 'Кому',
|
||||
'Class:EventNotificationEmail/Attribute:cc' => 'Копия',
|
||||
'Class:EventNotificationEmail/Attribute:cc+' => 'Копия',
|
||||
'Class:EventNotificationEmail/Attribute:bcc' => 'Скрытая копия',
|
||||
'Class:EventNotificationEmail/Attribute:bcc+' => 'Скрытая копия',
|
||||
'Class:EventNotificationEmail/Attribute:from' => 'От',
|
||||
'Class:EventNotificationEmail/Attribute:from+' => 'Отправитель сообщения',
|
||||
'Class:EventNotificationEmail/Attribute:subject' => 'Тема',
|
||||
'Class:EventNotificationEmail/Attribute:subject+' => 'Тема',
|
||||
'Class:EventNotificationEmail/Attribute:body' => 'Тело',
|
||||
'Class:EventNotificationEmail/Attribute:body+' => 'Тело',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventIssue
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:EventIssue' => 'Выпуск события',
|
||||
'Class:EventIssue+' => 'Отслеживание выпуска (warning, error, др.)',
|
||||
'Class:EventIssue/Attribute:issue' => 'Выпуск',
|
||||
'Class:EventIssue/Attribute:issue+' => 'Что произошло',
|
||||
'Class:EventIssue/Attribute:impact' => 'Воздействие',
|
||||
'Class:EventIssue/Attribute:impact+' => 'Последствия',
|
||||
'Class:EventIssue/Attribute:page' => 'Страница',
|
||||
'Class:EventIssue/Attribute:page+' => 'Точка входа HTTP',
|
||||
'Class:EventIssue/Attribute:arguments_post' => 'Отправленные аргументы',
|
||||
'Class:EventIssue/Attribute:arguments_post+' => 'Аргументы HTTP POST',
|
||||
'Class:EventIssue/Attribute:arguments_get' => 'Аргументы URL',
|
||||
'Class:EventIssue/Attribute:arguments_get+' => 'Аргументы HTTP GET',
|
||||
'Class:EventIssue/Attribute:callstack' => 'Стек?вызовов',
|
||||
'Class:EventIssue/Attribute:callstack+' => 'Стек вызовов',
|
||||
'Class:EventIssue/Attribute:data' => 'Данные',
|
||||
'Class:EventIssue/Attribute:data+' => 'Подробнее',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventWebService
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:EventWebService' => 'События Web сервиса',
|
||||
'Class:EventWebService+' => 'Trace of an web service call',
|
||||
'Class:EventWebService/Attribute:verb' => 'Verb',
|
||||
'Class:EventWebService/Attribute:verb+' => 'Название операции',
|
||||
'Class:EventWebService/Attribute:result' => 'Результат',
|
||||
'Class:EventWebService/Attribute:result+' => 'Overall success/failure',
|
||||
'Class:EventWebService/Attribute:log_info' => 'Info log',
|
||||
'Class:EventWebService/Attribute:log_info+' => 'Result info log',
|
||||
'Class:EventWebService/Attribute:log_warning' => 'Warning log',
|
||||
'Class:EventWebService/Attribute:log_warning+' => 'Result warning log',
|
||||
'Class:EventWebService/Attribute:log_error' => 'Error log',
|
||||
'Class:EventWebService/Attribute:log_error+' => 'Result error log',
|
||||
'Class:EventWebService/Attribute:data' => 'Данные',
|
||||
'Class:EventWebService/Attribute:data+' => 'Result data',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Action
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:Action' => 'Заказное действие',
|
||||
'Class:Action+' => 'Действие определённое пользователем',
|
||||
'Class:Action/Attribute:name' => 'Имя',
|
||||
'Class:Action/Attribute:name+' => '',
|
||||
'Class:Action/Attribute:description' => 'Описание',
|
||||
'Class:Action/Attribute:description+' => '',
|
||||
'Class:Action/Attribute:status' => 'Статус',
|
||||
'Class:Action/Attribute:status+' => 'В производстве или ?',
|
||||
'Class:Action/Attribute:status/Value:test' => 'Проходит проверку',
|
||||
'Class:Action/Attribute:status/Value:test+' => 'Проходит проверку',
|
||||
'Class:Action/Attribute:status/Value:enabled' => 'В производстве',
|
||||
'Class:Action/Attribute:status/Value:enabled+' => 'В производстве',
|
||||
'Class:Action/Attribute:status/Value:disabled' => 'Неактивный',
|
||||
'Class:Action/Attribute:status/Value:disabled+' => 'Неактивный',
|
||||
'Class:Action/Attribute:trigger_list' => 'Связанные триггеры',
|
||||
'Class:Action/Attribute:trigger_list+' => 'Триггеры привызанные к этому действию',
|
||||
'Class:Action/Attribute:finalclass' => 'Тип',
|
||||
'Class:Action/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionNotification
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:ActionNotification' => 'Уведомление',
|
||||
'Class:ActionNotification+' => 'Уведомление (выдержка)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionEmail
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:ActionEmail' => 'Уведомление по e-mail',
|
||||
'Class:ActionEmail+' => '',
|
||||
'Class:ActionEmail/Attribute:test_recipient' => 'Проверка получателя',
|
||||
'Class:ActionEmail/Attribute:test_recipient+' => 'Назначение если статус "Test"',
|
||||
'Class:ActionEmail/Attribute:from' => 'От',
|
||||
'Class:ActionEmail/Attribute:from+' => 'Будет отослано в заголовке e-mail',
|
||||
'Class:ActionEmail/Attribute:reply_to' => 'Ответить на',
|
||||
'Class:ActionEmail/Attribute:reply_to+' => 'Будет отослано в заголовке e-mail',
|
||||
'Class:ActionEmail/Attribute:to' => 'Кому',
|
||||
'Class:ActionEmail/Attribute:to+' => 'Получатель e-mail',
|
||||
'Class:ActionEmail/Attribute:cc' => 'Копия',
|
||||
'Class:ActionEmail/Attribute:cc+' => 'Копия',
|
||||
'Class:ActionEmail/Attribute:bcc' => 'Скр. копия',
|
||||
'Class:ActionEmail/Attribute:bcc+' => 'Скрытая копия',
|
||||
'Class:ActionEmail/Attribute:subject' => 'тема',
|
||||
'Class:ActionEmail/Attribute:subject+' => 'Заголовок письма',
|
||||
'Class:ActionEmail/Attribute:body' => 'тело',
|
||||
'Class:ActionEmail/Attribute:body+' => 'Содержимое письма',
|
||||
'Class:ActionEmail/Attribute:importance' => 'значение',
|
||||
'Class:ActionEmail/Attribute:importance+' => 'Флаг значения',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low' => 'низкий',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low+' => 'низкий',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal' => 'нормальный',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal+' => 'нормальный',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high' => 'высокий',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high+' => 'высокий',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Trigger
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:Trigger' => 'Триггер',
|
||||
'Class:Trigger+' => 'Заказной триггер события',
|
||||
'Class:Trigger/Attribute:description' => 'Описание',
|
||||
'Class:Trigger/Attribute:description+' => 'однострочное описание',
|
||||
'Class:Trigger/Attribute:action_list' => 'Действия триггера',
|
||||
'Class:Trigger/Attribute:action_list+' => 'Действия, выполняемые при активации триггера',
|
||||
'Class:Trigger/Attribute:finalclass' => 'Тип',
|
||||
'Class:Trigger/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObject
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:TriggerOnObject' => 'Триггер (в зависимости класс)',
|
||||
'Class:TriggerOnObject+' => 'Триггер по даному классу объектов',
|
||||
'Class:TriggerOnObject/Attribute:target_class' => 'Целевой класс',
|
||||
'Class:TriggerOnObject/Attribute:target_class+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateChange
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:TriggerOnStateChange' => 'Триггер (на изменение состояния)',
|
||||
'Class:TriggerOnStateChange+' => 'Триггер на изменение состояния объекта',
|
||||
'Class:TriggerOnStateChange/Attribute:state' => 'Статус',
|
||||
'Class:TriggerOnStateChange/Attribute:state+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateEnter
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:TriggerOnStateEnter' => 'Триггер (на начало состояния)',
|
||||
'Class:TriggerOnStateEnter+' => 'Триггер на изменению состояния объекта - начало',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateLeave
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:TriggerOnStateLeave' => 'Триггер (на окончание состояния)',
|
||||
'Class:TriggerOnStateLeave+' => 'Триггер на изменению состояния объекта - окончание',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObjectCreate
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:TriggerOnObjectCreate' => 'Триггер (на создание объекта)',
|
||||
'Class:TriggerOnObjectCreate+' => 'Триггер на создание объекта [дочерний класс] данного класса',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTriggerAction
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:lnkTriggerAction' => 'Действие/Триггер',
|
||||
'Class:lnkTriggerAction+' => 'Связь между триггером и действий',
|
||||
'Class:lnkTriggerAction/Attribute:action_id' => 'Действие',
|
||||
'Class:lnkTriggerAction/Attribute:action_id+' => 'Выполняемое действие',
|
||||
'Class:lnkTriggerAction/Attribute:action_name' => 'Действие',
|
||||
'Class:lnkTriggerAction/Attribute:action_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id' => 'Триггер',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name' => 'Триггер',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:order' => 'Порядок',
|
||||
'Class:lnkTriggerAction/Attribute:order+' => 'Порядок выполнения действий',
|
||||
));
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,870 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Vladimir Shilov <shilow@ukr.net>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'gui'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'application'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: AuditCategory
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:AuditCategory' => 'Категория аудита',
|
||||
'Class:AuditCategory+' => 'Раздел внутри общего аудита',
|
||||
'Class:AuditCategory/Attribute:name' => 'Название категории',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Краткое название для этой категории',
|
||||
'Class:AuditCategory/Attribute:description' => 'Описание категории аудита',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Полное описание категории аудита',
|
||||
'Class:AuditCategory/Attribute:definition_set' => 'Набор определений',
|
||||
'Class:AuditCategory/Attribute:definition_set+' => 'OQL выражение, определяющее набор объектов для проверки',
|
||||
'Class:AuditCategory/Attribute:rules_list' => 'Правила аудита',
|
||||
'Class:AuditCategory/Attribute:rules_list+' => 'Правила аудита для этой категории',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: AuditRule
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:AuditRule' => 'Правило аудита',
|
||||
'Class:AuditRule+' => 'Правило для проверки данной категории аудита',
|
||||
'Class:AuditRule/Attribute:name' => 'Название правила',
|
||||
'Class:AuditRule/Attribute:name+' => 'Краткое название этого правила',
|
||||
'Class:AuditRule/Attribute:description' => 'Описание правила аудита',
|
||||
'Class:AuditRule/Attribute:description+' => 'Полное описание этого правила аудита',
|
||||
'Class:AuditRule/Attribute:query' => 'Запрос на исполнение',
|
||||
'Class:AuditRule/Attribute:query+' => 'OQL выражение на исполнение',
|
||||
'Class:AuditRule/Attribute:valid_flag' => 'Действительные объекты?',
|
||||
'Class:AuditRule/Attribute:valid_flag+' => 'Истина, если правило возвращает действительный объект, иначе ложь',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true' => 'истина',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true+' => 'истина',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false' => 'ложь',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false+' => 'ложь',
|
||||
'Class:AuditRule/Attribute:category_id' => 'Категория',
|
||||
'Class:AuditRule/Attribute:category_id+' => 'Категория этого правила',
|
||||
'Class:AuditRule/Attribute:category_name' => 'Категория',
|
||||
'Class:AuditRule/Attribute:category_name+' => 'Название категории для этого правила',
|
||||
));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'addon/userrights'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: User
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:User' => 'Пользователь',
|
||||
'Class:User+' => 'Пользовательский логин',
|
||||
'Class:User/Attribute:finalclass' => 'Тип счёта',
|
||||
'Class:User/Attribute:finalclass+' => '',
|
||||
'Class:User/Attribute:contactid' => 'Контакт (человек)',
|
||||
'Class:User/Attribute:contactid+' => 'Личные данные из бизнес-данных',
|
||||
'Class:User/Attribute:last_name' => 'Фамилия',
|
||||
'Class:User/Attribute:last_name+' => 'Фамилия соответсвующего контакта',
|
||||
'Class:User/Attribute:first_name' => 'Имя',
|
||||
'Class:User/Attribute:first_name+' => 'Имя соответсвующего контакта',
|
||||
'Class:User/Attribute:email' => 'e-mail',
|
||||
'Class:User/Attribute:email+' => 'e-mail соответсвующего контакта',
|
||||
'Class:User/Attribute:login' => 'Логин',
|
||||
'Class:User/Attribute:login+' => 'строка идентификации пользователя',
|
||||
'Class:User/Attribute:language' => 'Язык',
|
||||
'Class:User/Attribute:language+' => 'язык пользователя',
|
||||
'Class:User/Attribute:language/Value:RU RU' => 'Русский',
|
||||
'Class:User/Attribute:language/Value:RU RU+' => 'Русский (Россия)',
|
||||
'Class:User/Attribute:language/Value:EN US' => 'English',
|
||||
'Class:User/Attribute:language/Value:EN US+' => 'English (U.S.)',
|
||||
'Class:User/Attribute:language/Value:FR FR' => 'French',
|
||||
'Class:User/Attribute:language/Value:FR FR+' => 'French (France)',
|
||||
'Class:User/Attribute:profile_list' => 'Профили',
|
||||
'Class:User/Attribute:profile_list+' => 'Роли, предоставление прав этому человеку',
|
||||
'Class:User/Attribute:allowed_org_list' => 'Разрешённые организации',
|
||||
'Class:User/Attribute:allowed_org_list+' => 'Конечный пользователь имеет право видеть данные, принадлежащие к следующим организациям. Если ни одна организация не указан, нет никаких ограничений.',
|
||||
|
||||
'Class:User/Error:LoginMustBeUnique' => 'Логин должен быть уникальным - "%1s" уже используется.',
|
||||
'Class:User/Error:AtLeastOneProfileIsNeeded' => 'По крайней мере, один профиль должен быть отнесен к этому пользователю.',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Profiles
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_Profiles' => 'Профиль',
|
||||
'Class:URP_Profiles+' => 'Пользовательский профиль',
|
||||
'Class:URP_Profiles/Attribute:name' => 'Название',
|
||||
'Class:URP_Profiles/Attribute:name+' => 'метка',
|
||||
'Class:URP_Profiles/Attribute:description' => 'Описание',
|
||||
'Class:URP_Profiles/Attribute:description+' => 'однострочное описание',
|
||||
'Class:URP_Profiles/Attribute:user_list' => 'Пользователи',
|
||||
'Class:URP_Profiles/Attribute:user_list+' => 'лица, имеющие эту роль',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Dimensions
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_Dimensions' => 'размерность',
|
||||
'Class:URP_Dimensions+' => 'применение размерности (определение силосов)',
|
||||
'Class:URP_Dimensions/Attribute:name' => 'Название',
|
||||
'Class:URP_Dimensions/Attribute:name+' => 'метка',
|
||||
'Class:URP_Dimensions/Attribute:description' => 'Описание',
|
||||
'Class:URP_Dimensions/Attribute:description+' => 'краткое описание',
|
||||
'Class:URP_Dimensions/Attribute:type' => 'Тип',
|
||||
'Class:URP_Dimensions/Attribute:type+' => 'имя класса или типа данных (проекционный блок)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserProfile
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_UserProfile' => 'Пользователь в профиль',
|
||||
'Class:URP_UserProfile+' => 'профили пользователей',
|
||||
'Class:URP_UserProfile/Attribute:userid' => 'Пользователь',
|
||||
'Class:URP_UserProfile/Attribute:userid+' => 'учетная запись пользователя',
|
||||
'Class:URP_UserProfile/Attribute:userlogin' => 'Логин',
|
||||
'Class:URP_UserProfile/Attribute:userlogin+' => 'Логин пользователя',
|
||||
'Class:URP_UserProfile/Attribute:profileid' => 'Профиль',
|
||||
'Class:URP_UserProfile/Attribute:profileid+' => 'использование профиля',
|
||||
'Class:URP_UserProfile/Attribute:profile' => 'Профиль',
|
||||
'Class:URP_UserProfile/Attribute:profile+' => 'Название профиля',
|
||||
'Class:URP_UserProfile/Attribute:reason' => 'Причина',
|
||||
'Class:URP_UserProfile/Attribute:reason+' => 'объяснение, почему этому человеку назначена эта роль',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserOrg
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_UserOrg' => 'Организации пользователя',
|
||||
'Class:URP_UserOrg+' => 'Разрешённые организации',
|
||||
'Class:URP_UserOrg/Attribute:userid' => 'Пользователь',
|
||||
'Class:URP_UserOrg/Attribute:userid+' => 'учетная запись пользователя',
|
||||
'Class:URP_UserOrg/Attribute:userlogin' => 'Логин',
|
||||
'Class:URP_UserOrg/Attribute:userlogin+' => 'Логин пользователя',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_id' => 'Организация',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_id+' => 'Разрешённая организация',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_name' => 'Организация',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_name+' => 'Разрешённая организация',
|
||||
'Class:URP_UserOrg/Attribute:reason' => 'Причина',
|
||||
'Class:URP_UserOrg/Attribute:reason+' => 'объяснение, почему этот человек имеет право видеть данные, принадлежащие к этой организации',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ProfileProjection
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_ProfileProjection' => 'проэктирование профилей',
|
||||
'Class:URP_ProfileProjection+' => 'проэктирование профилей',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid' => 'Размерность',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid+' => 'применение размерности',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension' => 'Размерность',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension+' => 'применение размерности',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid' => 'Профиль',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid+' => 'использование профиля',
|
||||
'Class:URP_ProfileProjection/Attribute:profile' => 'Профиль',
|
||||
'Class:URP_ProfileProjection/Attribute:profile+' => 'Название профиля',
|
||||
'Class:URP_ProfileProjection/Attribute:value' => 'Значение выражения',
|
||||
'Class:URP_ProfileProjection/Attribute:value+' => 'OQL выражение (используя $user) | константа | | +атрибут кода',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute' => 'Атрибут',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute+' => 'Целевой атрибут кода (необязательный)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ClassProjection
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_ClassProjection' => 'прожктирование классов',
|
||||
'Class:URP_ClassProjection+' => 'прожктирование классов',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid' => 'Размерность',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid+' => 'применение размерности',
|
||||
'Class:URP_ClassProjection/Attribute:dimension' => 'Размерность',
|
||||
'Class:URP_ClassProjection/Attribute:dimension+' => 'применение размерности',
|
||||
'Class:URP_ClassProjection/Attribute:class' => 'Класс',
|
||||
'Class:URP_ClassProjection/Attribute:class+' => 'Целевой класс',
|
||||
'Class:URP_ClassProjection/Attribute:value' => 'Значение выражения',
|
||||
'Class:URP_ClassProjection/Attribute:value+' => 'OQL выражение (используя $this) | константа | | +атрибут кода',
|
||||
'Class:URP_ClassProjection/Attribute:attribute' => 'Атрибут',
|
||||
'Class:URP_ClassProjection/Attribute:attribute+' => 'Целевой атрибут кода (необязательный)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ActionGrant
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_ActionGrant' => 'действие разрешений',
|
||||
'Class:URP_ActionGrant+' => 'разрешения на классы',
|
||||
'Class:URP_ActionGrant/Attribute:profileid' => 'Профиль',
|
||||
'Class:URP_ActionGrant/Attribute:profileid+' => 'использование профиля',
|
||||
'Class:URP_ActionGrant/Attribute:profile' => 'Профиль',
|
||||
'Class:URP_ActionGrant/Attribute:profile+' => 'использование профиля',
|
||||
'Class:URP_ActionGrant/Attribute:class' => 'Класс',
|
||||
'Class:URP_ActionGrant/Attribute:class+' => 'Целевой класс',
|
||||
'Class:URP_ActionGrant/Attribute:permission' => 'Разрешения',
|
||||
'Class:URP_ActionGrant/Attribute:permission+' => 'разрешено или нет?',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes' => 'да',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes+' => 'да',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no' => 'нет',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no+' => 'нет',
|
||||
'Class:URP_ActionGrant/Attribute:action' => 'Действие',
|
||||
'Class:URP_ActionGrant/Attribute:action+' => 'действие выполняемое на данном классе',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_StimulusGrant
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_StimulusGrant' => 'разрешения стимулов',
|
||||
'Class:URP_StimulusGrant+' => 'разрешения на стимулы в жизненном цикле объекта',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid' => 'Профиль',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid+' => 'использование профиля',
|
||||
'Class:URP_StimulusGrant/Attribute:profile' => 'Профиль',
|
||||
'Class:URP_StimulusGrant/Attribute:profile+' => 'использование профиля',
|
||||
'Class:URP_StimulusGrant/Attribute:class' => 'Класс',
|
||||
'Class:URP_StimulusGrant/Attribute:class+' => 'Целевой класс',
|
||||
'Class:URP_StimulusGrant/Attribute:permission' => 'Разрешения',
|
||||
'Class:URP_StimulusGrant/Attribute:permission+' => 'разрешено или нет?',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes' => 'да',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes+' => 'да',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no' => 'нет',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no+' => 'нет',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus' => 'Стимулы',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus+' => 'код стимулов',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_AttributeGrant
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Class:URP_AttributeGrant' => 'разрешения атрибутов',
|
||||
'Class:URP_AttributeGrant+' => 'разрешения на уровне атрибутов',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid' => 'Действие предоставления',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid+' => 'действие предоставления',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode' => 'Атрибут',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode+' => 'Код атрибута',
|
||||
));
|
||||
|
||||
//
|
||||
// String from the User Interface: menu, messages, buttons, etc...
|
||||
//
|
||||
|
||||
Dict::Add('RU RU', 'Russian', 'Русский', array(
|
||||
'Menu:WelcomeMenu' => 'Добро пожаловать',
|
||||
'Menu:WelcomeMenu+' => 'Добро пожаловать в iTop',
|
||||
'Menu:WelcomeMenuPage' => 'Добро пожаловать',
|
||||
'Menu:WelcomeMenuPage+' => 'Добро пожаловать в iTop',
|
||||
'UI:WelcomeMenu:Title' => 'Добро пожаловать в iTop',
|
||||
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop is a complete, OpenSource, IT Operational Portal.</p>
|
||||
<ul>Он включает:
|
||||
<li>A complete CMDB (Configuration management database) to document and manage the IT inventory.</li>
|
||||
<li>Модуль управления инцидентами для отслеживания и общения по вопросам IT.</li>
|
||||
<li>Модуль управления изменениями для планирования и отслеживания изменений в IT.</li>
|
||||
<li>База данных известных ошибок для ускорения устранения инцидентов.</li>
|
||||
<li>Модуль простоев для документирования всех запланированных простоев и оповещения соответстсвующих контактов.</li>
|
||||
<li>Панели для быстрого обзора IT.</li>
|
||||
</ul>
|
||||
<p>Все модули могут быть настроены, шаг за шагом, независмо друг от друга.</p>',
|
||||
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop ориентирован на предоставления сервисов, он позволяет IT специалистам легко управляться с несколькими заказчиками или организациями.
|
||||
<ul>iTop обеспечивает многофункциональный набор бизнес-процессов, которые:
|
||||
<li>Повышает эффективность управления IT</li>
|
||||
<li>Повышает производительность IT-операция</li>
|
||||
<li>Улучшает удовлетворенность клиентов и обеспечивает понимание бизнес-процессов.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>iTop полностью открыт для интеграции в рамках текущего управления ИТ-инфраструктурой.</p>
|
||||
<p>
|
||||
<ul>Внедрение ИТ-портала нового поколения поможет вам:
|
||||
<li>Лучше управлять более и более сложными ИТ-окружениями.</li>
|
||||
<li>Реализовывать процессы ITIL в ваем собственном темпе.</li>
|
||||
<li>Управлять наиболее важнім активом ИТ: документацией.</li>
|
||||
</ul>
|
||||
</p>',
|
||||
'UI:WelcomeMenu:AllOpenRequests' => 'Открытые запросы: %1$d',
|
||||
'UI:WelcomeMenu:MyCalls' => 'Мои запросы',
|
||||
'UI:WelcomeMenu:OpenIncidents' => 'Открытые инциденты: %1$d',
|
||||
'UI:WelcomeMenu:AllConfigItems' => 'Кофигурационные единицы: %1$d',
|
||||
'UI:WelcomeMenu:MyIncidents' => 'Инциденты назначенные на меня',
|
||||
'UI:AllOrganizations' => ' Все организации ',
|
||||
'UI:YourSearch' => 'Ваш поиск',
|
||||
'UI:LoggedAsMessage' => 'Вы вошли как %1$s',
|
||||
'UI:LoggedAsMessage+Admin' => 'Вы вошли как %1$s (Администратор)',
|
||||
'UI:Button:Logoff' => 'Выход',
|
||||
'UI:Button:GlobalSearch' => 'Поиск',
|
||||
'UI:Button:Search' => ' Поиск ',
|
||||
'UI:Button:Query' => ' Запрос ',
|
||||
'UI:Button:Ok' => 'Ok',
|
||||
'UI:Button:Cancel' => 'Отмена',
|
||||
'UI:Button:Apply' => 'Применить',
|
||||
'UI:Button:Back' => ' << Назад ',
|
||||
'UI:Button:Next' => ' Вперёд >> ',
|
||||
'UI:Button:Finish' => ' Конец ',
|
||||
'UI:Button:DoImport' => ' Выполнить импорт ! ',
|
||||
'UI:Button:Done' => ' Сделать ',
|
||||
'UI:Button:SimulateImport' => ' Эмулировать импорт ',
|
||||
'UI:Button:Test' => 'Тестировать!',
|
||||
'UI:Button:Evaluate' => ' Оценка ',
|
||||
'UI:Button:AddObject' => ' Добавить... ',
|
||||
'UI:Button:BrowseObjects' => ' Обзор... ',
|
||||
'UI:Button:Add' => ' Добавить ',
|
||||
'UI:Button:AddToList' => ' << Добавить ',
|
||||
'UI:Button:RemoveFromList' => ' Удалить >> ',
|
||||
'UI:Button:FilterList' => ' Фильтр... ',
|
||||
'UI:Button:Create' => ' Создать ',
|
||||
'UI:Button:Delete' => ' Удалить ! ',
|
||||
'UI:Button:ChangePassword' => ' Сменить пароль ',
|
||||
'UI:Button:ResetPassword' => ' Сбросить пароль ',
|
||||
|
||||
'UI:SearchToggle' => 'Поиск',
|
||||
'UI:ClickToCreateNew' => 'Создать новый %1$s',
|
||||
'UI:SearchFor_Class' => 'Поиск для %1$s объектов',
|
||||
'UI:NoObjectToDisplay' => 'Нет объектов для отображения.',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => 'Параметр object_id является обязательным если указан link_attr. Проверьте определение отображения шаблона.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => 'Параметр object_id является обязательным если указан link_attr. Проверьте определение отображения шаблона',
|
||||
'UI:Error:MandatoryTemplateParameter_group_by' => 'Параметр group_by является обязательным. Проверьте определение отображения шаблона.',
|
||||
'UI:Error:InvalidGroupByFields' => 'Неверный список полей для группировки: "%1$s".',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => 'Ошибка: неподдерживаемый стиль блока: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Неправильное определение ссылки: класс объектов для управления: %1$s не был найден в качестве внешнего ключа в классе %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Объект: %1$s:%2$d не найден.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Ошибка: Циклическая ссылка в зависимостях между полями, проверить модель данных.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Загружаемый файл слишком большой. (Максимально разрешённый размер %1$s). Проверьте в конфинурации PHP параметры upload_max_filesize и post_max_size.',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Загруженный файл был усечен !',
|
||||
'UI:Error:NoTmpDir' => 'Временный каталог не определен.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => ' Невозможно записать временный файл на диск. upload_tmp_dir = "%1$s".',
|
||||
'UI:Error:UploadStoppedByExtension_FileName' => 'Загрузка остановлена по расширению. (Имя файла = "%1$s").',
|
||||
'UI:Error:UploadFailedUnknownCause_Code' => 'Загрузка файла не удалась по неизвестной причине. (Код ошибки = "%1$s").',
|
||||
|
||||
'UI:Error:1ParametersMissing' => 'Ошибка: следующий параметр должен быть указан для этой операции: %1$s.',
|
||||
'UI:Error:2ParametersMissing' => 'Ошибка: следующие параметры должен быть указан для этой операции: %1$s и %2$s.',
|
||||
'UI:Error:3ParametersMissing' => 'Ошибка: следующие параметры должен быть указан для этой операции: %1$s, %2$s и %3$s.',
|
||||
'UI:Error:4ParametersMissing' => 'Ошибка: следующие параметры должен быть указан для этой операции: %1$s, %2$s, %3$s и %4$s.',
|
||||
'UI:Error:IncorrectOQLQuery_Message' => 'Ошибка: неправильній запрос OQL: %1$s',
|
||||
'UI:Error:AnErrorOccuredWhileRunningTheQuery_Message' => 'Ошибка при выполнении запроса: %1$s',
|
||||
'UI:Error:ObjectAlreadyUpdated' => 'Ошибка: объект уже обновлён.',
|
||||
'UI:Error:ObjectCannotBeUpdated' => 'Ошибка: объект не может быть обновлён.',
|
||||
'UI:Error:ObjectsAlreadyDeleted' => 'Ошибка: объект уже удалён!',
|
||||
'UI:Error:BulkDeleteNotAllowedOn_Class' => 'Вам не разрешено выполнять массовое удаления объектов класса %1$s',
|
||||
'UI:Error:DeleteNotAllowedOn_Class' => 'Вы не можете удалять объекты класса %1$s',
|
||||
'UI:Error:BulkModifyNotAllowedOn_Class' => 'Вам не разрешено выполнять массовое обновление объектов класса %1$s',
|
||||
'UI:Error:ObjectAlreadyCloned' => 'Ошибка: объект уже клонирован!',
|
||||
'UI:Error:ObjectAlreadyCreated' => 'Ошибка: объект уже создан!',
|
||||
'UI:Error:Invalid_Stimulus_On_Object_In_State' => 'Ошибка: недействительный стимул "%1$s" на объекте %2$s в состоянии "%3$s".',
|
||||
|
||||
|
||||
'UI:GroupBy:Count' => 'Счётчик',
|
||||
'UI:GroupBy:Count+' => 'Количество элементов',
|
||||
'UI:CountOfObjects' => '%1$d объектов соответствует критериям.',
|
||||
'UI_CountOfObjectsShort' => '%1$d объектов.',
|
||||
'UI:NoObject_Class_ToDisplay' => 'Нечего отображать %1$s',
|
||||
'UI:History:LastModified_On_By' => 'Последнее изменение %1$s by %2$s.',
|
||||
'UI:HistoryTab' => 'История',
|
||||
'UI:NotificationsTab' => 'Оповещения',
|
||||
'UI:History:Date' => 'Дата',
|
||||
'UI:History:Date+' => 'Дата изменения',
|
||||
'UI:History:User' => 'Пользователь',
|
||||
'UI:History:User+' => 'Пользователь сделавший изменение',
|
||||
'UI:History:Changes' => 'Изменения',
|
||||
'UI:History:Changes+' => 'Изменения, внесенные в объект',
|
||||
'UI:Loading' => 'Загрузка...',
|
||||
'UI:Menu:Actions' => 'Действия',
|
||||
'UI:Menu:New' => 'Новый...',
|
||||
'UI:Menu:Add' => 'Добавить...',
|
||||
'UI:Menu:Manage' => 'Управление...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'Экспорт CSV',
|
||||
'UI:Menu:Modify' => 'Изменить...',
|
||||
'UI:Menu:Delete' => 'Удалить...',
|
||||
'UI:Menu:Manage' => 'Управление...',
|
||||
'UI:Menu:BulkDelete' => 'Удалить...',
|
||||
'UI:UndefinedObject' => 'неопределённый',
|
||||
'UI:Document:OpenInNewWindow:Download' => 'Открыть в новом окне: %1$s, Загрузка: %2$s',
|
||||
'UI:SelectAllToggle+' => 'Выбрать / Отменить всё',
|
||||
'UI:TruncatedResults' => '%1$d объектов отображено из %2$d',
|
||||
'UI:DisplayAll' => 'Показать всё',
|
||||
'UI:CollapseList' => 'Свернуть',
|
||||
'UI:CountOfResults' => '%1$d объект(ы)',
|
||||
'UI:ChangesLogTitle' => 'Журнал изменений (%1$d):',
|
||||
'UI:EmptyChangesLogTitle' => 'Журнал изменений пустой',
|
||||
'UI:SearchFor_Class_Objects' => 'Поиск объекта %1$s',
|
||||
'UI:OQLQueryBuilderTitle' => 'Коструктор запросов OQL',
|
||||
'UI:OQLQueryTab' => 'Запрос OQL',
|
||||
'UI:SimpleSearchTab' => 'Простой поиск',
|
||||
'UI:Details+' => 'Подробности',
|
||||
'UI:SearchValue:Any' => '* Любой *',
|
||||
'UI:SearchValue:Mixed' => '* смешанный *',
|
||||
'UI:SelectOne' => '-- выбрать один --',
|
||||
'UI:Login:Welcome' => 'Добро пожаловать в iTop!',
|
||||
'UI:Login:IncorrectLoginPassword' => 'Неправильный логин/пароль. Пожалуйста, попробуйте еще раз.',
|
||||
'UI:Login:IdentifyYourself' => 'Представтесть, прежде чем продолжить',
|
||||
'UI:Login:UserNamePrompt' => 'Имя пользователя',
|
||||
'UI:Login:PasswordPrompt' => 'Пароль',
|
||||
'UI:Login:ChangeYourPassword' => 'Изменение пароля',
|
||||
'UI:Login:OldPasswordPrompt' => 'Старый пароль',
|
||||
'UI:Login:NewPasswordPrompt' => 'Новый пароль',
|
||||
'UI:Login:RetypeNewPasswordPrompt' => 'Повтор нового пароля',
|
||||
'UI:Login:IncorrectOldPassword' => 'Ошибка: старый пароль неверный',
|
||||
'UI:LogOffMenu' => 'Выход',
|
||||
'UI:LogOff:ThankYou' => 'Спасибо за использование iTop',
|
||||
'UI:LogOff:ClickHereToLoginAgain' => 'Нажмите здесь, чтобы снова войти...',
|
||||
'UI:ChangePwdMenu' => 'Изменить пароль...',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'Новый пароль и повторный пароль не совпадают!',
|
||||
'UI:Button:Login' => 'Введите iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'Доступ к iTop ограничен. Пожалуйста, свяжитесь с администратором iTop.',
|
||||
'UI:Login:Error:AccessAdmin' => 'Доступ ограничен для лиц с административными привилегиями. Пожалуйста, свяжитесь с администратором iTop.',
|
||||
'UI:CSVImport:MappingSelectOne' => '-- выбрать один --',
|
||||
'UI:CSVImport:MappingNotApplicable' => '-- игнорировать это поле --',
|
||||
'UI:CSVImport:NoData' => 'Пустой набор данных..., пожалуйста введите что-нибудь!',
|
||||
'UI:Title:DataPreview' => 'Предпросмотр данных',
|
||||
'UI:CSVImport:ErrorOnlyOneColumn' => 'Ошибка: Данные содежат только одну колонку. Выбран правильный разделитель?',
|
||||
'UI:CSVImport:FieldName' => 'Поле %1$d',
|
||||
'UI:CSVImport:DataLine1' => 'Строка данных 1',
|
||||
'UI:CSVImport:DataLine2' => 'Строка данных 2',
|
||||
'UI:CSVImport:idField' => 'id (Первичный ключ)',
|
||||
'UI:Title:BulkImport' => 'iTop - Пакетный импорт',
|
||||
'UI:Title:BulkImport+' => 'Мастер импорта CSV',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- выбрать один --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'Внутренняя ошибка: "%1$s" некорректный код потому, что "%2$s" НЕ являеться внешним ключём класса "%3$s"',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d объект(ы) останеться неизменным.',
|
||||
'UI:CSVImport:ObjectsWillBeModified' => '%1$d объект(ы) будет изменён.',
|
||||
'UI:CSVImport:ObjectsWillBeAdded' => '%1$d объект(ы) будет добавлен.',
|
||||
'UI:CSVImport:ObjectsWillHaveErrors' => '%1$d объект(ы) будут ошибочны.',
|
||||
'UI:CSVImport:ObjectsRemainedUnchanged' => '%1$d объект(ы) остался неизменённым.',
|
||||
'UI:CSVImport:ObjectsWereModified' => '%1$d объект(ы) изменён.',
|
||||
'UI:CSVImport:ObjectsWereAdded' => '%1$d объект(ы) был добавлен.',
|
||||
'UI:CSVImport:ObjectsHadErrors' => '%1$d объект(ы) содержит ошибки.',
|
||||
'UI:Title:CSVImportStep2' => 'Step 2 of 5: Опции данных CSV',
|
||||
'UI:Title:CSVImportStep3' => 'Step 3 of 5: Распределение данных',
|
||||
'UI:Title:CSVImportStep4' => 'Step 4 of 5: Симуляция импорта',
|
||||
'UI:Title:CSVImportStep5' => 'Step 5 of 5: Импорт завершён',
|
||||
'UI:CSVImport:LinesNotImported' => 'Строки небыли загружены:',
|
||||
'UI:CSVImport:LinesNotImported+' => 'Следующие строки не были импортированы, потому что они содержат ошибки',
|
||||
'UI:CSVImport:SeparatorComma+' => ', (запятая)',
|
||||
'UI:CSVImport:SeparatorSemicolon+' => '; (точка с запятой)',
|
||||
'UI:CSVImport:SeparatorTab+' => 'табулятор',
|
||||
'UI:CSVImport:SeparatorOther' => 'другое:',
|
||||
'UI:CSVImport:QualifierDoubleQuote+' => '" (двойная кавычка)',
|
||||
'UI:CSVImport:QualifierSimpleQuote+' => '\' (одинарная кавычка)',
|
||||
'UI:CSVImport:QualifierOther' => 'другое:',
|
||||
'UI:CSVImport:TreatFirstLineAsHeader' => 'Использовать первую строку как заголовок (названия столбцов)',
|
||||
'UI:CSVImport:Skip_N_LinesAtTheBeginning' => 'Пропустить %1$s строк(у) от начала файла',
|
||||
'UI:CSVImport:CSVDataPreview' => 'Предпросмотр данных CSV',
|
||||
'UI:CSVImport:SelectFile' => 'Выбор файла для иморта:',
|
||||
'UI:CSVImport:Tab:LoadFromFile' => 'Загрузить из файла',
|
||||
'UI:CSVImport:Tab:CopyPaste' => 'Копировать и вставить данные',
|
||||
'UI:CSVImport:Tab:Templates' => 'Шаблоны',
|
||||
'UI:CSVImport:PasteData' => 'Вставить данные для импорта:',
|
||||
'UI:CSVImport:PickClassForTemplate' => 'Выбор шаблона для загрузки: ',
|
||||
'UI:CSVImport:SeparatorCharacter' => 'Символ разделителя:',
|
||||
'UI:CSVImport:TextQualifierCharacter' => 'Символ экранирования текста',
|
||||
'UI:CSVImport:CommentsAndHeader' => 'Коментарии и заголовок',
|
||||
'UI:CSVImport:SelectClass' => 'Выбор класса импорта:',
|
||||
'UI:CSVImport:AdvancedMode' => 'Расширенный режим',
|
||||
'UI:CSVImport:AdvancedMode+' => 'В расширенном режиме "id" (первичный ключ) объекта может быть использован для обновления и переименования объектов.' .
|
||||
'Однако колонка "id" (if present) может быть использовать только как критерий поиска и не модет быть совмещена с любым другим критерием поиска.',
|
||||
'UI:CSVImport:SelectAClassFirst' => 'Для настройки рапределения, в первую очередь выберите класс.',
|
||||
'UI:CSVImport:HeaderFields' => 'Поля',
|
||||
'UI:CSVImport:HeaderMappings' => 'Распределение',
|
||||
'UI:CSVImport:HeaderSearch' => 'Поиск?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => 'Необходимо выбрать распределение для каждой ячейки.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => 'Необходимо выбрать, по крайней мере один критерий',
|
||||
'UI:CSVImport:Encoding' => 'Кодировка символов',
|
||||
'UI:UniversalSearchTitle' => 'iTop - Универсальный поиск',
|
||||
'UI:UniversalSearch:Error' => 'Ошибка: %1$s',
|
||||
'UI:UniversalSearch:LabelSelectTheClass' => 'Выбор класса для поиска: ',
|
||||
|
||||
'UI:Audit:Title' => 'iTop - Аудит CMDB',
|
||||
'UI:Audit:InteractiveAudit' => 'Интерактивный аудит',
|
||||
'UI:Audit:HeaderAuditRule' => 'Правило аудита',
|
||||
'UI:Audit:HeaderNbObjects' => '# Объекты',
|
||||
'UI:Audit:HeaderNbErrors' => '# Ошибки',
|
||||
'UI:Audit:PercentageOk' => '% Ok',
|
||||
|
||||
'UI:RunQuery:Title' => 'iTop - Оценка запросов OQL',
|
||||
'UI:RunQuery:QueryExamples' => 'Примеры запросов',
|
||||
'UI:RunQuery:HeaderPurpose' => 'Цель',
|
||||
'UI:RunQuery:HeaderPurpose+' => 'Объяснение запросов',
|
||||
'UI:RunQuery:HeaderOQLExpression' => 'Выражение OQL',
|
||||
'UI:RunQuery:HeaderOQLExpression+' => 'Запрос в синтаксисе OQL',
|
||||
'UI:RunQuery:ExpressionToEvaluate' => 'Оценка віражения: ',
|
||||
'UI:RunQuery:MoreInfo' => 'Подробная информация о запросе: ',
|
||||
'UI:RunQuery:DevelopedQuery' => 'Переработанное выражение запроса: ',
|
||||
'UI:RunQuery:SerializedFilter' => 'Сериализованные фильты: ',
|
||||
'UI:RunQuery:Error' => 'Ошибка при выполнении запроса: %1$s',
|
||||
|
||||
'UI:Schema:Title' => 'iTop схема объектов',
|
||||
'UI:Schema:CategoryMenuItem' => 'Категория <b>%1$s</b>',
|
||||
'UI:Schema:Relationships' => 'Отношения',
|
||||
'UI:Schema:AbstractClass' => 'Абстрактный класс: ни один объект из этого класса может быть создан.',
|
||||
'UI:Schema:NonAbstractClass' => 'Не абстрактный класс: объекты этого класса могут быть созданы.',
|
||||
'UI:Schema:ClassHierarchyTitle' => 'Иерархия классов',
|
||||
'UI:Schema:AllClasses' => 'Все классы',
|
||||
'UI:Schema:ExternalKey_To' => 'Внешний ключ %1$s',
|
||||
'UI:Schema:Columns_Description' => 'Столбцы: <em>%1$s</em>',
|
||||
'UI:Schema:Default_Description' => 'По умолчанию: "%1$s"',
|
||||
'UI:Schema:NullAllowed' => 'Null разрешён',
|
||||
'UI:Schema:NullNotAllowed' => 'Null НЕ разрешён',
|
||||
'UI:Schema:Attributes' => 'Атрибуты',
|
||||
'UI:Schema:AttributeCode' => 'Код атрибута',
|
||||
'UI:Schema:AttributeCode+' => 'Внутренний код атрибута',
|
||||
'UI:Schema:Label' => 'Метка',
|
||||
'UI:Schema:Label+' => 'Метка атрибута',
|
||||
'UI:Schema:Type' => 'Тип',
|
||||
|
||||
'UI:Schema:Type+' => 'Тип данных атрибута',
|
||||
'UI:Schema:Origin' => 'Происхождение',
|
||||
'UI:Schema:Origin+' => 'Базовый класс, в котором этот атрибут определен',
|
||||
'UI:Schema:Description' => 'Описание',
|
||||
'UI:Schema:Description+' => 'Описание атрибута',
|
||||
'UI:Schema:AllowedValues' => 'Допустимые значения',
|
||||
'UI:Schema:AllowedValues+' => 'Ограничения на возможные значения для этого атрибута',
|
||||
'UI:Schema:MoreInfo' => 'Подробнее',
|
||||
'UI:Schema:MoreInfo+' => 'Более подробная информация о поле, определённом в базе данных',
|
||||
'UI:Schema:SearchCriteria' => 'Критерий поиска',
|
||||
'UI:Schema:FilterCode' => 'Код фильтра',
|
||||
'UI:Schema:FilterCode+' => 'Код критерия поиска',
|
||||
'UI:Schema:FilterDescription' => 'Описание',
|
||||
'UI:Schema:FilterDescription+' => 'Описание еритерия поиска',
|
||||
'UI:Schema:AvailOperators' => 'Доступные операторы',
|
||||
'UI:Schema:AvailOperators+' => 'Возможные операторы для этого критерия поиска',
|
||||
'UI:Schema:ChildClasses' => 'Дочерние классы',
|
||||
'UI:Schema:ReferencingClasses' => 'Привязки классов',
|
||||
'UI:Schema:RelatedClasses' => 'Зависимые классы',
|
||||
'UI:Schema:LifeCycle' => 'Жизненный цикл',
|
||||
'UI:Schema:Triggers' => 'Триггеры',
|
||||
'UI:Schema:Relation_Code_Description' => 'Зависимость <em>%1$s</em> (%2$s)',
|
||||
'UI:Schema:RelationDown_Description' => 'Вниз: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Вверх: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: распространяется на %2$d уровней, запрос: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: не распространяется (%2$d уровней), запрос: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s связан с классом %2$s через поле %3$s',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s связан с %2$s через %3$s::<em>%4$s</em>',
|
||||
'UI:Schema:Links:1-n' => 'Классы, указывающие на %1$s (1:n ссылки):',
|
||||
'UI:Schema:Links:n-n' => 'Классы связаны с %1$s (n:n сслыки):',
|
||||
'UI:Schema:Links:All' => 'График всех связанных классов',
|
||||
'UI:Schema:NoLifeCyle' => 'Не определён жизненный цикл для этих классов.',
|
||||
'UI:Schema:LifeCycleTransitions' => 'Переходы',
|
||||
'UI:Schema:LifeCyleAttributeOptions' => 'Варианты атрибутов',
|
||||
'UI:Schema:LifeCycleHiddenAttribute' => 'Скрытый',
|
||||
'UI:Schema:LifeCycleReadOnlyAttribute' => 'Только для чтения',
|
||||
'UI:Schema:LifeCycleMandatoryAttribute' => 'Обязательный',
|
||||
'UI:Schema:LifeCycleAttributeMustChange' => 'Необходимо изменить',
|
||||
'UI:Schema:LifeCycleAttributeMustPrompt' => 'Пользователю будет предложено изменить значение',
|
||||
'UI:Schema:LifeCycleEmptyList' => 'пустой список',
|
||||
|
||||
'UI:LinksWidget:Autocomplete+' => 'Введите первые 3 символа...',
|
||||
'UI:Combo:SelectValue' => '--- выбор значения ---',
|
||||
'UI:Label:SelectedObjects' => 'Выбранные объекты: ',
|
||||
'UI:Label:AvailableObjects' => 'Доступные объекты: ',
|
||||
'UI:Link_Class_Attributes' => '%1$s атрибуты',
|
||||
'UI:SelectAllToggle+' => 'Выбрать всё / Отменить всё',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => 'Добавить %1$s объекты связанные с %2$s: %3$s',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class' => 'Добавть %1$s объекты для связи с %2$s',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => 'Управление %1$s объектами связанными с %2$s: %3$s',
|
||||
'UI:AddLinkedObjectsOf_Class' => 'Добавить %1$ss...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => 'Удалить выбранные объекты',
|
||||
'UI:Message:EmptyList:UseAdd' => 'Список пуст, используй кнопку "Добавить ...", для добавения элементов.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Используйте форму поиска выше для поиска объектов, которые будут добавлены.',
|
||||
|
||||
'UI:Wizard:FinalStepTitle' => 'Последний шаг: подтверждение',
|
||||
'UI:Title:DeletionOf_Object' => 'Удаление %1$s',
|
||||
'UI:Title:BulkDeletionOf_Count_ObjectsOf_Class' => 'Пакетное удаление %1$d объектов класса %2$s',
|
||||
'UI:Delete:NotAllowedToDelete' => 'Вы не можете удалить этот объект',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => 'Вы не можете обновить следующее(ие) поле(я): %1$s',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'Этот объект не может быть удален, потому что текущий пользователь не имеет достаточных прав',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => 'Этот объект не может быть удален, потому что некоторые ручные операции должны быть выполнены до этого',
|
||||
'UI:Archive_User_OnBehalfOf_User' => '%1$s от имени %2$s',
|
||||
'UI:Delete:AutomaticallyDeleted' => 'автоматически удалён',
|
||||
'UI:Delete:AutomaticResetOf_Fields' => 'автоматически сброшено поле(я): %1$s',
|
||||
'UI:Delete:CleaningUpRefencesTo_Object' => 'Очищенны все ссылки(связи?) на %1$s...',
|
||||
'UI:Delete:CleaningUpRefencesTo_Several_ObjectsOf_Class' => 'Очищенны все ссылки(связи?) на %1$d объектов класса %2$s...',
|
||||
'UI:Delete:Done+' => 'Что было сделано...',
|
||||
'UI:Delete:_Name_Class_Deleted' => '%1$s - %2$s удалено.',
|
||||
'UI:Delete:ConfirmDeletionOf_Name' => 'Удаление %1$s',
|
||||
'UI:Delete:ConfirmDeletionOf_Count_ObjectsOf_Class' => 'Удаление %1$d объектов класса %2$s',
|
||||
'UI:Delete:ShouldBeDeletedAtomaticallyButNotAllowed' => 'Должно быть автоматичски удалено, но вы не можете это сделать',
|
||||
'UI:Delete:MustBeDeletedManuallyButNotAllowed' => 'Необходимо удалить вручную - но вы не можете удалить этот объект, свяжитесь с администратором вашего приложения',
|
||||
'UI:Delete:WillBeDeletedAutomatically' => 'Будет удалено автоматически',
|
||||
'UI:Delete:MustBeDeletedManually' => 'Необходимо удалить вручную',
|
||||
'UI:Delete:CannotUpdateBecause_Issue' => 'Должно быть автоматически обновлено, но: %1$s',
|
||||
'UI:Delete:WillAutomaticallyUpdate_Fields' => 'будет автоматически обновлено (сброс: %1$s)',
|
||||
'UI:Delete:Count_Objects/LinksReferencing_Object' => '%1$d объектов/связей ссылаются(связаны?) %2$s',
|
||||
'UI:Delete:Count_Objects/LinksReferencingTheObjects' => '%1$d объектов/связей ссылаются на объекты, которые будут удалены',
|
||||
'UI:Delete:ReferencesMustBeDeletedToEnsureIntegrity' => 'Для обеспечения целостности базы данных, необходимо устранить все связи',
|
||||
'UI:Delete:Consequence+' => 'Что будет сделано',
|
||||
'UI:Delete:SorryDeletionNotAllowed' => 'К сожалению, вы не можете удалить этот объект, см. подробное объяснение выше',
|
||||
'UI:Delete:PleaseDoTheManualOperations' => 'Необходимо выполнить указанные ручные операции до запроса на удаление этого объекта',
|
||||
'UI:Delect:Confirm_Object' => 'Подтвердите удаление %1$s.',
|
||||
'UI:Delect:Confirm_Count_ObjectsOf_Class' => 'Подтвердите удаление %1$d объектов класса %2$s.',
|
||||
'UI:WelcomeToITop' => 'Добро пожаловать в iTop',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s подробности',
|
||||
'UI:ErrorPageTitle' => 'iTop - Ошибка',
|
||||
'UI:ObjectDoesNotExist' => 'Извните, этот объект не существует (или вы не можете его видеть).',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - Результаты поиска',
|
||||
'UI:Search:NoSearch' => 'Ничего не найдено',
|
||||
'UI:FullTextSearchTitle_Text' => 'Результаты для "%1$s":',
|
||||
'UI:Search:Count_ObjectsOf_Class_Found' => '%1$d объект(ы) класса %2$s найдено.',
|
||||
'UI:Search:NoObjectFound' => 'Объекты не найдены.',
|
||||
'UI:ModificationPageTitle_Object_Class' => 'iTop - %1$s - %2$s модификации',
|
||||
'UI:ModificationTitle_Class_Object' => 'Модификации %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - Клон %1$s - %2$s модификация',
|
||||
'UI:CloneTitle_Class_Object' => 'Клон %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Создание нового %1$s ',
|
||||
'UI:CreationTitle_Class' => 'Создание нового %1$s',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Выбор типа %1$s для создания:',
|
||||
'UI:Class_Object_NotUpdated' => 'Изменений не обнаружено, %1$s (%2$s) <strong>не</strong> был изменён.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) обновлён.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Пакетное удаление',
|
||||
'UI:BulkDeleteTitle' => 'Выбор объектов для удаления:',
|
||||
'UI:PageTitle:ObjectCreated' => 'iTop Объект создан.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s создан.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => 'Применение %1$s на объект: %2$s в состоянии %3$s для целевого класса: %4$s.',
|
||||
'UI:ObjectCouldNotBeWritten' => 'Объект не может быть записан: %1$s',
|
||||
'UI:PageTitle:FatalError' => 'iTop - Фатальная ошибка',
|
||||
'UI:SystemIntrusion' => 'Доступ запрещён. Вы пытаетесь выполнить неразрешённую операцию.',
|
||||
'UI:FatalErrorMessage' => 'Фатальная ошибка, iTop не может продолжать.',
|
||||
'UI:Error_Details' => 'Ошибка: %1$s.',
|
||||
|
||||
'UI:PageTitle:ClassProjections' => 'iTop управление пользователями - проектирование классов',
|
||||
'UI:PageTitle:ProfileProjections' => 'iTop управление пользователями - проектирование профилей',
|
||||
'UI:UserManagement:Class' => 'Классs',
|
||||
'UI:UserManagement:Class+' => 'Класс объектов',
|
||||
'UI:UserManagement:ProjectedObject' => 'Объект',
|
||||
'UI:UserManagement:ProjectedObject+' => 'Проектируемый объект',
|
||||
'UI:UserManagement:AnyObject' => '* любой *',
|
||||
'UI:UserManagement:User' => 'Пользователь',
|
||||
'UI:UserManagement:User+' => 'Пользователь учавствует',
|
||||
'UI:UserManagement:Profile' => 'Профиль',
|
||||
'UI:UserManagement:Profile+' => 'Профиль, указанный в проектировании',
|
||||
'UI:UserManagement:Action:Read' => 'Чтение',
|
||||
'UI:UserManagement:Action:Read+' => 'Чтение/отображение объектов',
|
||||
'UI:UserManagement:Action:Modify' => 'Modify',
|
||||
'UI:UserManagement:Action:Modify+' => 'Создание и редактирование (изменение) объектов',
|
||||
'UI:UserManagement:Action:Delete' => 'Удаление',
|
||||
'UI:UserManagement:Action:Delete+' => 'Удаление объектов',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Пакетное чтение (Экспорт)',
|
||||
'UI:UserManagement:Action:BulkRead+' => 'Список оъектов или массовый экспорт',
|
||||
'UI:UserManagement:Action:BulkModify' => 'Пакетное изменение',
|
||||
'UI:UserManagement:Action:BulkModify+' => 'Массовое создание/редактирование (импорт CSV)',
|
||||
'UI:UserManagement:Action:BulkDelete' => 'Пакетное удаление',
|
||||
'UI:UserManagement:Action:BulkDelete+' => 'Массовое удаление объектов',
|
||||
'UI:UserManagement:Action:Stimuli' => 'Стимулы',
|
||||
'UI:UserManagement:Action:Stimuli+' => 'Допустимые (составные) действия',
|
||||
'UI:UserManagement:Action' => 'Действие',
|
||||
'UI:UserManagement:Action+' => 'Действие, выполняемое пользователем',
|
||||
'UI:UserManagement:TitleActions' => 'Действия',
|
||||
'UI:UserManagement:Permission' => 'Разрешения',
|
||||
'UI:UserManagement:Permission+' => 'Пользовательские разрешения',
|
||||
'UI:UserManagement:Attributes' => 'Атрибуты',
|
||||
'UI:UserManagement:ActionAllowed:Yes' => 'Да',
|
||||
'UI:UserManagement:ActionAllowed:No' => 'Нет',
|
||||
'UI:UserManagement:AdminProfile+' => 'Администраторы имеют полный доступ на чтение/запись всех объектов в базе данных.',
|
||||
'UI:UserManagement:NoLifeCycleApplicable' => 'не определено',
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => 'Не определён жизненній цикл для данного класса',
|
||||
'UI:UserManagement:GrantMatrix' => 'Матрица разрешений',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => 'Связь между %1$s и %2$s',
|
||||
'UI:UserManagement:LinkBetween_User_And_Org' => 'Связь между %1$s и %2$s',
|
||||
|
||||
'Menu:AdminTools' => 'Инструменты админа',
|
||||
'Menu:AdminTools+' => 'Административные инструменты',
|
||||
'Menu:AdminTools?' => 'Инструменты доступны только для пользователей, имеющих профиль администратора',
|
||||
|
||||
'UI:ChangeManagementMenu' => 'Управление изменениями',
|
||||
'UI:ChangeManagementMenu+' => 'Управление изменениями',
|
||||
'UI:ChangeManagementMenu:Title' => 'Обзор изменений',
|
||||
'UI-ChangeManagementMenu-ChangesByType' => 'Изменения по типу',
|
||||
'UI-ChangeManagementMenu-ChangesByStatus' => 'Изменения по статутсу',
|
||||
'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'Изменения по рабочей группе',
|
||||
'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Не назначенные изменения',
|
||||
|
||||
'UI:ConfigurationItemsMenu'=> 'Элементы конфигурации',
|
||||
'UI:ConfigurationItemsMenu+'=> 'Все устройства',
|
||||
'UI:ConfigurationItemsMenu:Title' => 'Обзор элементов конфигурации',
|
||||
'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Серверы по критичности',
|
||||
'UI-ConfigurationItemsMenu-PCsByCriticity' => 'ПК по критичности',
|
||||
'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Сетевые устройства по критичности',
|
||||
'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Приложения по критичности',
|
||||
|
||||
'UI:ConfigurationManagementMenu' => 'Управление конфигурациями',
|
||||
'UI:ConfigurationManagementMenu+' => 'Управление конфигурациями',
|
||||
'UI:ConfigurationManagementMenu:Title' => 'Обзор инфраструктуры',
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => 'Объекты инфраструктуры по типу',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => 'Объекты инфраструктуры по статусу',
|
||||
|
||||
'UI:ConfigMgmtMenuOverview:Title' => 'Панель управления конфигурациями',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => 'Элементы конфигурации по статусу',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => 'Элементы конфигурации по типу',
|
||||
|
||||
'UI:RequestMgmtMenuOverview:Title' => 'Панель управления запросами',
|
||||
'UI-RequestManagementOverview-RequestByService' => 'Пользовательские запросы по сервису',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => 'Пользовательские запросы по приоритету',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => 'Пользовательские запросы не назначенные не на один агент',
|
||||
|
||||
'UI:IncidentMgmtMenuOverview:Title' => 'Панель управления инцидентами',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => 'Инциденты по сервису',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => 'Инциденты по приоритету',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => 'Инциденты не назначенные не на один агент',
|
||||
|
||||
'UI:ChangeMgmtMenuOverview:Title' => 'Панель управления изменениями',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => 'Изменения по типу',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => 'Изменения не назначенные не на один агент',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => 'Отключения в связи с изменениями',
|
||||
|
||||
'UI:ServiceMgmtMenuOverview:Title' => 'Панель управления сервисами',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => 'Договора с клиентами, которые будут обновлены в течении 30 дней',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => 'Договора с поставщиками, которые будут обновлены в течении 30 дней',
|
||||
|
||||
'UI:ContactsMenu' => 'Договора',
|
||||
'UI:ContactsMenu+' => 'Договора',
|
||||
'UI:ContactsMenu:Title' => 'Обзор договоров',
|
||||
'UI-ContactsMenu-ContactsByLocation' => 'Договора по размещению',
|
||||
'UI-ContactsMenu-ContactsByType' => 'Договора по типу',
|
||||
'UI-ContactsMenu-ContactsByStatus' => 'Договора по статусу',
|
||||
|
||||
'Menu:CSVImportMenu' => 'Импорт CSV',
|
||||
'Menu:CSVImportMenu+' => 'Пакетное создание или обновление',
|
||||
|
||||
'Menu:DataModelMenu' => 'Модель данных',
|
||||
'Menu:DataModelMenu+' => 'Обзор модели данных',
|
||||
|
||||
'Menu:ExportMenu' => 'Экспорт',
|
||||
'Menu:ExportMenu+' => 'Экспорт результатов любого запроса в HTML, CSV или XML',
|
||||
|
||||
'Menu:NotificationsMenu' => 'Уведомления',
|
||||
'Menu:NotificationsMenu+' => 'Конфигурация уведомлений',
|
||||
'UI:NotificationsMenu:Title' => 'Конфигурация <span class="hilite">Уведомлений</span>',
|
||||
'UI:NotificationsMenu:Help' => 'Помощь',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>В iTop уведомления полностью настраиваемые. Они основаны на двух наборах объектов: <i>триггеры и действия</i>.</p>
|
||||
<p><i><b>Триггеры</b></i> оперделяют когда уведомление будет выполнено. Есть 3 типа триггеров обробатывающих 3 разных фазы жизненного цикла объекта:
|
||||
<ol>
|
||||
<li>the "OnCreate" триггеры сработают когда объект заданного класса будет создан</li>
|
||||
<li>the "OnStateEnter" триггеры сработают перед тем как объект заданного класса войдёт в заданное состояние (выйдет из другого состояния)</li>
|
||||
<li>the "OnStateLeave" триггеры сработают когда объекты заданного класса выйдут из заданного состояния</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>
|
||||
<i><b>Действия</b></i> определяют, какое действие будет выполнено при срабатывании триггера. Пока есть только одно действие, которое состоит в отправке сообщения на электронную почту.
|
||||
Эти действия также определяют шаблон, который будет использован для отправки электронного сообщения, а также другие параметры сообщения, такие как получатель, важность и т.д.
|
||||
</p>
|
||||
<p>Специальная страница: <a href="../setup/email.test.php" target="_blank">email.test.php</a> доступна для тестирования и устранения неполадок в настройка почты в PHP.</p>
|
||||
<p>Чтобы быть выполненными, действия необходимо ассоциировать с триггерами.
|
||||
При ассоциации с триггером, каждое действие получает "порядковый" номер, который определяет порядок выполнения действий.</p>',
|
||||
'UI:NotificationsMenu:Triggers' => 'Триггеры',
|
||||
'UI:NotificationsMenu:AvailableTriggers' => 'Доступные триггеры',
|
||||
'UI:NotificationsMenu:OnCreate' => 'При создании объекта',
|
||||
'UI:NotificationsMenu:OnStateEnter' => 'При входе объекта в заданное состояние',
|
||||
'UI:NotificationsMenu:OnStateLeave' => 'При выходе объекта из заданного состояния',
|
||||
'UI:NotificationsMenu:Actions' => 'Действия',
|
||||
'UI:NotificationsMenu:AvailableActions' => 'Доступные действия',
|
||||
|
||||
'Menu:AuditCategories' => 'Категории аудита',
|
||||
'Menu:AuditCategories+' => 'Категории аудита',
|
||||
'Menu:Notifications:Title' => 'Категории аудита',
|
||||
|
||||
'Menu:RunQueriesMenu' => 'Выполнение запросов',
|
||||
'Menu:RunQueriesMenu+' => 'Выполнение любых запросов',
|
||||
|
||||
'Menu:DataAdministration' => 'Административные данные',
|
||||
'Menu:DataAdministration+' => 'Административные данные',
|
||||
|
||||
'Menu:UniversalSearchMenu' => 'Универсальный поиск',
|
||||
'Menu:UniversalSearchMenu+' => 'Поиск чего угодно...',
|
||||
|
||||
'Menu:ApplicationLogMenu' => 'Логгирование приложения',
|
||||
'Menu:ApplicationLogMenu+' => 'Логгирование приложения',
|
||||
'Menu:ApplicationLogMenu:Title' => 'Логгирование приложения',
|
||||
|
||||
'Menu:UserManagementMenu' => 'Управление пользователями',
|
||||
'Menu:UserManagementMenu+' => 'Управление пользователями',
|
||||
|
||||
'Menu:ProfilesMenu' => 'Профили',
|
||||
'Menu:ProfilesMenu+' => 'Профили',
|
||||
'Menu:ProfilesMenu:Title' => 'Профили',
|
||||
|
||||
'Menu:UserAccountsMenu' => 'Учетные записи пользователей',
|
||||
'Menu:UserAccountsMenu+' => 'Учетные записи пользователей',
|
||||
'Menu:UserAccountsMenu:Title' => 'Учетные записи пользователей',
|
||||
|
||||
'UI:iTopVersion:Short' => 'iTop версия %1$s',
|
||||
'UI:iTopVersion:Long' => 'iTop версия %1$s-%2$s основан на %3$s',
|
||||
'UI:PropertiesTab' => 'Свойства',
|
||||
|
||||
'UI:OpenDocumentInNewWindow_' => 'Открыть этот документ в новом окне: %1$s',
|
||||
'UI:DownloadDocument_' => 'Скачать этот документ: %1$s',
|
||||
'UI:Document:NoPreview' => 'Не доступен предварительный просомтр для документов данного типа',
|
||||
|
||||
'UI:DeadlineMissedBy_duration' => 'Пропущен %1$s',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 мин',
|
||||
'UI:Deadline_Minutes' => '%1$d мин',
|
||||
'UI:Deadline_Hours_Minutes' => '%1$dч %2$dмин',
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$dд %2$dч %3$dмин',
|
||||
'UI:Help' => 'Помощь',
|
||||
'UI:PasswordConfirm' => '(Подтвердить)',
|
||||
'UI:BeforeAdding_Class_ObjectsSaveThisObject' => 'Перед добавлением %1$s объектво, сохраните этот объект.',
|
||||
'UI:DisplayThisMessageAtStartup' => 'Показать это сообщение при запуске',
|
||||
'UI:RelationshipGraph' => 'Графический вид',
|
||||
'UI:RelationshipList' => 'Список',
|
||||
|
||||
'Portal:Title' => 'Пользовательский iTop портал',
|
||||
'Portal:Refresh' => 'Обновить',
|
||||
'Portal:Back' => 'Назад',
|
||||
'Portal:CreateNewRequest' => 'Создать новый запрос',
|
||||
'Portal:ChangeMyPassword' => 'Изменить мой пароль',
|
||||
'Portal:Disconnect' => 'Отключить',
|
||||
'Portal:OpenRequests' => 'Мои открытые запросы',
|
||||
'Portal:ResolvedRequests' => 'Мои решённые запросы',
|
||||
'Portal:SelectService' => 'Выбери сервис из каталога:',
|
||||
'Portal:PleaseSelectOneService' => 'Необходимо выбрать хотя-бы один сервис',
|
||||
'Portal:SelectSubcategoryFrom_Service' => 'Выбери под-категорию для сервиса %1$s:',
|
||||
'Portal:PleaseSelectAServiceSubCategory' => 'Необходимо выбрать одну под-категорию',
|
||||
'Portal:DescriptionOfTheRequest' => 'Введи описание запроса:',
|
||||
'Portal:TitleRequestDetailsFor_Request' => 'Подробности запроса %1$s:',
|
||||
'Portal:NoOpenRequest' => 'Нет запросов в этой категории.',
|
||||
'Portal:Button:CloseTicket' => 'Закрыть этот "тикет"',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'Введите ваши каментарии по решению этого "тикета":',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Ошибка: текющий пользователь не ассоциирован с Контактом/Человеком. Пожалуйста свяжитесь с вашим администратором.',
|
||||
|
||||
'Enum:Undefined' => 'Неопределён',
|
||||
));
|
||||
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,386 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Izzet Sirin <izzet.sirin@htr.com.tr>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: CMDBChange
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChange' => 'Değişiklik',
|
||||
'Class:CMDBChange+' => 'Değişiklik izleme',
|
||||
'Class:CMDBChange/Attribute:date' => 'tarih',
|
||||
'Class:CMDBChange/Attribute:date+' => 'değişikliğin yapıldığı tarih',
|
||||
'Class:CMDBChange/Attribute:userinfo' => 'diğer bilgiler',
|
||||
'Class:CMDBChange/Attribute:userinfo+' => 'ilave bilgiler',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOp
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOp' => 'Değişiklik işlemi',
|
||||
'Class:CMDBChangeOp+' => 'Değişiklik izleme',
|
||||
'Class:CMDBChangeOp/Attribute:change' => 'değişiklik',
|
||||
'Class:CMDBChangeOp/Attribute:change+' => 'değişiklik',
|
||||
'Class:CMDBChangeOp/Attribute:date' => 'tarih',
|
||||
'Class:CMDBChangeOp/Attribute:date+' => 'değişikliğin yapıldığı zaman',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo' => 'kullanıcı',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo+' => 'değişikliğ yapan',
|
||||
'Class:CMDBChangeOp/Attribute:objclass' => 'nesne sınıfı',
|
||||
'Class:CMDBChangeOp/Attribute:objclass+' => 'nesne sınıfı',
|
||||
'Class:CMDBChangeOp/Attribute:objkey' => 'nesne no',
|
||||
'Class:CMDBChangeOp/Attribute:objkey+' => 'nesne no',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass' => 'tip',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpCreate
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOpCreate' => 'nesne yaratımı',
|
||||
'Class:CMDBChangeOpCreate+' => 'Nesne Yaratım izleme',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpDelete
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOpDelete' => 'nesne silimi',
|
||||
'Class:CMDBChangeOpDelete+' => 'Nesne silme izleme',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttribute
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOpSetAttribute' => 'nesne değişikliği',
|
||||
'Class:CMDBChangeOpSetAttribute+' => 'Nesne değişiminin izlemesi',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode' => 'Özellik',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode+' => 'Değişen özelliğin kodu',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeScalar
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOpSetAttributeScalar' => 'özellik değişimi',
|
||||
'Class:CMDBChangeOpSetAttributeScalar+' => 'Nesne özellik değişimi izleme',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue' => 'Önceki değer',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue+' => 'önceki değer',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue' => 'Yeni değer',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue+' => 'yeni değer',
|
||||
));
|
||||
// Used by CMDBChangeOp... & derived classes
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Change:ObjectCreated' => 'Nesne yaratıldı',
|
||||
'Change:ObjectDeleted' => 'Nesne silindi',
|
||||
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$s\'nin değeri %2$s olarak atandı (önceki değer: %3$s)',
|
||||
'Change:Text_AppendedTo_AttName' => '%2$s\'ye %1$s eklendi',
|
||||
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$\'nin değeri deiştirildi, önceki değer: %2$s',
|
||||
'Change:AttName_Changed' => '%1$s değiştirildi',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeBlob
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOpSetAttributeBlob' => 'tarih değişimi',
|
||||
'Class:CMDBChangeOpSetAttributeBlob+' => 'tarih değişim izleme',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => 'Önceki veri',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => 'önceki değer',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeText
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:CMDBChangeOpSetAttributeText' => 'metin değişikliği',
|
||||
'Class:CMDBChangeOpSetAttributeText+' => 'metin değişikliği izleme',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => 'Önceki veri',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => 'önceki değer',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Event
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:Event' => 'Olay kaydı',
|
||||
'Class:Event+' => 'Uygulama olayı',
|
||||
'Class:Event/Attribute:message' => 'mesaj',
|
||||
'Class:Event/Attribute:message+' => 'Olay tanımlama',
|
||||
'Class:Event/Attribute:date' => 'tarih',
|
||||
'Class:Event/Attribute:date+' => 'değişiklik tarihi',
|
||||
'Class:Event/Attribute:userinfo' => 'kullanıcı bigileri',
|
||||
'Class:Event/Attribute:userinfo+' => 'olay anındaki kullanıcı',
|
||||
'Class:Event/Attribute:finalclass' => 'tip',
|
||||
'Class:Event/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotification
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:EventNotification' => 'Olay uyarımı',
|
||||
'Class:EventNotification+' => 'Uyarının tarihçesi',
|
||||
'Class:EventNotification/Attribute:trigger_id' => 'Uyarı tetikçisi',
|
||||
'Class:EventNotification/Attribute:trigger_id+' => 'kullanıcı hesabı',
|
||||
'Class:EventNotification/Attribute:action_id' => 'kullanıcı',
|
||||
'Class:EventNotification/Attribute:action_id+' => 'kullanıcı hesabı',
|
||||
'Class:EventNotification/Attribute:object_id' => 'Nesne belirleyicisi',
|
||||
'Class:EventNotification/Attribute:object_id+' => 'nesne belirleyicisi (olayı tetikleyen nesne ?)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotificationEmail
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:EventNotificationEmail' => 'E-posta gönderim işlemi',
|
||||
'Class:EventNotificationEmail+' => 'Gönderilen E-posta tarihçesi',
|
||||
'Class:EventNotificationEmail/Attribute:to' => 'Kime',
|
||||
'Class:EventNotificationEmail/Attribute:to+' => 'Kime',
|
||||
'Class:EventNotificationEmail/Attribute:cc' => 'Kopya',
|
||||
'Class:EventNotificationEmail/Attribute:cc+' => 'Kopya',
|
||||
'Class:EventNotificationEmail/Attribute:bcc' => 'Gizli Kopya',
|
||||
'Class:EventNotificationEmail/Attribute:bcc+' => 'Gizli Kopya',
|
||||
'Class:EventNotificationEmail/Attribute:from' => 'Kimden',
|
||||
'Class:EventNotificationEmail/Attribute:from+' => 'Mesajı gönderen',
|
||||
'Class:EventNotificationEmail/Attribute:subject' => 'Konu',
|
||||
'Class:EventNotificationEmail/Attribute:subject+' => 'Konu',
|
||||
'Class:EventNotificationEmail/Attribute:body' => 'Mesaj',
|
||||
'Class:EventNotificationEmail/Attribute:body+' => 'Mesaj',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventIssue
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:EventIssue' => 'Olay ekle',
|
||||
'Class:EventIssue+' => 'Olay tipi (uyarı, hata, vb.)',
|
||||
'Class:EventIssue/Attribute:issue' => 'Konu',
|
||||
'Class:EventIssue/Attribute:issue+' => 'Olan',
|
||||
'Class:EventIssue/Attribute:impact' => 'Etkisi',
|
||||
'Class:EventIssue/Attribute:impact+' => 'Sonuçları',
|
||||
'Class:EventIssue/Attribute:page' => 'Sayfa',
|
||||
'Class:EventIssue/Attribute:page+' => 'HTTP giriş noktası',
|
||||
'Class:EventIssue/Attribute:arguments_post' => 'Verilen değişkenlerin değerleri',
|
||||
'Class:EventIssue/Attribute:arguments_post+' => 'HTTP değişken değerleri',
|
||||
'Class:EventIssue/Attribute:arguments_get' => 'URL POST değişken değerleri',
|
||||
'Class:EventIssue/Attribute:arguments_get+' => 'HTTP GET değişken değerleri',
|
||||
'Class:EventIssue/Attribute:callstack' => 'Çağrım sırası',
|
||||
'Class:EventIssue/Attribute:callstack+' => 'Çağrım sırası',
|
||||
'Class:EventIssue/Attribute:data' => 'Veri',
|
||||
'Class:EventIssue/Attribute:data+' => 'Diğer bilgiler',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventWebService
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:EventWebService' => 'Web service olayı',
|
||||
'Class:EventWebService+' => 'web service çağrım sırası',
|
||||
'Class:EventWebService/Attribute:verb' => 'Fiil',
|
||||
'Class:EventWebService/Attribute:verb+' => 'Operasyonun adı',
|
||||
'Class:EventWebService/Attribute:result' => 'Sonuç',
|
||||
'Class:EventWebService/Attribute:result+' => 'Genel başarı/başarısızlık',
|
||||
'Class:EventWebService/Attribute:log_info' => 'Bilgi kaydı',
|
||||
'Class:EventWebService/Attribute:log_info+' => 'Sonuç bilgi kaydı',
|
||||
'Class:EventWebService/Attribute:log_warning' => 'Uyarı kaydı',
|
||||
'Class:EventWebService/Attribute:log_warning+' => 'Sonuç uyarı kaydı',
|
||||
'Class:EventWebService/Attribute:log_error' => 'Hata kaydı',
|
||||
'Class:EventWebService/Attribute:log_error+' => 'Sonuç hata kaydı',
|
||||
'Class:EventWebService/Attribute:data' => 'Veri',
|
||||
'Class:EventWebService/Attribute:data+' => 'Sonuç veri',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Action
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:Action' => 'Özel işlem',
|
||||
'Class:Action+' => 'Kullanıcının tanımladığı işlemler',
|
||||
'Class:Action/Attribute:name' => 'Adı',
|
||||
'Class:Action/Attribute:name+' => '',
|
||||
'Class:Action/Attribute:description' => 'Tanımlama',
|
||||
'Class:Action/Attribute:description+' => '',
|
||||
'Class:Action/Attribute:status' => 'Durum',
|
||||
'Class:Action/Attribute:status+' => 'Kullanımda mı?',
|
||||
'Class:Action/Attribute:status/Value:test' => 'Test aşamasında',
|
||||
'Class:Action/Attribute:status/Value:test+' => 'Test aşamasında',
|
||||
'Class:Action/Attribute:status/Value:enabled' => 'Kullanımda',
|
||||
'Class:Action/Attribute:status/Value:enabled+' => 'Kullanımda',
|
||||
'Class:Action/Attribute:status/Value:disabled' => 'Etkin değil',
|
||||
'Class:Action/Attribute:status/Value:disabled+' => 'Etkin değil',
|
||||
'Class:Action/Attribute:trigger_list' => 'İlgili tetikleyiciler',
|
||||
'Class:Action/Attribute:trigger_list+' => 'İşleme bağlı tetikleyici',
|
||||
'Class:Action/Attribute:finalclass' => 'Tip',
|
||||
'Class:Action/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionNotification
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:ActionNotification' => 'Bildirim',
|
||||
'Class:ActionNotification+' => 'Bildirim (soyut)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionEmail
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:ActionEmail' => 'E-posta bildirimi',
|
||||
'Class:ActionEmail+' => '',
|
||||
'Class:ActionEmail/Attribute:test_recipient' => 'Test alıcısı',
|
||||
'Class:ActionEmail/Attribute:test_recipient+' => 'Durumu "Test" olması durumundaki alıcı',
|
||||
'Class:ActionEmail/Attribute:from' => 'Kimden',
|
||||
'Class:ActionEmail/Attribute:from+' => 'e-posta başlığında gönderilecek',
|
||||
'Class:ActionEmail/Attribute:reply_to' => 'Yanıtla',
|
||||
'Class:ActionEmail/Attribute:reply_to+' => 'e-posta başlığında gönderilecek',
|
||||
'Class:ActionEmail/Attribute:to' => 'Kime',
|
||||
'Class:ActionEmail/Attribute:to+' => 'E-posta alıcısı',
|
||||
'Class:ActionEmail/Attribute:cc' => 'Kopya',
|
||||
'Class:ActionEmail/Attribute:cc+' => 'Kopya',
|
||||
'Class:ActionEmail/Attribute:bcc' => 'gizli kopya',
|
||||
'Class:ActionEmail/Attribute:bcc+' => 'Gizli alıcı',
|
||||
'Class:ActionEmail/Attribute:subject' => 'konu',
|
||||
'Class:ActionEmail/Attribute:subject+' => 'E-posta konusu',
|
||||
'Class:ActionEmail/Attribute:body' => 'E-posta içeriği',
|
||||
'Class:ActionEmail/Attribute:body+' => 'E-posta içeriği',
|
||||
'Class:ActionEmail/Attribute:importance' => 'önem derecesi',
|
||||
'Class:ActionEmail/Attribute:importance+' => 'önem derecesi',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low' => 'düşük',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low+' => 'düşük',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal' => 'normal',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal+' => 'normal',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high' => 'yüksek',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high+' => 'yüksek',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Trigger
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:Trigger' => 'Tetikleyici',
|
||||
'Class:Trigger+' => 'Özel olay yürütücü',
|
||||
'Class:Trigger/Attribute:description' => 'Tanımlama',
|
||||
'Class:Trigger/Attribute:description+' => 'tek satır tanımlama',
|
||||
'Class:Trigger/Attribute:action_list' => 'Tetiklenen işlemler',
|
||||
'Class:Trigger/Attribute:action_list+' => 'Tetiklenen işlemler',
|
||||
'Class:Trigger/Attribute:finalclass' => 'Tip',
|
||||
'Class:Trigger/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObject
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:TriggerOnObject' => 'Tetiklenen (sınıf bağımlılığı)',
|
||||
'Class:TriggerOnObject+' => 'Verilen sınıflar üzerinde işlemleri gerçekleştir',
|
||||
'Class:TriggerOnObject/Attribute:target_class' => 'Hedef sınıf',
|
||||
'Class:TriggerOnObject/Attribute:target_class+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateChange
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:TriggerOnStateChange' => 'Tetiklenen (durum değişikliğinde)',
|
||||
'Class:TriggerOnStateChange+' => 'Durum değişikliğinde tetiklenen işlemler',
|
||||
'Class:TriggerOnStateChange/Attribute:state' => 'Durum',
|
||||
'Class:TriggerOnStateChange/Attribute:state+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateEnter
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:TriggerOnStateEnter' => 'Tetiklenen (duruma girişte)',
|
||||
'Class:TriggerOnStateEnter+' => 'Durum değişikliğinde tetiklenen işlemler (duruma giriş)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateLeave
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:TriggerOnStateLeave' => 'Tetiklenen (durum çıkışında)',
|
||||
'Class:TriggerOnStateLeave+' => 'Durum değişikliğinde tetiklenen işlemler (duruma çıkış)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObjectCreate
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:TriggerOnObjectCreate' => 'Tetiklenen (nesne yaratımında)',
|
||||
'Class:TriggerOnObjectCreate+' => 'Verilen sınıf tipi nesne yaratımında tetiklenen işlemler',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTriggerAction
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:lnkTriggerAction' => 'İşlem/Tetikleme',
|
||||
'Class:lnkTriggerAction+' => 'Tetikleme ve işlem arasındaki ilişki',
|
||||
'Class:lnkTriggerAction/Attribute:action_id' => 'İşlem',
|
||||
'Class:lnkTriggerAction/Attribute:action_id+' => 'Yapılacak işlem',
|
||||
'Class:lnkTriggerAction/Attribute:action_name' => 'İşlem',
|
||||
'Class:lnkTriggerAction/Attribute:action_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id' => 'Tetikleme',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name' => 'Tetikleme',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:order' => 'Order',
|
||||
'Class:lnkTriggerAction/Attribute:order+' => 'İşlem uygulama sırası',
|
||||
));
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,869 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Izzet Sirin <izzet.sirin@htr.com.tr>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'gui'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'application'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: AuditCategory
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:AuditCategory' => 'Denetleme Kategorisi',
|
||||
'Class:AuditCategory+' => 'Denetlemedeki kategori',
|
||||
'Class:AuditCategory/Attribute:name' => 'Kategori Adı',
|
||||
'Class:AuditCategory/Attribute:name+' => 'Kategornin kısa adı',
|
||||
'Class:AuditCategory/Attribute:description' => 'Kategori tanımlaması',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Kategori tanımlaması',
|
||||
'Class:AuditCategory/Attribute:definition_set' => 'Tanımlama seti',
|
||||
'Class:AuditCategory/Attribute:definition_set+' => 'Denetlenecek nesneler için OQL ifadesi',
|
||||
'Class:AuditCategory/Attribute:rules_list' => 'Denetlem kuralları',
|
||||
'Class:AuditCategory/Attribute:rules_list+' => 'Kategori için denetleme kuralları',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: AuditRule
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:AuditRule' => 'Denetleme Kuralı',
|
||||
'Class:AuditRule+' => 'Denetleme Kategorisi kuralı',
|
||||
'Class:AuditRule/Attribute:name' => 'Kural Adı',
|
||||
'Class:AuditRule/Attribute:name+' => 'Kural Adı',
|
||||
'Class:AuditRule/Attribute:description' => 'Kural tanımlaması',
|
||||
'Class:AuditRule/Attribute:description+' => 'Kural tanımlaması',
|
||||
'Class:AuditRule/Attribute:query' => 'Çalıştırılacak Sorgu',
|
||||
'Class:AuditRule/Attribute:query+' => 'Çalıştırılcak OQL ifadesi',
|
||||
'Class:AuditRule/Attribute:valid_flag' => 'Geçerli nesneler?',
|
||||
'Class:AuditRule/Attribute:valid_flag+' => 'Kural geçerli nesne döndürüse doğru, diğer durumda yanlış',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true' => 'doğru',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true+' => 'doğru',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false' => 'yanlış',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false+' => 'yanlış',
|
||||
'Class:AuditRule/Attribute:category_id' => 'Kategori',
|
||||
'Class:AuditRule/Attribute:category_id+' => 'Kuralın kategorisi',
|
||||
'Class:AuditRule/Attribute:category_name' => 'Kategori',
|
||||
'Class:AuditRule/Attribute:category_name+' => 'Kural için kategori adı',
|
||||
));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'addon/userrights'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: User
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:User' => 'Kullanıcı',
|
||||
'Class:User+' => 'Kullanıcı',
|
||||
'Class:User/Attribute:finalclass' => 'Hesap tipi',
|
||||
'Class:User/Attribute:finalclass+' => '',
|
||||
'Class:User/Attribute:contactid' => 'İrtibat (kişi)',
|
||||
'Class:User/Attribute:contactid+' => 'İrtibat detayları',
|
||||
'Class:User/Attribute:last_name' => 'Soyadı',
|
||||
'Class:User/Attribute:last_name+' => 'İrtibatın soyadı',
|
||||
'Class:User/Attribute:first_name' => 'Adı',
|
||||
'Class:User/Attribute:first_name+' => 'İrtibatın adı',
|
||||
'Class:User/Attribute:email' => 'E-posta',
|
||||
'Class:User/Attribute:email+' => 'Kişinin e-posta adresi',
|
||||
'Class:User/Attribute:login' => 'Kullanıcı adı',
|
||||
'Class:User/Attribute:login+' => 'Kullanıcı adı',
|
||||
'Class:User/Attribute:language' => 'Dil',
|
||||
'Class:User/Attribute:language+' => 'Dil',
|
||||
'Class:User/Attribute:language/Value:EN US' => 'English',
|
||||
'Class:User/Attribute:language/Value:EN US+' => 'English (U.S.)',
|
||||
'Class:User/Attribute:language/Value:FR FR' => 'French',
|
||||
'Class:User/Attribute:language/Value:FR FR+' => 'French (France)',
|
||||
'Class:User/Attribute:language/Value:TR TR' => 'Turkish',
|
||||
'Class:User/Attribute:language/Value:TR TR+' => 'Turkish (Turkey)',
|
||||
'Class:User/Attribute:profile_list' => 'Profiller',
|
||||
'Class:User/Attribute:profile_list+' => 'Kullanıcı rolü',
|
||||
'Class:User/Attribute:allowed_org_list' => 'Erişim yetkisi verilen kurumlar',
|
||||
'Class:User/Attribute:allowed_org_list+' => 'Kullanıcın erişime yetkili olduğu kurumlar. Kurum tanımlanmaz ise sınırlama olmaz.',
|
||||
|
||||
'Class:User/Error:LoginMustBeUnique' => 'Kullanıcı adı tekil olmalı - "%1s" mevcut bir kullanıcıya ait.',
|
||||
'Class:User/Error:AtLeastOneProfileIsNeeded' => 'En az bir profil kullanıcıya atanmalı',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Profiles
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_Profiles' => 'Profil',
|
||||
'Class:URP_Profiles+' => 'Kullanıcı profili',
|
||||
'Class:URP_Profiles/Attribute:name' => 'Adı',
|
||||
'Class:URP_Profiles/Attribute:name+' => 'Profil adı',
|
||||
'Class:URP_Profiles/Attribute:description' => 'Tanımlama',
|
||||
'Class:URP_Profiles/Attribute:description+' => 'Profil tanımlama',
|
||||
'Class:URP_Profiles/Attribute:user_list' => 'Kullanıcılar',
|
||||
'Class:URP_Profiles/Attribute:user_list+' => 'bu rolü kullanan kullanıcılar',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Dimensions
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_Dimensions' => 'boyut',
|
||||
'Class:URP_Dimensions+' => 'uygulama boyutları (silo kullanımları)',
|
||||
'Class:URP_Dimensions/Attribute:name' => 'Adı',
|
||||
'Class:URP_Dimensions/Attribute:name+' => 'Boyut adı',
|
||||
'Class:URP_Dimensions/Attribute:description' => 'Tanımlama',
|
||||
'Class:URP_Dimensions/Attribute:description+' => 'Tanımlama',
|
||||
'Class:URP_Dimensions/Attribute:type' => 'Tip',
|
||||
'Class:URP_Dimensions/Attribute:type+' => 'sınıf adı veya veri tipi (projection unit)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserProfile
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_UserProfile' => 'Kullanıcı Profili',
|
||||
'Class:URP_UserProfile+' => 'Kullanıcı Profili',
|
||||
'Class:URP_UserProfile/Attribute:userid' => 'Kullanıcı',
|
||||
'Class:URP_UserProfile/Attribute:userid+' => 'Kullanıcı hesabı',
|
||||
'Class:URP_UserProfile/Attribute:userlogin' => 'Kullanıcı adı',
|
||||
'Class:URP_UserProfile/Attribute:userlogin+' => 'Kullanıcı hesabı',
|
||||
'Class:URP_UserProfile/Attribute:profileid' => 'Profil',
|
||||
'Class:URP_UserProfile/Attribute:profileid+' => 'Kullanıcı profili',
|
||||
'Class:URP_UserProfile/Attribute:profile' => 'Profil',
|
||||
'Class:URP_UserProfile/Attribute:profile+' => 'Profil adı',
|
||||
'Class:URP_UserProfile/Attribute:reason' => 'Sebep',
|
||||
'Class:URP_UserProfile/Attribute:reason+' => 'Kullanıcının bu rolü alma sebebini açıklayınız',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserOrg
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_UserOrg' => 'Kullanıcı Kurumu',
|
||||
'Class:URP_UserOrg+' => 'İzin verilen kurumlar',
|
||||
'Class:URP_UserOrg/Attribute:userid' => 'Kullanıcı',
|
||||
'Class:URP_UserOrg/Attribute:userid+' => 'Kullanıcı hesabı',
|
||||
'Class:URP_UserOrg/Attribute:userlogin' => 'Kullanıcı',
|
||||
'Class:URP_UserOrg/Attribute:userlogin+' => 'Kullanıcı hesabı',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_id' => 'Kurum',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_id+' => 'Erişim yetkisi kurumlar',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_name' => 'Kurumu',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_name+' => 'Erişim yetkisi verilen kurumlar',
|
||||
'Class:URP_UserOrg/Attribute:reason' => 'Sebep',
|
||||
'Class:URP_UserOrg/Attribute:reason+' => 'Kullanıcının bu rolü alma sebebini açıklayınız',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ProfileProjection
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_ProfileProjection' => 'profile_projection',
|
||||
'Class:URP_ProfileProjection+' => 'profile projections',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid' => 'Boyut',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid+' => 'uygulama boyutu',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension' => 'Boyut',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension+' => 'uygulama boyutu',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid' => 'Profil',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid+' => 'profil kullanımı',
|
||||
'Class:URP_ProfileProjection/Attribute:profile' => 'Profil',
|
||||
'Class:URP_ProfileProjection/Attribute:profile+' => 'Profil adı',
|
||||
'Class:URP_ProfileProjection/Attribute:value' => 'Değer ifadesi',
|
||||
'Class:URP_ProfileProjection/Attribute:value+' => 'OQL ifadesi (kullanıcı $user) | sabit | | +özellik kodu',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute' => 'Attribute',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute+' => 'Hedef özellik kodu (opsiyonel)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ClassProjection
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_ClassProjection' => 'sınıf projeksiyonu',
|
||||
'Class:URP_ClassProjection+' => 'sınıf projeksiyonu',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid' => 'Boyut',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid+' => 'uygulama boyutu',
|
||||
'Class:URP_ClassProjection/Attribute:dimension' => 'Boyut',
|
||||
'Class:URP_ClassProjection/Attribute:dimension+' => 'uygulama boyutu',
|
||||
'Class:URP_ClassProjection/Attribute:class' => 'Sınıf',
|
||||
'Class:URP_ClassProjection/Attribute:class+' => 'Hedef sınıf',
|
||||
'Class:URP_ClassProjection/Attribute:value' => 'Değer ifadesi',
|
||||
'Class:URP_ClassProjection/Attribute:value+' => 'OQL ifadesi (kullanıcı $user) | sabit | | +özellik kodu',
|
||||
'Class:URP_ClassProjection/Attribute:attribute' => 'Özellik',
|
||||
'Class:URP_ClassProjection/Attribute:attribute+' => 'Hedef özellik kodu (opsiyonel)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ActionGrant
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_ActionGrant' => 'işlem yetkileri',
|
||||
'Class:URP_ActionGrant+' => 'sınıf üzerindeki yetkiler',
|
||||
'Class:URP_ActionGrant/Attribute:profileid' => 'Profil',
|
||||
'Class:URP_ActionGrant/Attribute:profileid+' => 'Kullanım profili',
|
||||
'Class:URP_ActionGrant/Attribute:profile' => 'Profil',
|
||||
'Class:URP_ActionGrant/Attribute:profile+' => 'Kullanım profili',
|
||||
'Class:URP_ActionGrant/Attribute:class' => 'Sınıf',
|
||||
'Class:URP_ActionGrant/Attribute:class+' => 'Hedef sınıf',
|
||||
'Class:URP_ActionGrant/Attribute:permission' => 'Erişim yetkisi',
|
||||
'Class:URP_ActionGrant/Attribute:permission+' => 'yetkili veya yetkisiz?',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes' => 'evet',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes+' => 'evet',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no' => 'hayır',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no+' => 'hayır',
|
||||
'Class:URP_ActionGrant/Attribute:action' => 'İşlem',
|
||||
'Class:URP_ActionGrant/Attribute:action+' => 'verilen sınıf üzerinde uygulanacak işlemler',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_StimulusGrant
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_StimulusGrant' => 'uyarı yetkileri',
|
||||
'Class:URP_StimulusGrant+' => 'nesnenin yaşam döngüsündeki uyarı yetkileri',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid' => 'Profil',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid+' => 'Kullanım profili',
|
||||
'Class:URP_StimulusGrant/Attribute:profile' => 'Profil',
|
||||
'Class:URP_StimulusGrant/Attribute:profile+' => 'Kullanım profili',
|
||||
'Class:URP_StimulusGrant/Attribute:class' => 'Sınıf',
|
||||
'Class:URP_StimulusGrant/Attribute:class+' => 'Hedef sınıf',
|
||||
'Class:URP_StimulusGrant/Attribute:permission' => 'Yetki',
|
||||
'Class:URP_StimulusGrant/Attribute:permission+' => 'yetkili veya yetkisiz?',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes' => 'evet',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes+' => 'evet',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no' => 'hayır',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no+' => 'hayır',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus' => 'Uyarı',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus+' => 'uyarı kodu',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_AttributeGrant
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Class:URP_AttributeGrant' => 'özellik yetkisi',
|
||||
'Class:URP_AttributeGrant+' => 'özellik seviyesinde yetki',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid' => 'İzin verilen işlem',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid+' => 'İşlem izni',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode' => 'Özellik',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode+' => 'Özellik kodu',
|
||||
));
|
||||
|
||||
//
|
||||
// String from the User Interface: menu, messages, buttons, etc...
|
||||
//
|
||||
|
||||
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
||||
'Menu:WelcomeMenu' => 'Hoşgeldiniz',
|
||||
'Menu:WelcomeMenu+' => 'iTop\'a Hoşgeldiniz',
|
||||
'Menu:WelcomeMenuPage' => 'Hoşgeldiniz',
|
||||
'Menu:WelcomeMenuPage+' => 'iTop\'a Hoşgeldiniz',
|
||||
'UI:WelcomeMenu:Title' => 'iTop\'a Hoşgeldiniz',
|
||||
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop açık kaynak Bilişim İşlem Potalıdır.</p>
|
||||
<ul>Kapsamı:
|
||||
<li>Bilişim altyapısının tanımlandığı ve dokümante edildiği Konfigürasyon Yönetimi CMDB (Configuration management database)modülü.</li>
|
||||
<li>Bilişim altyapısı ile ilgili tüm olayların takibi.</li>
|
||||
<li>Bilişim altyapısının değişim yönetimi.</li>
|
||||
<li>Bilinen hatalar bilgi kütüphanesi.</li>
|
||||
<li>Planlı kesintilerin kayıt altına alınması ve ilgililerin uyarılması.</li>
|
||||
<li>Özet gösterge ekranları</li>
|
||||
</ul>
|
||||
<p>Tüm modüller bağımsız olarak, adım adım kurulabilir.</p>',
|
||||
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop servis sağlayıcı maktığı ile hazırlanmış olup, birden fazla müşteri ve kuruma kolaylıkla hizmet vermeye imkan sağlar.
|
||||
<ul>iTop, zengin iş süreçleri tanımlama imkanıyla:
|
||||
<li>Bilişim yönetim etkinliğini</li>
|
||||
<li>Operasyon performansını</li>
|
||||
<li>Müşteri memnuniyetini ve yönetimin iş performansı hakkında bilgi sahibi olmasını sağlar.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>iTop mevcut Bilşim altyapınızla entegre edilmeye açıktır.</p>
|
||||
<p>
|
||||
<ul>Yeni nesil operasyonel Bilişim portalı :
|
||||
<li>Bilişim ortamının daha iyi yönetilmesini.</li>
|
||||
<li>ITIL süreçlerinin kendi başınıza uygulanmaya.</li>
|
||||
<li>İşletmenin en önemli kaynağı olan dokümantasyonu yönetmesine imkan sağlar.</li>
|
||||
</ul>
|
||||
</p>',
|
||||
'UI:WelcomeMenu:AllOpenRequests' => 'Açık istekler: %1$d',
|
||||
'UI:WelcomeMenu:MyCalls' => 'İsteklerim',
|
||||
'UI:WelcomeMenu:OpenIncidents' => 'Açık Arızalar: %1$d',
|
||||
'UI:WelcomeMenu:AllConfigItems' => 'Konfigürasyon Kalemleri: %1$d',
|
||||
'UI:WelcomeMenu:MyIncidents' => 'Bana atanan hatalar',
|
||||
'UI:AllOrganizations' => ' Tüm Kurumlar ',
|
||||
'UI:YourSearch' => 'Arama',
|
||||
'UI:LoggedAsMessage' => '%1$s kullanıcısı ile bağlanıldı',
|
||||
'UI:LoggedAsMessage+Admin' => '%1$s (Administrator) kullanıcısı ile bağlanıldı',
|
||||
'UI:Button:Logoff' => 'Çıkış',
|
||||
'UI:Button:GlobalSearch' => 'Arama',
|
||||
'UI:Button:Search' => ' Arama ',
|
||||
'UI:Button:Query' => ' Sorgu ',
|
||||
'UI:Button:Ok' => 'Tamam',
|
||||
'UI:Button:Cancel' => 'İptal',
|
||||
'UI:Button:Apply' => 'Uygula',
|
||||
'UI:Button:Back' => ' << Geri ',
|
||||
'UI:Button:Next' => ' İleri >> ',
|
||||
'UI:Button:Finish' => ' Bitir ',
|
||||
'UI:Button:DoImport' => ' Dışardan Veri alı çalıştır ! ',
|
||||
'UI:Button:Done' => ' Biiti ',
|
||||
'UI:Button:SimulateImport' => ' Veri alışını simule et ',
|
||||
'UI:Button:Test' => 'Test!',
|
||||
'UI:Button:Evaluate' => ' Değerlendir ',
|
||||
'UI:Button:AddObject' => ' Ekle... ',
|
||||
'UI:Button:BrowseObjects' => ' Listele... ',
|
||||
'UI:Button:Add' => ' Ekle ',
|
||||
'UI:Button:AddToList' => ' << Ekle ',
|
||||
'UI:Button:RemoveFromList' => ' Sil >> ',
|
||||
'UI:Button:FilterList' => ' Filtreleme... ',
|
||||
'UI:Button:Create' => ' Yarat ',
|
||||
'UI:Button:Delete' => ' Sil ! ',
|
||||
'UI:Button:ChangePassword' => ' Şifre değiştir ',
|
||||
'UI:Button:ResetPassword' => ' Şifreyi sıfırla ',
|
||||
|
||||
'UI:SearchToggle' => 'Ara',
|
||||
'UI:ClickToCreateNew' => 'Yeni %1$s yarat',
|
||||
'UI:SearchFor_Class' => '%1$s Arama',
|
||||
'UI:NoObjectToDisplay' => 'Görüntülenecek nesne bulunamadı.',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => 'link_attr tanımlandığında object_id alanı zorunludur. Görüntülme (Display) şablonun tanımlamasını kontrol ediniz.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => 'link_attr tanımlandığında target_attr alanı zorunludur. Görüntülme (Display) şablonun tanımlamasını kontrol ediniz.',
|
||||
'UI:Error:MandatoryTemplateParameter_group_by' => 'group_by alanı zorunludur. Görüntülme (Display) şablonun tanımlamasını kontrol ediniz.',
|
||||
'UI:Error:InvalidGroupByFields' => 'group by geçersiz alan listesi: "%1$s".',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => 'Hata: blok için desteklenmeyen stil: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => 'Hatalı ilişki tanımı: yönetilecek sınıfa: %1$s ait ilişki anahtarı (an external key) sınıfında %2$s bulunamadı',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Nesne: %1$s:%2$d bulunamadı.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => 'Hata: Alanlar arasında döngüsel bağımlılık (Circular reference in the dependencies) tespit edildi. Veri modelinizi kontrol ediniz.',
|
||||
'UI:Error:UploadedFileTooBig' => 'Yüklenmek istenen dosya çok büyük. (üst sınır %1$s). PHP configürasyonunu kontrol ediniz (upload_max_filesize ve post_max_size parametrelerini düzenleyiniz).',
|
||||
'UI:Error:UploadedFileTruncated.' => 'Yüklenen dosyanın tamamı yüklenemedi !',
|
||||
'UI:Error:NoTmpDir' => 'Gecici dizi (temporary directory) tanımlı değil.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => 'Geçici dosya diske yazılamadı. upload_tmp_dir = "%1$s".',
|
||||
'UI:Error:UploadStoppedByExtension_FileName' => 'Dosya yükleme dosya uzantısı nedeniyle duruduruldu. (Dosya adı = "%1$s").',
|
||||
'UI:Error:UploadFailedUnknownCause_Code' => 'Dosya yükleme bilinmeyen bir sebeple başarısız oldu. (Hata kodu = "%1$s").',
|
||||
|
||||
'UI:Error:1ParametersMissing' => 'Hata: Bu operasyon için %1$s parametresi tanımlanmalı.',
|
||||
'UI:Error:2ParametersMissing' => 'Hata: Bu operasyon için %1$s ve %2$s parametreleri tanımlanmalı.',
|
||||
'UI:Error:3ParametersMissing' => 'Hata: Bu operasyon için %1$s, %2$s ve %3$s parametreleri tanımlanmalı.',
|
||||
'UI:Error:4ParametersMissing' => 'Hata: Bu operasyon için %1$s, %2$s, %3$s ve %4$s parametreleri tanımlanmalı.',
|
||||
'UI:Error:IncorrectOQLQuery_Message' => 'Hata: hatalı OQL sorgusu: %1$s',
|
||||
'UI:Error:AnErrorOccuredWhileRunningTheQuery_Message' => 'Sorgu sırasında hata oluştu: %1$s',
|
||||
'UI:Error:ObjectAlreadyUpdated' => 'Hata: nesne hali hazırda güncellendi.',
|
||||
'UI:Error:ObjectCannotBeUpdated' => 'Hata: nesne güncellenemedi.',
|
||||
'UI:Error:ObjectsAlreadyDeleted' => 'Hata: nesne hali hazırda silinmiş!',
|
||||
'UI:Error:BulkDeleteNotAllowedOn_Class' => '%1$s sınıfına ait nesnelerin toplu silimine yetkiniz yok.',
|
||||
'UI:Error:DeleteNotAllowedOn_Class' => '%1$s sınıfına ait nesnelerin silimine yetkiniz yok.',
|
||||
'UI:Error:BulkModifyNotAllowedOn_Class' => '%1$s sınıfına ait nesnelerin toplu güncellenmesine yetkiniz yok.',
|
||||
'UI:Error:ObjectAlreadyCloned' => 'Hata: nesne hali hazırda klonlanmış!',
|
||||
'UI:Error:ObjectAlreadyCreated' => 'Hata: nesne hali hazırda yaratılmış!',
|
||||
'UI:Error:Invalid_Stimulus_On_Object_In_State' => 'Hata: "%3$s" durumundaki %2$s nesnesi için "%1$s" uyarısı geçersizdir.',
|
||||
|
||||
|
||||
'UI:GroupBy:Count' => 'Say',
|
||||
'UI:GroupBy:Count+' => 'Eleman sayısı',
|
||||
'UI:CountOfObjects' => 'Kritere uyan %1$d nesne bulundu.',
|
||||
'UI_CountOfObjectsShort' => '%1$d nesne.',
|
||||
'UI:NoObject_Class_ToDisplay' => '%1$s nesne listelenecek',
|
||||
'UI:History:LastModified_On_By' => '%1$s tarihinde %2$s tarafından değiştirilmiş.',
|
||||
'UI:HistoryTab' => 'Tarihçe',
|
||||
'UI:NotificationsTab' => 'Uyarılar',
|
||||
'UI:History:Date' => 'Tarih',
|
||||
'UI:History:Date+' => 'Değişiklik tarihi',
|
||||
'UI:History:User' => 'Kullanıcı',
|
||||
'UI:History:User+' => 'Değişikliğ yapan kullanıcı',
|
||||
'UI:History:Changes' => 'Değişiklikler',
|
||||
'UI:History:Changes+' => 'Nesneye yapılan değişiklikler',
|
||||
'UI:Loading' => 'Yükleniyor...',
|
||||
'UI:Menu:Actions' => 'İşlemler',
|
||||
'UI:Menu:New' => 'Yeni...',
|
||||
'UI:Menu:Add' => 'Ekle...',
|
||||
'UI:Menu:Manage' => 'Yönet...',
|
||||
'UI:Menu:EMail' => 'e-posta',
|
||||
'UI:Menu:CSVExport' => 'CSV olarak dışarı ver',
|
||||
'UI:Menu:Modify' => 'Düzenle...',
|
||||
'UI:Menu:Delete' => 'Sil...',
|
||||
'UI:Menu:Manage' => 'Yönet...',
|
||||
'UI:Menu:BulkDelete' => 'Sil...',
|
||||
'UI:UndefinedObject' => 'tanımsız',
|
||||
'UI:Document:OpenInNewWindow:Download' => 'Yeni pencerede aç: %1$s, Karşıdan yükle: %2$s',
|
||||
'UI:SelectAllToggle+' => 'Tümünü Seç / Tümünü seçme',
|
||||
'UI:TruncatedResults' => '%1$d / %2$d',
|
||||
'UI:DisplayAll' => 'Hepsini göster',
|
||||
'UI:CollapseList' => 'Gizle',
|
||||
'UI:CountOfResults' => '%1$d nesne',
|
||||
'UI:ChangesLogTitle' => 'değişiklik kaydı (%1$d):',
|
||||
'UI:EmptyChangesLogTitle' => 'deiğişiklik kaydı boş',
|
||||
'UI:SearchFor_Class_Objects' => '%1$s nesnelerini ara',
|
||||
'UI:OQLQueryBuilderTitle' => 'OQL Sorgu hazırlama',
|
||||
'UI:OQLQueryTab' => 'OQL Sorgu',
|
||||
'UI:SimpleSearchTab' => 'Basit arama',
|
||||
'UI:Details+' => 'Detaylar',
|
||||
'UI:SearchValue:Any' => '* Herhangi *',
|
||||
'UI:SearchValue:Mixed' => '* karışık *',
|
||||
'UI:SelectOne' => '-- Birini seçiniz --',
|
||||
'UI:Login:Welcome' => 'iTop\'a Hoşgeldiniz!',
|
||||
'UI:Login:IncorrectLoginPassword' => 'Hatalı kullanıcı/şifre tekrar deneyiniz.',
|
||||
'UI:Login:IdentifyYourself' => 'Devam etmeden önce kendinizi tanıtınız',
|
||||
'UI:Login:UserNamePrompt' => 'Kullanıcı Adı',
|
||||
'UI:Login:PasswordPrompt' => 'Şifre',
|
||||
'UI:Login:ChangeYourPassword' => 'Şifre Değiştir',
|
||||
'UI:Login:OldPasswordPrompt' => 'Mevcut şifre',
|
||||
'UI:Login:NewPasswordPrompt' => 'Yeni şifre',
|
||||
'UI:Login:RetypeNewPasswordPrompt' => 'Yeni şifre tekrar',
|
||||
'UI:Login:IncorrectOldPassword' => 'Hata: mevcut şifre hatalı',
|
||||
'UI:LogOffMenu' => 'Çıkış',
|
||||
'UI:LogOff:ThankYou' => 'iTop Kullanıdığınız için teşekkürler',
|
||||
'UI:LogOff:ClickHereToLoginAgain' => 'Tekrar bağlanmak için tıklayınız...',
|
||||
'UI:ChangePwdMenu' => 'Şifre değiştir...',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => 'Yeni şifre eşlenmedi !',
|
||||
'UI:Button:Login' => 'iTop\'a Giriş',
|
||||
'UI:Login:Error:AccessRestricted' => 'iTop erişim sınırlandırıldı. Sistem yöneticisi ile irtibata geçiniz',
|
||||
'UI:Login:Error:AccessAdmin' => 'Erişim sistem yönetci hesaplaları ile mümkün. Sistem yöneticisi ile irtibata geçiniz.',
|
||||
'UI:CSVImport:MappingSelectOne' => '-- Birini seçiniz --',
|
||||
'UI:CSVImport:MappingNotApplicable' => '-- alanı ihmal et --',
|
||||
'UI:CSVImport:NoData' => 'Boş veri seti..., veri giriniz!',
|
||||
'UI:Title:DataPreview' => 'Veri öngörüntüleme',
|
||||
'UI:CSVImport:ErrorOnlyOneColumn' => 'Hata: Veri sadece bir kolon içeriyor. Doğru ayıraç karakteri seçtiniz mi ?',
|
||||
'UI:CSVImport:FieldName' => 'Alan %1$d',
|
||||
'UI:CSVImport:DataLine1' => 'Veri Satırı 1',
|
||||
'UI:CSVImport:DataLine2' => 'Veri Satırı 2',
|
||||
'UI:CSVImport:idField' => 'id (Tekil anahtar)',
|
||||
'UI:Title:BulkImport' => 'iTop - Toplu giriş',
|
||||
'UI:Title:BulkImport+' => 'CSV içeri aktarma aracı',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- Birini seçiniz --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => 'Hata: "%1$s" hatalı kod, çünkü "%2$s" ile "%3$s" tekil ilişkide değil',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d adet nesne değişmeyecek.',
|
||||
'UI:CSVImport:ObjectsWillBeModified' => '%1$d adet nesne değiştirilecek.',
|
||||
'UI:CSVImport:ObjectsWillBeAdded' => '%1$d adet nesne eklenecek.',
|
||||
'UI:CSVImport:ObjectsWillHaveErrors' => '%1$d adet nesnede hata oluştu.',
|
||||
'UI:CSVImport:ObjectsRemainedUnchanged' => '%1$d adet nesne değişmedi.',
|
||||
'UI:CSVImport:ObjectsWereModified' => '%1$d adet nesne güncellendi.',
|
||||
'UI:CSVImport:ObjectsWereAdded' => '%1$d adet nesne eklendi.',
|
||||
'UI:CSVImport:ObjectsHadErrors' => '%1$d adet nesnede hata tespit edildi.',
|
||||
'UI:Title:CSVImportStep2' => 'Step 2 of 5: CSV veri seçenekleri',
|
||||
'UI:Title:CSVImportStep3' => 'Step 3 of 5: Veri eşleme',
|
||||
'UI:Title:CSVImportStep4' => 'Step 4 of 5: Verinin içeri aktarım simülasyonu',
|
||||
'UI:Title:CSVImportStep5' => 'Step 5 of 5: İçeri aktarım tamamlandı',
|
||||
'UI:CSVImport:LinesNotImported' => 'Satırlar yüklenemedi:',
|
||||
'UI:CSVImport:LinesNotImported+' => 'Aşağıdaki satırlar hata nedeniyle yüklenemedi',
|
||||
'UI:CSVImport:SeparatorComma+' => ', (virgül)',
|
||||
'UI:CSVImport:SeparatorSemicolon+' => '; (noktalı virgül)',
|
||||
'UI:CSVImport:SeparatorTab+' => 'tab',
|
||||
'UI:CSVImport:SeparatorOther' => 'diğer:',
|
||||
'UI:CSVImport:QualifierDoubleQuote+' => '" (çift tırnak)',
|
||||
'UI:CSVImport:QualifierSimpleQuote+' => '\' (tırnak)',
|
||||
'UI:CSVImport:QualifierOther' => 'diğer:',
|
||||
'UI:CSVImport:TreatFirstLineAsHeader' => 'İlk satırı başlık olarak değerlendir(kolon isimleri)',
|
||||
'UI:CSVImport:Skip_N_LinesAtTheBeginning' => 'Skip %1$s line(s) at the beginning of the file',
|
||||
'UI:CSVImport:CSVDataPreview' => 'CSV Veri Görüntüleme',
|
||||
'UI:CSVImport:SelectFile' => 'İçeri aktarılacak dosyayı seçiniz:',
|
||||
'UI:CSVImport:Tab:LoadFromFile' => 'Dosyadan oku',
|
||||
'UI:CSVImport:Tab:CopyPaste' => 'Veriyi kopyala yapıştır',
|
||||
'UI:CSVImport:Tab:Templates' => 'Şablonlar',
|
||||
'UI:CSVImport:PasteData' => 'İçeri aktarılacak veriyi yapıştır:',
|
||||
'UI:CSVImport:PickClassForTemplate' => 'İndirilecek şablonu seçiniz: ',
|
||||
'UI:CSVImport:SeparatorCharacter' => 'Ayıraç karakteri:',
|
||||
'UI:CSVImport:TextQualifierCharacter' => 'Metin belirteç karakteri',
|
||||
'UI:CSVImport:CommentsAndHeader' => 'Yorum ve başlık',
|
||||
'UI:CSVImport:SelectClass' => 'İçeri aktarılacak sınıfı seçiniz:',
|
||||
'UI:CSVImport:AdvancedMode' => 'Uzman modu',
|
||||
'UI:CSVImport:AdvancedMode+' => 'Uzman modunda (In advanced mode) "id" (primary key) alanı nesnenin güncellenmesi ve adının değiştirilmesi için kullanılabilir.' .
|
||||
'"id" (mevcut ise) alanı tek sorgu kriteri olarak kullnılabilri ve diğer sorgu kriterleri ile birleştirilmez.',
|
||||
'UI:CSVImport:SelectAClassFirst' => 'Eşlemeyi yapmak için önce sınıfı seçiniz.',
|
||||
'UI:CSVImport:HeaderFields' => 'Alanlar',
|
||||
'UI:CSVImport:HeaderMappings' => 'Eşlemeler',
|
||||
'UI:CSVImport:HeaderSearch' => 'Arama?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => 'Lütfen tüm alanlar için alan eşlemesini yapınız.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => 'Lütfen en az bir sorgu kriteri seçiniz.',
|
||||
'UI:CSVImport:Encoding' => 'Karakter kodlaması',
|
||||
'UI:UniversalSearchTitle' => 'iTop - Genel arama',
|
||||
'UI:UniversalSearch:Error' => 'Hata: %1$s',
|
||||
'UI:UniversalSearch:LabelSelectTheClass' => 'Aranacak sınıfı seçiniz: ',
|
||||
|
||||
'UI:Audit:Title' => 'iTop - CMDB Denetleme',
|
||||
'UI:Audit:InteractiveAudit' => 'Etkileşimli Denetleme',
|
||||
'UI:Audit:HeaderAuditRule' => 'Denetleme Kuralı',
|
||||
'UI:Audit:HeaderNbObjects' => 'Nesne Sayısı',
|
||||
'UI:Audit:HeaderNbErrors' => 'Hata sayısı',
|
||||
'UI:Audit:PercentageOk' => '% Tamam',
|
||||
|
||||
'UI:RunQuery:Title' => 'iTop - OQL Sorgu değerlendirme',
|
||||
'UI:RunQuery:QueryExamples' => 'Sorgu örnekleri',
|
||||
'UI:RunQuery:HeaderPurpose' => 'Amaç',
|
||||
'UI:RunQuery:HeaderPurpose+' => 'Sorgu açıklaması',
|
||||
'UI:RunQuery:HeaderOQLExpression' => 'OQL ifadesi',
|
||||
'UI:RunQuery:HeaderOQLExpression+' => 'OQL yapısında sorgu',
|
||||
'UI:RunQuery:ExpressionToEvaluate' => 'Değerlendirilecek ifade: ',
|
||||
'UI:RunQuery:MoreInfo' => 'Sorgu hakkında detaylı bilgi: ',
|
||||
'UI:RunQuery:DevelopedQuery' => 'Yeniden düzenlenen sorgu: ',
|
||||
'UI:RunQuery:SerializedFilter' => 'Özel filtre: ',
|
||||
'UI:RunQuery:Error' => 'Sorgu sırasında hata oluştu: %1$s',
|
||||
|
||||
'UI:Schema:Title' => 'iTop objects schema',
|
||||
'UI:Schema:CategoryMenuItem' => 'Kategori <b>%1$s</b>',
|
||||
'UI:Schema:Relationships' => 'İlişkiler',
|
||||
'UI:Schema:AbstractClass' => 'Soyut sınıf: bu sınıftan nesne türetilemez.',
|
||||
'UI:Schema:NonAbstractClass' => 'Soyut olmayan sınıf: bu sınıftan nesne türetilebilir.',
|
||||
'UI:Schema:ClassHierarchyTitle' => 'Sınıf ilişkisi',
|
||||
'UI:Schema:AllClasses' => 'Tüm sınıflar',
|
||||
'UI:Schema:ExternalKey_To' => 'Harici anahtar %1$s',
|
||||
'UI:Schema:Columns_Description' => 'Kolonlar: <em>%1$s</em>',
|
||||
'UI:Schema:Default_Description' => 'Öndeğer: "%1$s"',
|
||||
'UI:Schema:NullAllowed' => 'Boş olamaz',
|
||||
'UI:Schema:NullNotAllowed' => 'Boş olabilir',
|
||||
'UI:Schema:Attributes' => 'Özellikler',
|
||||
'UI:Schema:AttributeCode' => 'Özellik kodu',
|
||||
'UI:Schema:AttributeCode+' => 'Özellik için dahili kod',
|
||||
'UI:Schema:Label' => 'Etiket',
|
||||
'UI:Schema:Label+' => 'Özellik etiketi',
|
||||
'UI:Schema:Type' => 'Tip',
|
||||
|
||||
'UI:Schema:Type+' => 'Özellik veri tipi',
|
||||
'UI:Schema:Origin' => 'Kaynak',
|
||||
'UI:Schema:Origin+' => 'Özelliğin tanımlandığı ana sınıf',
|
||||
'UI:Schema:Description' => 'Tanımlama',
|
||||
'UI:Schema:Description+' => 'Özellik tanımı',
|
||||
'UI:Schema:AllowedValues' => 'Alabileceği değerler',
|
||||
'UI:Schema:AllowedValues+' => 'Özelliğin alabileceği değer kısıtları',
|
||||
'UI:Schema:MoreInfo' => 'Daha fazla bilgi',
|
||||
'UI:Schema:MoreInfo+' => 'Veritabanında tanımlı alan için daha fazla bilgi',
|
||||
'UI:Schema:SearchCriteria' => 'Arama kriteri',
|
||||
'UI:Schema:FilterCode' => 'Filtreleme kodu',
|
||||
'UI:Schema:FilterCode+' => 'Arama kriter kodu',
|
||||
'UI:Schema:FilterDescription' => 'Tanımlama',
|
||||
'UI:Schema:FilterDescription+' => 'Arama kiter kodu tanılaması',
|
||||
'UI:Schema:AvailOperators' => 'Kullanılabilir işlemler',
|
||||
'UI:Schema:AvailOperators+' => 'Arama kriteri için kullanılabilir işlemler',
|
||||
'UI:Schema:ChildClasses' => 'Alt sınıflar',
|
||||
'UI:Schema:ReferencingClasses' => 'Refrans sınıflar',
|
||||
'UI:Schema:RelatedClasses' => 'İlgili sınıflar',
|
||||
'UI:Schema:LifeCycle' => 'yaşam döngüsü',
|
||||
'UI:Schema:Triggers' => 'Tetikleyiciler',
|
||||
'UI:Schema:Relation_Code_Description' => 'İlişki <em>%1$s</em> (%2$s)',
|
||||
'UI:Schema:RelationDown_Description' => 'Aşağı: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Yukarı: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: %2$d seviye öteler, sorgu: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: (%2$d seviye) ötelenmez, sorgu: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s %2$s\'nın %3$s alanı ile ilişkilendirilmiştir',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s alanı %3$s::<em>%4$s</em> aracılığı %2$s ile ilişkilendirilmiştir',
|
||||
'UI:Schema:Links:1-n' => 'Sınıf bağlantısı %1$s (1:n links):',
|
||||
'UI:Schema:Links:n-n' => 'Sınıf bağlantısı %1$s (n:n links):',
|
||||
'UI:Schema:Links:All' => 'İlişkili sınıfların grafiği',
|
||||
'UI:Schema:NoLifeCyle' => 'Bu sınıf için yaşam döngüsü tanımlanmamış.',
|
||||
'UI:Schema:LifeCycleTransitions' => 'Geçişler',
|
||||
'UI:Schema:LifeCyleAttributeOptions' => 'Özellik seçenekleri',
|
||||
'UI:Schema:LifeCycleHiddenAttribute' => 'Gizli',
|
||||
'UI:Schema:LifeCycleReadOnlyAttribute' => 'Salt okunur',
|
||||
'UI:Schema:LifeCycleMandatoryAttribute' => 'Zorunlu Alan',
|
||||
'UI:Schema:LifeCycleAttributeMustChange' => 'Değiştirilmesi gereken',
|
||||
'UI:Schema:LifeCycleAttributeMustPrompt' => 'Kullanıcıdan değeri değüiştirmesi istenir',
|
||||
'UI:Schema:LifeCycleEmptyList' => 'boş liste',
|
||||
|
||||
'UI:LinksWidget:Autocomplete+' => 'İlk 3 karakteri giriniz...',
|
||||
'UI:Combo:SelectValue' => '--- değer seçiniz ---',
|
||||
'UI:Label:SelectedObjects' => 'Seçilen nesneler: ',
|
||||
'UI:Label:AvailableObjects' => 'Seçilebilir nesneler: ',
|
||||
'UI:Link_Class_Attributes' => '%1$s özellikler',
|
||||
'UI:SelectAllToggle+' => 'Tümünü seç / Tümünü seçme',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => '%2$s: %3$s ile ilişkideki %1$s nesnelerini Ekle ',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class' => '%2$s ile %1$s arasında yeni bağlantı oluştur ',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => '%2$s: %3$s ile bağlantılı %1$s nesnelerini yönet ',
|
||||
'UI:AddLinkedObjectsOf_Class' => '%1$s nesnelerini ekle...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => 'Seçili nesnleri sil',
|
||||
'UI:Message:EmptyList:UseAdd' => 'Liste boş, Yeni nesne ekleme için "Yeni..." seçiniz.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => 'Eklemek istediğiniz nesneleri bulmak için yukarıdaki arama formunu kullanınız.',
|
||||
|
||||
'UI:Wizard:FinalStepTitle' => 'Final step: confirmation',
|
||||
'UI:Title:DeletionOf_Object' => '%1$s silimi',
|
||||
'UI:Title:BulkDeletionOf_Count_ObjectsOf_Class' => '%2$s sınıfına ait çoklu %1$d nesne silimi',
|
||||
'UI:Delete:NotAllowedToDelete' => 'Bu nesneyi silmek için yetkiniz yok',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => '%1$s alanlarını güncellemek için yetkiniz yok',
|
||||
'UI:Error:NotEnoughRightsToDelete' => 'Nesne yetersiz yetki nedeniyle silinemedi',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => 'Bu nesneyi silmek için öncelikli dışarıdan yapılması gereken işlemler var',
|
||||
'UI:Archive_User_OnBehalfOf_User' => '%1$s on behalf of %2$s',
|
||||
'UI:Delete:AutomaticallyDeleted' => 'otomatik olarak silindi',
|
||||
'UI:Delete:AutomaticResetOf_Fields' => '%1$s alanlarını otomatik sıfırla',
|
||||
'UI:Delete:CleaningUpRefencesTo_Object' => '%1$s nesnesine verilen tüm referansları temizle...',
|
||||
'UI:Delete:CleaningUpRefencesTo_Several_ObjectsOf_Class' => '%2$s sınıfına ait %1$d nesnesinin tüm referanslarını temizle ...',
|
||||
'UI:Delete:Done+' => 'Ne yapıldı...',
|
||||
'UI:Delete:_Name_Class_Deleted' => '%1$s - %2$s silindi.',
|
||||
'UI:Delete:ConfirmDeletionOf_Name' => '%1$s\'in silimi',
|
||||
'UI:Delete:ConfirmDeletionOf_Count_ObjectsOf_Class' => '%2$s sınıfına ait %1$d nesnelerinin silimi ',
|
||||
'UI:Delete:ShouldBeDeletedAtomaticallyButNotAllowed' => 'Otomatik silimesini mi istiyorsunuz, ancak buna yetkiniz yok',
|
||||
'UI:Delete:MustBeDeletedManuallyButNotAllowed' => 'Manuel silinmeli - ancak bu nesneyi silmeye yetkiniz yok, lütfen sistem yöneticisiyle irtibata geçiniz.',
|
||||
'UI:Delete:WillBeDeletedAutomatically' => 'Otomatik olarak silinecek',
|
||||
'UI:Delete:MustBeDeletedManually' => 'Manuel silinmeli',
|
||||
'UI:Delete:CannotUpdateBecause_Issue' => 'Otomatik güncellenmeli, ancak: %1$s',
|
||||
'UI:Delete:WillAutomaticallyUpdate_Fields' => 'otomatik güncellenecek (reset: %1$s)',
|
||||
'UI:Delete:Count_Objects/LinksReferencing_Object' => '%1$d nesne/ilişki %2$s\'yi referans ediyor',
|
||||
'UI:Delete:Count_Objects/LinksReferencingTheObjects' => '%1$d silinmek istenen nesne/bağlantıları referans veriyor',
|
||||
'UI:Delete:ReferencesMustBeDeletedToEnsureIntegrity' => 'Veri tabanı doğruluğu(Database integrity) için yeni referans verilmesi engellenmelidir',
|
||||
'UI:Delete:Consequence+' => 'Ne yapılacak',
|
||||
'UI:Delete:SorryDeletionNotAllowed' => 'Bu nesneyi silmeye yetkiniz yok, yukarıdaki açıklamayı bakınız',
|
||||
'UI:Delete:PleaseDoTheManualOperations' => 'Bu nesneyi silmeden önce yukarıdaki işlemleri manuel olarak yapınız',
|
||||
'UI:Delect:Confirm_Object' => '%1$s\'i silmek istediğnizden emin misiniz?',
|
||||
'UI:Delect:Confirm_Count_ObjectsOf_Class' => '%1$d nesnesini (sınıfı %2$s) silmek istediğinizden emin misiniz?',
|
||||
'UI:WelcomeToITop' => 'iTop\'a Hoşgeldiniz',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s detayları',
|
||||
'UI:ErrorPageTitle' => 'iTop - Hata',
|
||||
'UI:ObjectDoesNotExist' => 'Nesne mevcut değil veya yetkiniz yok.',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - Arama Sonuçları',
|
||||
'UI:Search:NoSearch' => 'Nothing to search for',
|
||||
'UI:FullTextSearchTitle_Text' => '"%1$s" için arama sonuçları:',
|
||||
'UI:Search:Count_ObjectsOf_Class_Found' => '%2$s sınıfına ait %1$d nesne bulundu.',
|
||||
'UI:Search:NoObjectFound' => 'Kayıt bulunamadı.',
|
||||
'UI:ModificationPageTitle_Object_Class' => 'iTop - %1$s - %2$s modifikasyon',
|
||||
'UI:ModificationTitle_Class_Object' => '%1$s: <span class=\"hilite\">%2$s</span> modifikasyonu',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - %1$s - %2$s modifikasyonunu klonlayınız',
|
||||
'UI:CloneTitle_Class_Object' => '%1$s klonu: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - Yeni %1$s yaratımı',
|
||||
'UI:CreationTitle_Class' => 'Yeni %1$s yarat',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => 'Yaratılacak %1$s nesne tipini seçiniz',
|
||||
'UI:Class_Object_NotUpdated' => 'Değişiklik tespit edilemedi, %1$s (%2$s) <strong>güncellenmedi</strong>.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) güncellendi.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - Toplu silme işlemi',
|
||||
'UI:BulkDeleteTitle' => 'Silmek istediğiniz nesneleri seçiniz:',
|
||||
'UI:PageTitle:ObjectCreated' => 'iTop Nesne yaratıldı.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s yaratıldı.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => '%1$s işlemi %2$s durumunda %3$s nesnesine uygulanır. Bir sonraki durum: %4$s.',
|
||||
'UI:ObjectCouldNotBeWritten' => 'Nesne kaydedilemedi: %1$s',
|
||||
'UI:PageTitle:FatalError' => 'iTop - Kritik Hata',
|
||||
'UI:SystemIntrusion' => 'Bu işlem için yetkiniz yok',
|
||||
'UI:FatalErrorMessage' => 'Kritik Hata, iTop devam edemiyor.',
|
||||
'UI:Error_Details' => 'Hata: %1$s.',
|
||||
|
||||
'UI:PageTitle:ClassProjections' => 'iTop Kullanıcı Yönetimi - sınıf koruması',
|
||||
'UI:PageTitle:ProfileProjections' => 'iTop Kullanıcı Yönetimi - profil koruması',
|
||||
'UI:UserManagement:Class' => 'Sınıf',
|
||||
'UI:UserManagement:Class+' => 'Nesnin sınıfı',
|
||||
'UI:UserManagement:ProjectedObject' => 'Nesne',
|
||||
'UI:UserManagement:ProjectedObject+' => 'Projected object',
|
||||
'UI:UserManagement:AnyObject' => '* herhangi *',
|
||||
'UI:UserManagement:User' => 'Kullanıcı',
|
||||
'UI:UserManagement:User+' => 'User involved in the projection',
|
||||
'UI:UserManagement:Profile' => 'Profil',
|
||||
'UI:UserManagement:Profile+' => 'Profile in which the projection is specified',
|
||||
'UI:UserManagement:Action:Read' => 'Oku',
|
||||
'UI:UserManagement:Action:Read+' => 'Nesneyi görüntüle',
|
||||
'UI:UserManagement:Action:Modify' => 'Güncelle',
|
||||
'UI:UserManagement:Action:Modify+' => 'Nesneyi yarat/güncelle',
|
||||
'UI:UserManagement:Action:Delete' => 'Sil',
|
||||
'UI:UserManagement:Action:Delete+' => 'Nesneleri sil',
|
||||
'UI:UserManagement:Action:BulkRead' => 'Toplu oku (dışarı aktar)',
|
||||
'UI:UserManagement:Action:BulkRead+' => 'Nesneleri listele veya toplu dışarı aktar',
|
||||
'UI:UserManagement:Action:BulkModify' => 'Toplu güncelleme',
|
||||
'UI:UserManagement:Action:BulkModify+' => 'Toplu yaratma/güncelleme(CSV içeri aktar)',
|
||||
'UI:UserManagement:Action:BulkDelete' => 'Toplu Silim',
|
||||
'UI:UserManagement:Action:BulkDelete+' => 'Nesneleri toplu olarak sil',
|
||||
'UI:UserManagement:Action:Stimuli' => 'Uyarı',
|
||||
'UI:UserManagement:Action:Stimuli+' => 'İzin verilen çoklu işlemler',
|
||||
'UI:UserManagement:Action' => 'İşlem',
|
||||
'UI:UserManagement:Action+' => 'İşlem kullanıcı tarafından yapıldı',
|
||||
'UI:UserManagement:TitleActions' => 'İşlemler',
|
||||
'UI:UserManagement:Permission' => 'Yetki',
|
||||
'UI:UserManagement:Permission+' => 'Kullanıcı yetkileri',
|
||||
'UI:UserManagement:Attributes' => 'Özellikler',
|
||||
'UI:UserManagement:ActionAllowed:Yes' => 'Evet',
|
||||
'UI:UserManagement:ActionAllowed:No' => 'Hayır',
|
||||
'UI:UserManagement:AdminProfile+' => 'Sistem Yöneticisi tüm okuma/yazma işlemleri için yetkilidir.',
|
||||
'UI:UserManagement:NoLifeCycleApplicable' => 'N/A',
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => 'Bu nesne için yaşam döngüsü tanımsız',
|
||||
'UI:UserManagement:GrantMatrix' => 'Yetkiler',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => '%1$s ve %2$s arasındaki ilişki',
|
||||
'UI:UserManagement:LinkBetween_User_And_Org' => '%1$s ve %2$s arasındaki ilişki',
|
||||
|
||||
'Menu:AdminTools' => 'Yönetim Araçları',
|
||||
'Menu:AdminTools+' => 'Yönetim Araçları',
|
||||
'Menu:AdminTools?' => 'Yönetici profiline izin verilen araçlar',
|
||||
|
||||
'UI:ChangeManagementMenu' => 'Değişiklik Yönetimi',
|
||||
'UI:ChangeManagementMenu+' => 'Değişiklik Yönetimi',
|
||||
'UI:ChangeManagementMenu:Title' => 'Değişiklik Özeti',
|
||||
'UI-ChangeManagementMenu-ChangesByType' => 'Değişiklik tipine göre',
|
||||
'UI-ChangeManagementMenu-ChangesByStatus' => 'Değişiklik durumuna göre',
|
||||
'UI-ChangeManagementMenu-ChangesByWorkgroup' => 'İş grubuna değişiklikler',
|
||||
'UI-ChangeManagementMenu-ChangesNotYetAssigned' => 'Atanmamış Değişiklikler',
|
||||
|
||||
'UI:ConfigurationItemsMenu'=> 'Konfigürasyon kalemleri',
|
||||
'UI:ConfigurationItemsMenu+'=> 'Tüm cihazlar',
|
||||
'UI:ConfigurationItemsMenu:Title' => 'Konfigürasyon Kalemlerinin Özeti',
|
||||
'UI-ConfigurationItemsMenu-ServersByCriticity' => 'Servers by criticity',
|
||||
'UI-ConfigurationItemsMenu-PCsByCriticity' => 'PCs by criticity',
|
||||
'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => 'Network devices by criticity',
|
||||
'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => 'Applications by criticity',
|
||||
|
||||
'UI:ConfigurationManagementMenu' => 'Konfigürasyon Yönetimi',
|
||||
'UI:ConfigurationManagementMenu+' => 'Konfigürasyon Yönetimi',
|
||||
'UI:ConfigurationManagementMenu:Title' => 'Altyapı Özeti',
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => 'Infrastructure objects by type',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => 'Infrastructure objects by status',
|
||||
|
||||
'UI:ConfigMgmtMenuOverview:Title' => 'Konfigürasyon Yönetimi Gösterge Tablosu',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => 'Durumlarına göre Konfigürasyon Kalemleri(KK)',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => 'Tiplerine göre Konfigürasyon Kalemleri(KK)',
|
||||
|
||||
'UI:RequestMgmtMenuOverview:Title' => 'Çağrı Yönetimi Gösterge Tablosu',
|
||||
'UI-RequestManagementOverview-RequestByService' => 'Hizmetlere göre çağrılar',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => 'Önceliklere göre çağrılar',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => 'Henüz atanmamış çağrılar',
|
||||
|
||||
'UI:IncidentMgmtMenuOverview:Title' => 'Arıza Gösterge Tablosu',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => 'Servislere göre arızalar',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => 'Önceliklere göre arızalar',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => 'Henüz atanmamış arızalar',
|
||||
|
||||
'UI:ChangeMgmtMenuOverview:Title' => 'Değişiklik Yönetimi Gösterge Tablosu',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => 'Tiplerine göre değişiklikler',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => 'Henüz atanmamış değişiklikler',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => 'Değişiklik nedeniyle devre dışı',
|
||||
|
||||
'UI:ServiceMgmtMenuOverview:Title' => 'Hizmet Yönetimi Gösterge Tablosu',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => '30 gün içinde biten Müşteri Sözleşmeleri',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => '30 gün içinde biten Tedarikçi Sözleşmeleri',
|
||||
|
||||
'UI:ContactsMenu' => 'İrtibatlar',
|
||||
'UI:ContactsMenu+' => 'İrtibatlar',
|
||||
'UI:ContactsMenu:Title' => 'İrtibatlar Özetleri',
|
||||
'UI-ContactsMenu-ContactsByLocation' => 'Yerleşkeye göre irtibatlar',
|
||||
'UI-ContactsMenu-ContactsByType' => 'Tipine göre irtibatlar',
|
||||
'UI-ContactsMenu-ContactsByStatus' => 'Durumuna göre irtibatlar',
|
||||
|
||||
'Menu:CSVImportMenu' => 'CSV dışardan al',
|
||||
'Menu:CSVImportMenu+' => 'Çoklu yaratım veya güncelleme',
|
||||
|
||||
'Menu:DataModelMenu' => 'Veri Modeli',
|
||||
'Menu:DataModelMenu+' => 'Veri Modeli Özeti',
|
||||
|
||||
'Menu:ExportMenu' => 'Dışarı ver',
|
||||
'Menu:ExportMenu+' => 'Sorgu sonucunu HTML, CSV veya XML olarak dışarı aktar',
|
||||
|
||||
'Menu:NotificationsMenu' => 'Uyarılar',
|
||||
'Menu:NotificationsMenu+' => 'Uyarıların yapılandırılması',
|
||||
'UI:NotificationsMenu:Title' => '<span class="hilite">Uyarıların</span> yapılandırılması',
|
||||
'UI:NotificationsMenu:Help' => 'Yardım',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>In iTop uyarı mekanizması ihtiyaca göre uyarlanabilir. Uyarılar iki tip nesne üzerine kurulmuştur: <i>tetikleme (triggers) ve işlemler (actions)</i>.</p>
|
||||
<p><i><b>Triggers</b></i> uyarının ne zaman yapılacağını belirler. 3 tip tetikleme vardır ve nesnenin 3 durumuna ilişkilendirilmiştir:
|
||||
<ol>
|
||||
<li>the "OnCreate" tetikleme nesne yaratıldığı zaman çalışır</li>
|
||||
<li>the "OnStateEnter" tetikleme nesne belli bir duruma girişinde çalışır</li>
|
||||
<li>the "OnStateLeave" tetikleme nesne belli bir durumdan çıkışında çalışır</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>
|
||||
<i><b>Actions</b></i> tetikleme olduğunda yapılacak işlemleri belirler. Şimdilik sadece e-posta gönderme işlemi yapılabilmektedir.
|
||||
E-posta için şablon tanımlanabilmektedir. Şablona parametreler girilebilmektedir (recipients, importance, etc.).
|
||||
</p>
|
||||
<p>Özel sayfa: <a href="../setup/email.test.php" target="_blank">email.test.php</a> PHP e-posta konfigürnunu test ediniz.</p>
|
||||
<p>İşlemin gerçekleşmesi için bir tetikleme ile ilişkilendirilmesi gerekir.
|
||||
Tetikleme gerçekleştiriğinde işlemler tanımlanan sıra numarası ile gerçekleştirilir.</p>',
|
||||
'UI:NotificationsMenu:Triggers' => 'Tetikleyiciler',
|
||||
'UI:NotificationsMenu:AvailableTriggers' => 'Kullanılabilir tetikleyiciler',
|
||||
'UI:NotificationsMenu:OnCreate' => 'Nesne yaratıldığında',
|
||||
'UI:NotificationsMenu:OnStateEnter' => 'Nesnenin durumuna girişinde',
|
||||
'UI:NotificationsMenu:OnStateLeave' => 'Nesnenin durumdan çıkışında',
|
||||
'UI:NotificationsMenu:Actions' => 'İşlemler',
|
||||
'UI:NotificationsMenu:AvailableActions' => 'Kullanılabilir işlemler',
|
||||
|
||||
'Menu:AuditCategories' => 'Denetleme Kategorileri',
|
||||
'Menu:AuditCategories+' => 'Denetleme Kategorileri',
|
||||
'Menu:Notifications:Title' => 'Denetleme Kategorileri',
|
||||
|
||||
'Menu:RunQueriesMenu' => 'Sorgu çalıştır',
|
||||
'Menu:RunQueriesMenu+' => 'Sorgu çalıştır',
|
||||
|
||||
'Menu:DataAdministration' => 'Veri Yönetimi',
|
||||
'Menu:DataAdministration+' => 'Veri Yönetimi',
|
||||
|
||||
'Menu:UniversalSearchMenu' => 'Genel sorgu',
|
||||
'Menu:UniversalSearchMenu+' => 'Herhangi bir arama...',
|
||||
|
||||
'Menu:ApplicationLogMenu' => 'Uygulama olay kayıtları',
|
||||
'Menu:ApplicationLogMenu+' => 'Uygulama olay kayıtları',
|
||||
'Menu:ApplicationLogMenu:Title' => 'Uygulama olay kayıtları',
|
||||
|
||||
'Menu:UserManagementMenu' => 'Kullanıcı Yönetimi',
|
||||
'Menu:UserManagementMenu+' => 'Kullanıcı Yönetimi',
|
||||
|
||||
'Menu:ProfilesMenu' => 'Profiller',
|
||||
'Menu:ProfilesMenu+' => 'Profiller',
|
||||
'Menu:ProfilesMenu:Title' => 'Profiller',
|
||||
|
||||
'Menu:UserAccountsMenu' => 'Kullanıcı Hesapları',
|
||||
'Menu:UserAccountsMenu+' => 'Kullanıcı Hesapları',
|
||||
'Menu:UserAccountsMenu:Title' => 'Kullanıcı Hesapları',
|
||||
|
||||
'UI:iTopVersion:Short' => 'iTop versiyonu %1$s',
|
||||
'UI:iTopVersion:Long' => 'iTop %3$s tarihli versiyonu %1$s-%2$s',
|
||||
'UI:PropertiesTab' => 'Özellikler',
|
||||
|
||||
'UI:OpenDocumentInNewWindow_' => 'Dokümanı yeni pencerede aç: %1$s',
|
||||
'UI:DownloadDocument_' => 'Dokümanı indir: %1$s',
|
||||
'UI:Document:NoPreview' => 'Bu tip doküman için öngösterim mevcut değil',
|
||||
|
||||
'UI:DeadlineMissedBy_duration' => '%1$s ile kaçırıldı',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 dk.',
|
||||
'UI:Deadline_Minutes' => '%1$d dk.',
|
||||
'UI:Deadline_Hours_Minutes' => '%1$dh %2$ddk',
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$d gün %2$d saat %3$d dk',
|
||||
'UI:Help' => 'Yardım',
|
||||
'UI:PasswordConfirm' => '(Onay)',
|
||||
'UI:BeforeAdding_Class_ObjectsSaveThisObject' => 'Yeni %1$s nesneleri eklemeden önce bu nesneyi kaydediniz.',
|
||||
'UI:DisplayThisMessageAtStartup' => 'Bu mesajı başlangıçta göster',
|
||||
'UI:RelationshipGraph' => 'Grafiksel gösterim',
|
||||
'UI:RelationshipList' => 'List',
|
||||
|
||||
'Portal:Title' => 'iTop Kullanıcı Portalı',
|
||||
'Portal:Refresh' => 'Yenile',
|
||||
'Portal:Back' => 'Geri',
|
||||
'Portal:CreateNewRequest' => 'Yeni istek yarat',
|
||||
'Portal:ChangeMyPassword' => 'Şifre değiştir',
|
||||
'Portal:Disconnect' => 'Çıkış',
|
||||
'Portal:OpenRequests' => 'Açık isteklerim',
|
||||
'Portal:ResolvedRequests' => 'Çözdüğüm istekler',
|
||||
'Portal:SelectService' => 'Kataloğdan servis seçiniz:',
|
||||
'Portal:PleaseSelectOneService' => 'Sevis seçiniz',
|
||||
'Portal:SelectSubcategoryFrom_Service' => '%1$s servis için alt kategorsi seçiniz:',
|
||||
'Portal:PleaseSelectAServiceSubCategory' => 'Alt kategori seçiniz',
|
||||
'Portal:DescriptionOfTheRequest' => 'İstek tanımlaması:',
|
||||
'Portal:TitleRequestDetailsFor_Request' => 'İsteğin detayı %1$s:',
|
||||
'Portal:NoOpenRequest' => 'Bu kategoride istek yok.',
|
||||
'Portal:Button:CloseTicket' => 'Çağrıyı kapat',
|
||||
'Portal:EnterYourCommentsOnTicket' => 'İsteğin çözümüne yönelik açıklamalar:',
|
||||
'Portal:ErrorNoContactForThisUser' => 'Hata: mevcut kullanıcının irtibat bilgisi yok. Sistem yöneticisi ile irtibata geçiniz.',
|
||||
|
||||
'Enum:Undefined' => 'Tanımsız',
|
||||
));
|
||||
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,385 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Robert Deng <denglx@gmail.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'core/cmdb'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: CMDBChange
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChange' => '变更',
|
||||
'Class:CMDBChange+' => '变更跟踪',
|
||||
'Class:CMDBChange/Attribute:date' => '日期',
|
||||
'Class:CMDBChange/Attribute:date+' => '变更被记录的日期和时间',
|
||||
'Class:CMDBChange/Attribute:userinfo' => '杂项. 信息',
|
||||
'Class:CMDBChange/Attribute:userinfo+' => '呼叫者已定义的信息',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOp
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOp' => '变更操作',
|
||||
'Class:CMDBChangeOp+' => '变更操作跟踪',
|
||||
'Class:CMDBChangeOp/Attribute:change' => '变更',
|
||||
'Class:CMDBChangeOp/Attribute:change+' => '变更',
|
||||
'Class:CMDBChangeOp/Attribute:date' => '日期',
|
||||
'Class:CMDBChangeOp/Attribute:date+' => '变更的日期和时间',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo' => '用户',
|
||||
'Class:CMDBChangeOp/Attribute:userinfo+' => '变更造成者',
|
||||
'Class:CMDBChangeOp/Attribute:objclass' => '对象类',
|
||||
'Class:CMDBChangeOp/Attribute:objclass+' => '对象类',
|
||||
'Class:CMDBChangeOp/Attribute:objkey' => '对象 id',
|
||||
'Class:CMDBChangeOp/Attribute:objkey+' => '对象 id',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass' => '类别',
|
||||
'Class:CMDBChangeOp/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpCreate
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpCreate' => '对象创建',
|
||||
'Class:CMDBChangeOpCreate+' => '对象创建跟踪',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpDelete
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpDelete' => '对象删除',
|
||||
'Class:CMDBChangeOpDelete+' => '对象删除跟踪',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttribute
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttribute' => '对象变更',
|
||||
'Class:CMDBChangeOpSetAttribute+' => '对象属性变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode' => '属性',
|
||||
'Class:CMDBChangeOpSetAttribute/Attribute:attcode+' => '被修改属性的编码',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeScalar
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeScalar' => '属性变更',
|
||||
'Class:CMDBChangeOpSetAttributeScalar+' => '对象标量属性变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue' => '原值',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:oldvalue+' => '属性原值',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue' => '新值',
|
||||
'Class:CMDBChangeOpSetAttributeScalar/Attribute:newvalue+' => '属性新值',
|
||||
));
|
||||
// Used by CMDBChangeOp... & derived classes
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Change:ObjectCreated' => 'Object created',
|
||||
'Change:ObjectDeleted' => 'Object deleted',
|
||||
'Change:AttName_SetTo_NewValue_PreviousValue_OldValue' => '%1$s set to %2$s (previous value: %3$s)',
|
||||
'Change:Text_AppendedTo_AttName' => '%1$s appended to %2$s',
|
||||
'Change:AttName_Changed_PreviousValue_OldValue' => '%1$s modified, previous value: %2$s',
|
||||
'Change:AttName_Changed' => '%1$s modified',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeBlob
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeBlob' => '数据变更',
|
||||
'Class:CMDBChangeOpSetAttributeBlob+' => '数据变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata' => '原数据',
|
||||
'Class:CMDBChangeOpSetAttributeBlob/Attribute:prevdata+' => '属性原来的内容',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: CMDBChangeOpSetAttributeText
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:CMDBChangeOpSetAttributeText' => '文本变更',
|
||||
'Class:CMDBChangeOpSetAttributeText+' => '文本变更跟踪',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata' => '原数据',
|
||||
'Class:CMDBChangeOpSetAttributeText/Attribute:prevdata+' => '属性原来的内容',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Event
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Event' => '记录事项',
|
||||
'Class:Event+' => '应用程序的内部事项',
|
||||
'Class:Event/Attribute:message' => '消息',
|
||||
'Class:Event/Attribute:message+' => '事项简述',
|
||||
'Class:Event/Attribute:date' => '日期',
|
||||
'Class:Event/Attribute:date+' => '变更被记录的日期和时间',
|
||||
'Class:Event/Attribute:userinfo' => '用户信息',
|
||||
'Class:Event/Attribute:userinfo+' => '用户标识, 该用户的活动触发了该事项',
|
||||
'Class:Event/Attribute:finalclass' => '类别',
|
||||
'Class:Event/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotification
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:EventNotification' => '通知事项',
|
||||
'Class:EventNotification+' => '被发送通知的踪迹',
|
||||
'Class:EventNotification/Attribute:trigger_id' => '触发器',
|
||||
'Class:EventNotification/Attribute:trigger_id+' => '用户帐户',
|
||||
'Class:EventNotification/Attribute:action_id' => '用户',
|
||||
'Class:EventNotification/Attribute:action_id+' => '用户帐户',
|
||||
'Class:EventNotification/Attribute:object_id' => '对象 id',
|
||||
'Class:EventNotification/Attribute:object_id+' => '对象 id (由触发器定义的类 ?)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventNotificationEmail
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:EventNotificationEmail' => 'Email 发出事项',
|
||||
'Class:EventNotificationEmail+' => '被发送的Email的踪迹',
|
||||
'Class:EventNotificationEmail/Attribute:to' => 'TO',
|
||||
'Class:EventNotificationEmail/Attribute:to+' => 'TO',
|
||||
'Class:EventNotificationEmail/Attribute:cc' => 'CC',
|
||||
'Class:EventNotificationEmail/Attribute:cc+' => 'CC',
|
||||
'Class:EventNotificationEmail/Attribute:bcc' => 'BCC',
|
||||
'Class:EventNotificationEmail/Attribute:bcc+' => 'BCC',
|
||||
'Class:EventNotificationEmail/Attribute:from' => 'From',
|
||||
'Class:EventNotificationEmail/Attribute:from+' => '消息发送者',
|
||||
'Class:EventNotificationEmail/Attribute:subject' => '主题',
|
||||
'Class:EventNotificationEmail/Attribute:subject+' => '主题',
|
||||
'Class:EventNotificationEmail/Attribute:body' => '邮件体',
|
||||
'Class:EventNotificationEmail/Attribute:body+' => '邮件体',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventIssue
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:EventIssue' => '议题事项',
|
||||
'Class:EventIssue+' => '议题踪迹 (警告, 错误, 等等.)',
|
||||
'Class:EventIssue/Attribute:issue' => '议题',
|
||||
'Class:EventIssue/Attribute:issue+' => '发生了什么',
|
||||
'Class:EventIssue/Attribute:impact' => '影响',
|
||||
'Class:EventIssue/Attribute:impact+' => '结果是什么',
|
||||
'Class:EventIssue/Attribute:page' => '页面',
|
||||
'Class:EventIssue/Attribute:page+' => 'HTTP 入口',
|
||||
'Class:EventIssue/Attribute:arguments_post' => 'Posted arguments',
|
||||
'Class:EventIssue/Attribute:arguments_post+' => 'HTTP POST arguments',
|
||||
'Class:EventIssue/Attribute:arguments_get' => 'URL arguments',
|
||||
'Class:EventIssue/Attribute:arguments_get+' => 'HTTP GET arguments',
|
||||
'Class:EventIssue/Attribute:callstack' => 'Callstack',
|
||||
'Class:EventIssue/Attribute:callstack+' => 'Call stack',
|
||||
'Class:EventIssue/Attribute:data' => 'Data',
|
||||
'Class:EventIssue/Attribute:data+' => 'More information',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: EventWebService
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:EventWebService' => 'Web 服务事项',
|
||||
'Class:EventWebService+' => 'Web 服务调用的踪迹',
|
||||
'Class:EventWebService/Attribute:verb' => 'Verb',
|
||||
'Class:EventWebService/Attribute:verb+' => '操作的名称',
|
||||
'Class:EventWebService/Attribute:result' => '结果',
|
||||
'Class:EventWebService/Attribute:result+' => '概览 成功/失败',
|
||||
'Class:EventWebService/Attribute:log_info' => '信息记录',
|
||||
'Class:EventWebService/Attribute:log_info+' => '结果信息记录',
|
||||
'Class:EventWebService/Attribute:log_warning' => '警告记录',
|
||||
'Class:EventWebService/Attribute:log_warning+' => '结果警告记录',
|
||||
'Class:EventWebService/Attribute:log_error' => '错误记录',
|
||||
'Class:EventWebService/Attribute:log_error+' => '结果错误记录',
|
||||
'Class:EventWebService/Attribute:data' => '数据',
|
||||
'Class:EventWebService/Attribute:data+' => '结果数据',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Action
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Action' => '客户化动作',
|
||||
'Class:Action+' => '用户定义的动作',
|
||||
'Class:Action/Attribute:name' => '名称',
|
||||
'Class:Action/Attribute:name+' => '',
|
||||
'Class:Action/Attribute:description' => '描述',
|
||||
'Class:Action/Attribute:description+' => '',
|
||||
'Class:Action/Attribute:status' => '状态',
|
||||
'Class:Action/Attribute:status+' => '生产中 或 ?',
|
||||
'Class:Action/Attribute:status/Value:test' => '测试中',
|
||||
'Class:Action/Attribute:status/Value:test+' => '测试中',
|
||||
'Class:Action/Attribute:status/Value:enabled' => '生产中',
|
||||
'Class:Action/Attribute:status/Value:enabled+' => '生产中',
|
||||
'Class:Action/Attribute:status/Value:disabled' => '非活动',
|
||||
'Class:Action/Attribute:status/Value:disabled+' => '非活动',
|
||||
'Class:Action/Attribute:trigger_list' => '相关触发器',
|
||||
'Class:Action/Attribute:trigger_list+' => '关联到该动作的触发器',
|
||||
'Class:Action/Attribute:finalclass' => '类别',
|
||||
'Class:Action/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionNotification
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:ActionNotification' => '通知',
|
||||
'Class:ActionNotification+' => '通知 (摘要)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: ActionEmail
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:ActionEmail' => 'Email 通知',
|
||||
'Class:ActionEmail+' => '',
|
||||
'Class:ActionEmail/Attribute:test_recipient' => '测试收件人',
|
||||
'Class:ActionEmail/Attribute:test_recipient+' => '状态被设置为"测试"时的目的地',
|
||||
'Class:ActionEmail/Attribute:from' => '来自',
|
||||
'Class:ActionEmail/Attribute:from+' => '将发送到邮件头',
|
||||
'Class:ActionEmail/Attribute:reply_to' => '回复到',
|
||||
'Class:ActionEmail/Attribute:reply_to+' => '将发送到邮件头',
|
||||
'Class:ActionEmail/Attribute:to' => 'To',
|
||||
'Class:ActionEmail/Attribute:to+' => '邮件的目的地',
|
||||
'Class:ActionEmail/Attribute:cc' => 'Cc',
|
||||
'Class:ActionEmail/Attribute:cc+' => 'Carbon Copy',
|
||||
'Class:ActionEmail/Attribute:bcc' => 'bcc',
|
||||
'Class:ActionEmail/Attribute:bcc+' => 'Blind Carbon Copy',
|
||||
'Class:ActionEmail/Attribute:subject' => '主题',
|
||||
'Class:ActionEmail/Attribute:subject+' => '邮件标题',
|
||||
'Class:ActionEmail/Attribute:body' => '邮件体',
|
||||
'Class:ActionEmail/Attribute:body+' => '邮件内容',
|
||||
'Class:ActionEmail/Attribute:importance' => '重要',
|
||||
'Class:ActionEmail/Attribute:importance+' => '重要标志',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low' => '低',
|
||||
'Class:ActionEmail/Attribute:importance/Value:low+' => '低',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal' => '一般',
|
||||
'Class:ActionEmail/Attribute:importance/Value:normal+' => '一般',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high' => '高',
|
||||
'Class:ActionEmail/Attribute:importance/Value:high+' => '高',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Trigger
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:Trigger' => '触发器',
|
||||
'Class:Trigger+' => '客户化事项句柄',
|
||||
'Class:Trigger/Attribute:description' => '描述',
|
||||
'Class:Trigger/Attribute:description+' => '单行描述',
|
||||
'Class:Trigger/Attribute:action_list' => '被触发的动作',
|
||||
'Class:Trigger/Attribute:action_list+' => '触发器击发时执行的动作',
|
||||
'Class:Trigger/Attribute:finalclass' => '类别',
|
||||
'Class:Trigger/Attribute:finalclass+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObject
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnObject' => '触发器 (类依赖的)',
|
||||
'Class:TriggerOnObject+' => '在一个给定类对象上的触发器',
|
||||
'Class:TriggerOnObject/Attribute:target_class' => '目标类',
|
||||
'Class:TriggerOnObject/Attribute:target_class+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateChange
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnStateChange' => '触发器 (状态变化时)',
|
||||
'Class:TriggerOnStateChange+' => '对象状态变化时的触发器',
|
||||
'Class:TriggerOnStateChange/Attribute:state' => '状态',
|
||||
'Class:TriggerOnStateChange/Attribute:state+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateEnter
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnStateEnter' => '触发器 (进入一个状态时)',
|
||||
'Class:TriggerOnStateEnter+' => '对象状态变化时触发器 - 进入时',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnStateLeave
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnStateLeave' => '触发器 (离开一个状态时)',
|
||||
'Class:TriggerOnStateLeave+' => '对象状态变化时触发器 - 离开时',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: TriggerOnObjectCreate
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:TriggerOnObjectCreate' => '触发器 (对象创建时)',
|
||||
'Class:TriggerOnObjectCreate+' => '一个给定类[子类]对象创建时触发器',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTriggerAction
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:lnkTriggerAction' => '动作/触发器',
|
||||
'Class:lnkTriggerAction+' => '触发器和动作间的链接',
|
||||
'Class:lnkTriggerAction/Attribute:action_id' => '动作',
|
||||
'Class:lnkTriggerAction/Attribute:action_id+' => '要执行的动作',
|
||||
'Class:lnkTriggerAction/Attribute:action_name' => '动作',
|
||||
'Class:lnkTriggerAction/Attribute:action_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id' => '触发器',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_id+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name' => '触发器',
|
||||
'Class:lnkTriggerAction/Attribute:trigger_name+' => '',
|
||||
'Class:lnkTriggerAction/Attribute:order' => '顺序',
|
||||
'Class:lnkTriggerAction/Attribute:order+' => '动作执行顺序',
|
||||
));
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,868 +0,0 @@
|
||||
<?php
|
||||
// Copyright (C) 2010 Combodo SARL
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; version 3 of the License.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
/**
|
||||
* Localized data
|
||||
*
|
||||
* @author Robert Deng <denglx@gmail.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'gui'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'application'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: AuditCategory
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:AuditCategory' => '审计类目',
|
||||
'Class:AuditCategory+' => '全部审计中的一个区段',
|
||||
'Class:AuditCategory/Attribute:name' => '类目名称',
|
||||
'Class:AuditCategory/Attribute:name+' => '类目简称',
|
||||
'Class:AuditCategory/Attribute:description' => '审计类目描述',
|
||||
'Class:AuditCategory/Attribute:description+' => '该审计类目的详细描述',
|
||||
'Class:AuditCategory/Attribute:definition_set' => '定义',
|
||||
'Class:AuditCategory/Attribute:definition_set+' => '定义用于审计的对象的OQL表达式',
|
||||
'Class:AuditCategory/Attribute:rules_list' => '审计规则',
|
||||
'Class:AuditCategory/Attribute:rules_list+' => '该类目的审计规则',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: AuditRule
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:AuditRule' => '审计规则',
|
||||
'Class:AuditRule+' => '用于检查给定审计类目的规则',
|
||||
'Class:AuditRule/Attribute:name' => '规则名称',
|
||||
'Class:AuditRule/Attribute:name+' => '规则简称',
|
||||
'Class:AuditRule/Attribute:description' => '审计规则描述',
|
||||
'Class:AuditRule/Attribute:description+' => '审计规则详细描述',
|
||||
'Class:AuditRule/Attribute:query' => '要运行的查询',
|
||||
'Class:AuditRule/Attribute:query+' => '要运行的OQL表达式',
|
||||
'Class:AuditRule/Attribute:valid_flag' => '有效对象?',
|
||||
'Class:AuditRule/Attribute:valid_flag+' => '若规则返回有效对象则True,否则False',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true' => 'true',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true+' => 'true',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false' => 'false',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:false+' => 'false',
|
||||
'Class:AuditRule/Attribute:category_id' => '类目',
|
||||
'Class:AuditRule/Attribute:category_id+' => '该规则对应的类目',
|
||||
'Class:AuditRule/Attribute:category_name' => '类目',
|
||||
'Class:AuditRule/Attribute:category_name+' => '该规则对应类目的名称',
|
||||
));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Classes in 'addon/userrights'
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Class: User
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:User' => '用户',
|
||||
'Class:User+' => '用户登录名',
|
||||
'Class:User/Attribute:finalclass' => '帐户类别',
|
||||
'Class:User/Attribute:finalclass+' => '',
|
||||
'Class:User/Attribute:contactid' => '联系人 (个人)',
|
||||
'Class:User/Attribute:contactid+' => '来自业务数据的个人明细信息',
|
||||
'Class:User/Attribute:last_name' => '名',
|
||||
'Class:User/Attribute:last_name+' => '对应联系人的名字',
|
||||
'Class:User/Attribute:first_name' => '姓',
|
||||
'Class:User/Attribute:first_name+' => '对应联系人的姓氏',
|
||||
'Class:User/Attribute:email' => 'Email',
|
||||
'Class:User/Attribute:email+' => '对应联系人的Email',
|
||||
'Class:User/Attribute:login' => '登录名',
|
||||
'Class:User/Attribute:login+' => '用户标识字符串',
|
||||
'Class:User/Attribute:language' => '语言',
|
||||
'Class:User/Attribute:language+' => '用户语言',
|
||||
'Class:User/Attribute:language/Value:EN US' => 'English',
|
||||
'Class:User/Attribute:language/Value:EN US+' => 'English (U.S.)',
|
||||
'Class:User/Attribute:language/Value:FR FR' => 'French',
|
||||
'Class:User/Attribute:language/Value:FR FR+' => 'French (France)',
|
||||
'Class:User/Attribute:profile_list' => '简档',
|
||||
'Class:User/Attribute:profile_list+' => '角色, 为该人员授权',
|
||||
'Class:User/Attribute:allowed_org_list' => '被许可的组织',
|
||||
'Class:User/Attribute:allowed_org_list+' => '终端用户被许可看到下述组织的数据. 如果没有指定的组织,则无限制.',
|
||||
|
||||
'Class:User/Error:LoginMustBeUnique' => '登录名必须唯一 - "%1s" 已经被使用.',
|
||||
'Class:User/Error:AtLeastOneProfileIsNeeded' => '至少一个简档必须指定给该用户.',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Profiles
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_Profiles' => '简档',
|
||||
'Class:URP_Profiles+' => '用户简档',
|
||||
'Class:URP_Profiles/Attribute:name' => '名称',
|
||||
'Class:URP_Profiles/Attribute:name+' => '标签',
|
||||
'Class:URP_Profiles/Attribute:description' => '描述',
|
||||
'Class:URP_Profiles/Attribute:description+' => '单行描述',
|
||||
'Class:URP_Profiles/Attribute:user_list' => '用户',
|
||||
'Class:URP_Profiles/Attribute:user_list+' => '拥有该角色的人员',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_Dimensions
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_Dimensions' => '维度',
|
||||
'Class:URP_Dimensions+' => '应用维度 (定义纵深)',
|
||||
'Class:URP_Dimensions/Attribute:name' => '名称',
|
||||
'Class:URP_Dimensions/Attribute:name+' => '标签',
|
||||
'Class:URP_Dimensions/Attribute:description' => '描述',
|
||||
'Class:URP_Dimensions/Attribute:description+' => '单行描述',
|
||||
'Class:URP_Dimensions/Attribute:type' => '类别',
|
||||
'Class:URP_Dimensions/Attribute:type+' => '类名称或数据类别 (投影单位)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserProfile
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_UserProfile' => '简档目标用户',
|
||||
'Class:URP_UserProfile+' => '用户的简档',
|
||||
'Class:URP_UserProfile/Attribute:userid' => '用户',
|
||||
'Class:URP_UserProfile/Attribute:userid+' => '用户帐户',
|
||||
'Class:URP_UserProfile/Attribute:userlogin' => '登录名',
|
||||
'Class:URP_UserProfile/Attribute:userlogin+' => '用户的登录名',
|
||||
'Class:URP_UserProfile/Attribute:profileid' => '简档',
|
||||
'Class:URP_UserProfile/Attribute:profileid+' => '使用简档',
|
||||
'Class:URP_UserProfile/Attribute:profile' => '简档',
|
||||
'Class:URP_UserProfile/Attribute:profile+' => '简档名称',
|
||||
'Class:URP_UserProfile/Attribute:reason' => '原因',
|
||||
'Class:URP_UserProfile/Attribute:reason+' => '解释为什么该人员需要拥有该角色',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_UserOrg
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_UserOrg' => '用户组织',
|
||||
'Class:URP_UserOrg+' => '被许可的组织',
|
||||
'Class:URP_UserOrg/Attribute:userid' => '用户',
|
||||
'Class:URP_UserOrg/Attribute:userid+' => '用户帐户',
|
||||
'Class:URP_UserOrg/Attribute:userlogin' => '登录名',
|
||||
'Class:URP_UserOrg/Attribute:userlogin+' => '用户的登录名',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_id' => '组织',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_id+' => '被许可的组织',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_name' => '组织',
|
||||
'Class:URP_UserOrg/Attribute:allowed_org_name+' => '被许可的组织',
|
||||
'Class:URP_UserOrg/Attribute:reason' => '原因',
|
||||
'Class:URP_UserOrg/Attribute:reason+' => '解释为什么该人员被许可查阅该组织的数据',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ProfileProjection
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_ProfileProjection' => '简档投射',
|
||||
'Class:URP_ProfileProjection+' => '简档投射',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid' => '维度',
|
||||
'Class:URP_ProfileProjection/Attribute:dimensionid+' => '应用维度',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension' => '维度',
|
||||
'Class:URP_ProfileProjection/Attribute:dimension+' => '应用维度',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid' => '简档',
|
||||
'Class:URP_ProfileProjection/Attribute:profileid+' => '使用简档',
|
||||
'Class:URP_ProfileProjection/Attribute:profile' => '简档',
|
||||
'Class:URP_ProfileProjection/Attribute:profile+' => '简档名称',
|
||||
'Class:URP_ProfileProjection/Attribute:value' => '值表达式',
|
||||
'Class:URP_ProfileProjection/Attribute:value+' => 'OQL expression (using $user) | constant | | +attribute code',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute' => '属性',
|
||||
'Class:URP_ProfileProjection/Attribute:attribute+' => '目标属性编码 (可选)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ClassProjection
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_ClassProjection' => '类投射',
|
||||
'Class:URP_ClassProjection+' => '类投射',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid' => '维度',
|
||||
'Class:URP_ClassProjection/Attribute:dimensionid+' => '应用维度',
|
||||
'Class:URP_ClassProjection/Attribute:dimension' => '维度',
|
||||
'Class:URP_ClassProjection/Attribute:dimension+' => '应用维度',
|
||||
'Class:URP_ClassProjection/Attribute:class' => '类',
|
||||
'Class:URP_ClassProjection/Attribute:class+' => '目标类',
|
||||
'Class:URP_ClassProjection/Attribute:value' => '值表达式',
|
||||
'Class:URP_ClassProjection/Attribute:value+' => 'OQL expression (using $this) | constant | | +attribute code',
|
||||
'Class:URP_ClassProjection/Attribute:attribute' => '属性',
|
||||
'Class:URP_ClassProjection/Attribute:attribute+' => '目标属性编码 (可选)',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_ActionGrant
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_ActionGrant' => '动作许可',
|
||||
'Class:URP_ActionGrant+' => '类上的许可',
|
||||
'Class:URP_ActionGrant/Attribute:profileid' => '简档',
|
||||
'Class:URP_ActionGrant/Attribute:profileid+' => '使用简档',
|
||||
'Class:URP_ActionGrant/Attribute:profile' => '简档',
|
||||
'Class:URP_ActionGrant/Attribute:profile+' => '使用简档',
|
||||
'Class:URP_ActionGrant/Attribute:class' => '类',
|
||||
'Class:URP_ActionGrant/Attribute:class+' => '目标类',
|
||||
'Class:URP_ActionGrant/Attribute:permission' => '许可',
|
||||
'Class:URP_ActionGrant/Attribute:permission+' => '允许或不允许?',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes' => '是',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:yes+' => '是',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no' => '否',
|
||||
'Class:URP_ActionGrant/Attribute:permission/Value:no+' => '否',
|
||||
'Class:URP_ActionGrant/Attribute:action' => '动作',
|
||||
'Class:URP_ActionGrant/Attribute:action+' => '可用于给定类上的操作',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_StimulusGrant
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_StimulusGrant' => '刺激许可',
|
||||
'Class:URP_StimulusGrant+' => '对象生命周期中刺激的许可',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid' => '简档',
|
||||
'Class:URP_StimulusGrant/Attribute:profileid+' => '使用简档',
|
||||
'Class:URP_StimulusGrant/Attribute:profile' => '简档',
|
||||
'Class:URP_StimulusGrant/Attribute:profile+' => '使用简档',
|
||||
'Class:URP_StimulusGrant/Attribute:class' => '类',
|
||||
'Class:URP_StimulusGrant/Attribute:class+' => '目标类',
|
||||
'Class:URP_StimulusGrant/Attribute:permission' => '许可',
|
||||
'Class:URP_StimulusGrant/Attribute:permission+' => '允许或不允许?',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes' => '是',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:yes+' => '是',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no' => '否',
|
||||
'Class:URP_StimulusGrant/Attribute:permission/Value:no+' => '否',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus' => '刺激',
|
||||
'Class:URP_StimulusGrant/Attribute:stimulus+' => '刺激编码',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: URP_AttributeGrant
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Class:URP_AttributeGrant' => '属性许可',
|
||||
'Class:URP_AttributeGrant+' => '属性层次上的许可',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid' => '动作准许',
|
||||
'Class:URP_AttributeGrant/Attribute:actiongrantid+' => '动作准许',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode' => '属性',
|
||||
'Class:URP_AttributeGrant/Attribute:attcode+' => '属性编码',
|
||||
));
|
||||
|
||||
//
|
||||
// String from the User Interface: menu, messages, buttons, etc...
|
||||
//
|
||||
|
||||
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
|
||||
'Menu:WelcomeMenu' => '欢迎',
|
||||
'Menu:WelcomeMenu+' => '欢迎来到iTop',
|
||||
'Menu:WelcomeMenuPage' => '欢迎',
|
||||
'Menu:WelcomeMenuPage+' => '欢迎来到iTop',
|
||||
'UI:WelcomeMenu:Title' => '欢迎来到iTop',
|
||||
|
||||
'UI:WelcomeMenu:LeftBlock' => '<p>iTop 是完全的, 开发源码的, IT 操作门户.</p>
|
||||
<ul>系统包括:
|
||||
<li>完全的 CMDB (Configuration management database) 记录和管理 IT 资产清册.</li>
|
||||
<li>事件管理模块跟踪和传递所有发生在 IT 系统中的事件.</li>
|
||||
<li>变更管理模块规划和跟踪 IT 环境中发生的变化.</li>
|
||||
<li>已知的错误数据库加速事件的处理.</li>
|
||||
<li>停损模块记录所有计划的停机并通知对应的联系人.</li>
|
||||
<li>通过仪表板迅速获得 IT 的概览.</li>
|
||||
</ul>
|
||||
<p>所有模块可以各自独立地、一步一步地搭建.</p>',
|
||||
|
||||
'UI:WelcomeMenu:RightBlock' => '<p>iTop 是面向服务提供商的, 它使得 IT 工程师方便地管理多客户和多组织.
|
||||
<ul>iTop, 提供功能丰富的业务处理流程:
|
||||
<li>提高 IT 管理效率</li>
|
||||
<li>驱动 IT 操作能力</li>
|
||||
<li>提高用户满意度,从业务能力方面提供执行力.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>iTop 是完全开放的,可被集成到您当前的IT管理架构中.</p>
|
||||
<p>
|
||||
<ul>利用这个新一代的 IT 操作门户, 可以帮助您:
|
||||
<li>更好地管理越来越复杂的 IT 环境.</li>
|
||||
<li>按照您的步骤实现 ITIL 流程.</li>
|
||||
<li>管理您的 IT 中最重要的设施: 文档化.</li>
|
||||
</ul>
|
||||
</p>',
|
||||
'UI:WelcomeMenu:AllOpenRequests' => '待处理的请求: %1$d',
|
||||
'UI:WelcomeMenu:MyCalls' => '我的请求',
|
||||
'UI:WelcomeMenu:OpenIncidents' => '待处理的事件: %1$d',
|
||||
'UI:WelcomeMenu:AllConfigItems' => '配置项: %1$d',
|
||||
'UI:WelcomeMenu:MyIncidents' => '指派给我的事件',
|
||||
'UI:AllOrganizations' => ' 所有组织 ',
|
||||
'UI:YourSearch' => '您的搜索',
|
||||
'UI:LoggedAsMessage' => '以 %1$s 登录',
|
||||
'UI:LoggedAsMessage+Admin' => '以 %1$s 登录(Administrator)',
|
||||
'UI:Button:Logoff' => '注销',
|
||||
'UI:Button:GlobalSearch' => '搜索',
|
||||
'UI:Button:Search' => '搜索',
|
||||
'UI:Button:Query' => ' 查询 ',
|
||||
'UI:Button:Ok' => '确认',
|
||||
'UI:Button:Cancel' => '取消',
|
||||
'UI:Button:Apply' => '应用',
|
||||
'UI:Button:Back' => ' << Back ',
|
||||
'UI:Button:Next' => ' Next >> ',
|
||||
'UI:Button:Finish' => ' 结束 ',
|
||||
'UI:Button:DoImport' => ' 运行导入 ! ',
|
||||
'UI:Button:Done' => ' 完成 ',
|
||||
'UI:Button:SimulateImport' => ' 激活导入 ',
|
||||
'UI:Button:Test' => '测试!',
|
||||
'UI:Button:Evaluate' => ' 评价 ',
|
||||
'UI:Button:AddObject' => ' 添加... ',
|
||||
'UI:Button:BrowseObjects' => ' 浏览... ',
|
||||
'UI:Button:Add' => ' 添加 ',
|
||||
'UI:Button:AddToList' => ' << 添加 ',
|
||||
'UI:Button:RemoveFromList' => ' 移除 >> ',
|
||||
'UI:Button:FilterList' => ' 过滤... ',
|
||||
'UI:Button:Create' => ' 创建 ',
|
||||
'UI:Button:Delete' => ' 删除 ! ',
|
||||
'UI:Button:ChangePassword' => ' 改变密码 ',
|
||||
'UI:Button:ResetPassword' => ' 重置密码 ',
|
||||
|
||||
'UI:SearchToggle' => '搜索',
|
||||
'UI:ClickToCreateNew' => '创建一个新的 %1$s',
|
||||
'UI:SearchFor_Class' => '搜索 %1$s 对象',
|
||||
'UI:NoObjectToDisplay' => '没有对象可显示.',
|
||||
'UI:Error:MandatoryTemplateParameter_object_id' => '当link_attr被指定时,参数 object_id 是必须的. 检查显示模板的定义.',
|
||||
'UI:Error:MandatoryTemplateParameter_target_attr' => '当 link_attr被指定时, 参数 target_attr 是必须的. 检查显示模板的定义.',
|
||||
'UI:Error:MandatoryTemplateParameter_group_by' => '参数 group_by 是必须的. 检查显示模板的定义.',
|
||||
'UI:Error:InvalidGroupByFields' => 'group by 的栏目列表是无效的: "%1$s".',
|
||||
'UI:Error:UnsupportedStyleOfBlock' => '错误: 不被支持的 block 格式: "%1$s".',
|
||||
'UI:Error:IncorrectLinkDefinition_LinkedClass_Class' => '错误的链接定义: the class of objects to manage: %1$s was not found as an external key in the class %2$s',
|
||||
'UI:Error:Object_Class_Id_NotFound' => 'Object: %1$s:%2$d not found.',
|
||||
'UI:Error:WizardCircularReferenceInDependencies' => '错误: 栏目之间的依赖性出现循环引用, 检查数据模型.',
|
||||
'UI:Error:UploadedFileTooBig' => '上传文件太大. (允许的最大限制是 %1$s). 检查您的 PHP configuration 中 upload_max_filesize 和 post_max_size.',
|
||||
'UI:Error:UploadedFileTruncated.' => '上传的文件被截断 !',
|
||||
'UI:Error:NoTmpDir' => '临时目录未定义.',
|
||||
'UI:Error:CannotWriteToTmp_Dir' => '无法向硬盘写入临时文件. upload_tmp_dir = "%1$s".',
|
||||
'UI:Error:UploadStoppedByExtension_FileName' => '上传因为扩展名被停止. (Original file name = "%1$s").',
|
||||
'UI:Error:UploadFailedUnknownCause_Code' => '文件上传失败, 未知原因. (Error code = "%1$s").',
|
||||
|
||||
'UI:Error:1ParametersMissing' => '错误: 必须为该操作指定下述参数: %1$s.',
|
||||
'UI:Error:2ParametersMissing' => '错误: 必须为该操作指定下述参数: %1$s and %2$s.',
|
||||
'UI:Error:3ParametersMissing' => '错误: 必须为该操作指定下述参数: %1$s, %2$s and %3$s.',
|
||||
'UI:Error:4ParametersMissing' => '错误: 必须为该操作指定下述参数: %1$s, %2$s, %3$s and %4$s.',
|
||||
'UI:Error:IncorrectOQLQuery_Message' => '错误: 错误的 OQL 查询: %1$s',
|
||||
'UI:Error:AnErrorOccuredWhileRunningTheQuery_Message' => '运行该查询时产生了一个错误: %1$s',
|
||||
'UI:Error:ObjectAlreadyUpdated' => '错误: 该对象已被更新.',
|
||||
'UI:Error:ObjectCannotBeUpdated' => '错误: 对象不能被更新.',
|
||||
'UI:Error:ObjectsAlreadyDeleted' => '错误: 对象已被删除!',
|
||||
'UI:Error:BulkDeleteNotAllowedOn_Class' => '您未被允许进行 %1$s 类对象的批量删除',
|
||||
'UI:Error:DeleteNotAllowedOn_Class' => '您未被允许删除 %1$s 类的对象',
|
||||
'UI:Error:BulkModifyNotAllowedOn_Class' => '您未被允许进行 %1$s 类对象的批量更新',
|
||||
'UI:Error:ObjectAlreadyCloned' => '错误: 该对象已被克隆!',
|
||||
'UI:Error:ObjectAlreadyCreated' => '错误: 该对象已被创建!',
|
||||
'UI:Error:Invalid_Stimulus_On_Object_In_State' => '错误: 在对象 %2$s 的 "%3$s" 状态上的无效刺激 "%1$s" .',
|
||||
|
||||
|
||||
'UI:GroupBy:Count' => '计数',
|
||||
'UI:GroupBy:Count+' => '元素数量',
|
||||
'UI:CountOfObjects' => '%1$d 个对象匹配给定的条件.',
|
||||
'UI_CountOfObjectsShort' => '%1$d 个对象.',
|
||||
'UI:NoObject_Class_ToDisplay' => '没有 %1$s 可以显示',
|
||||
'UI:History:LastModified_On_By' => '最后修改 %1$s 被 %2$s.',
|
||||
'UI:HistoryTab' => '历史',
|
||||
'UI:NotificationsTab' => '通知',
|
||||
'UI:History:Date' => '日期',
|
||||
'UI:History:Date+' => '变更日期',
|
||||
'UI:History:User' => '用户',
|
||||
'UI:History:User+' => '造成变更的用户',
|
||||
'UI:History:Changes' => '变更',
|
||||
'UI:History:Changes+' => '对该对象所做的变更',
|
||||
'UI:Loading' => '载入...',
|
||||
'UI:Menu:Actions' => '动作',
|
||||
'UI:Menu:New' => '新建...',
|
||||
'UI:Menu:Add' => '添加...',
|
||||
'UI:Menu:Manage' => '管理...',
|
||||
'UI:Menu:EMail' => 'eMail',
|
||||
'UI:Menu:CSVExport' => 'CSV 导出',
|
||||
'UI:Menu:Modify' => '修改...',
|
||||
'UI:Menu:Delete' => '删除...',
|
||||
'UI:Menu:Manage' => '管理...',
|
||||
'UI:Menu:BulkDelete' => '删除...',
|
||||
'UI:UndefinedObject' => '未定义',
|
||||
'UI:Document:OpenInNewWindow:Download' => '在新窗口打开: %1$s, 下载: %2$s',
|
||||
'UI:SelectAllToggle+' => '选择 / 清除选择 全部',
|
||||
'UI:TruncatedResults' => '%1$d objects displayed out of %2$d',
|
||||
'UI:DisplayAll' => '显示全部',
|
||||
'UI:CollapseList' => '收缩',
|
||||
'UI:CountOfResults' => '%1$d 个对象',
|
||||
'UI:ChangesLogTitle' => '变更记录 (%1$d):',
|
||||
'UI:EmptyChangesLogTitle' => '变更记录为空',
|
||||
'UI:SearchFor_Class_Objects' => '搜索 %1$s 对象',
|
||||
'UI:OQLQueryBuilderTitle' => 'OQL Query Builder',
|
||||
'UI:OQLQueryTab' => 'OQL 查询',
|
||||
'UI:SimpleSearchTab' => '简单搜索',
|
||||
'UI:Details+' => '明细',
|
||||
'UI:SearchValue:Any' => '* 任何 *',
|
||||
'UI:SearchValue:Mixed' => '* 混合 *',
|
||||
'UI:SelectOne' => '-- 选择一个 --',
|
||||
'UI:Login:Welcome' => '欢迎来到 iTop!',
|
||||
'UI:Login:IncorrectLoginPassword' => '错误的登录名/密码, 请重试.',
|
||||
'UI:Login:IdentifyYourself' => '在继续之前, 确定您自己的身份',
|
||||
'UI:Login:UserNamePrompt' => '用户名称',
|
||||
'UI:Login:PasswordPrompt' => '密码',
|
||||
'UI:Login:ChangeYourPassword' => '改变您的密码',
|
||||
'UI:Login:OldPasswordPrompt' => '旧密码',
|
||||
'UI:Login:NewPasswordPrompt' => '新密码',
|
||||
'UI:Login:RetypeNewPasswordPrompt' => '重复新密码',
|
||||
'UI:Login:IncorrectOldPassword' => '错误: 旧密码错误',
|
||||
'UI:LogOffMenu' => '注销',
|
||||
'UI:LogOff:ThankYou' => '谢谢使用iTop',
|
||||
'UI:LogOff:ClickHereToLoginAgain' => '点击这里再次登录...',
|
||||
'UI:ChangePwdMenu' => '改变密码...',
|
||||
'UI:Login:RetypePwdDoesNotMatch' => '新密码和重录的新密码不符!',
|
||||
'UI:Button:Login' => '进入 iTop',
|
||||
'UI:Login:Error:AccessRestricted' => 'iTop 访问被限制. 请联系iTop系统管理员.',
|
||||
'UI:Login:Error:AccessAdmin' => '有系统管理员权限才能访问. 请联系iTop系统管理员.',
|
||||
'UI:CSVImport:MappingSelectOne' => '-- 选择一个 --',
|
||||
'UI:CSVImport:MappingNotApplicable' => '-- 忽略该栏 --',
|
||||
'UI:CSVImport:NoData' => '空的数据..., 请提供数据!',
|
||||
'UI:Title:DataPreview' => '数据预览',
|
||||
'UI:CSVImport:ErrorOnlyOneColumn' => '错误: 数据仅包含一列. 您选择了合适的分隔字符了吗?',
|
||||
'UI:CSVImport:FieldName' => '栏 %1$d',
|
||||
'UI:CSVImport:DataLine1' => '数据行 1',
|
||||
'UI:CSVImport:DataLine2' => '数据行 2',
|
||||
'UI:CSVImport:idField' => 'id (主键)',
|
||||
'UI:Title:BulkImport' => 'iTop - 大批量导入',
|
||||
'UI:Title:BulkImport+' => 'CSV 导入 Wizard',
|
||||
'UI:CSVImport:ClassesSelectOne' => '-- 选择一个 --',
|
||||
'UI:CSVImport:ErrorExtendedAttCode' => '内部错误: "%1$s" 是错误的编码, 因为 "%2$s" 不是类 "%3$s" 的外部健',
|
||||
'UI:CSVImport:ObjectsWillStayUnchanged' => '%1$d 对象将保持不变.',
|
||||
'UI:CSVImport:ObjectsWillBeModified' => '%1$d 对象将被修改.',
|
||||
'UI:CSVImport:ObjectsWillBeAdded' => '%1$d 对象将被添加.',
|
||||
'UI:CSVImport:ObjectsWillHaveErrors' => '%1$d 对象将有错误.',
|
||||
'UI:CSVImport:ObjectsRemainedUnchanged' => '%1$d 对象保持不变.',
|
||||
'UI:CSVImport:ObjectsWereModified' => '%1$d 对象已被修改.',
|
||||
'UI:CSVImport:ObjectsWereAdded' => '%1$d 对象已被添加.',
|
||||
'UI:CSVImport:ObjectsHadErrors' => '%1$d 对象已有错误.',
|
||||
'UI:Title:CSVImportStep2' => '步骤 2 of 5: CSV 数据选项',
|
||||
'UI:Title:CSVImportStep3' => '步骤 3 of 5: 数据映射',
|
||||
'UI:Title:CSVImportStep4' => '步骤 4 of 5: 导入模拟',
|
||||
'UI:Title:CSVImportStep5' => '步骤 5 of 5: 导入完成',
|
||||
'UI:CSVImport:LinesNotImported' => '无法装载的行:',
|
||||
'UI:CSVImport:LinesNotImported+' => '以下行无法导入因为其中包含错误',
|
||||
'UI:CSVImport:SeparatorComma+' => ', (逗号)',
|
||||
'UI:CSVImport:SeparatorSemicolon+' => '; (分号)',
|
||||
'UI:CSVImport:SeparatorTab+' => 'tab',
|
||||
'UI:CSVImport:SeparatorOther' => '其他:',
|
||||
'UI:CSVImport:QualifierDoubleQuote+' => '" (双引号)',
|
||||
'UI:CSVImport:QualifierSimpleQuote+' => '\' (单引号)',
|
||||
'UI:CSVImport:QualifierOther' => '其他:',
|
||||
'UI:CSVImport:TreatFirstLineAsHeader' => '将第一行视做标题头(列名称)',
|
||||
'UI:CSVImport:Skip_N_LinesAtTheBeginning' => '跳过文件开始的 %1$s 行',
|
||||
'UI:CSVImport:CSVDataPreview' => 'CSV 数据预览',
|
||||
'UI:CSVImport:SelectFile' => '选择导入的文件:',
|
||||
'UI:CSVImport:Tab:LoadFromFile' => '从文件装载',
|
||||
'UI:CSVImport:Tab:CopyPaste' => '复制和粘贴数据',
|
||||
'UI:CSVImport:Tab:Templates' => '模板',
|
||||
'UI:CSVImport:PasteData' => '粘贴数据以导入:',
|
||||
'UI:CSVImport:PickClassForTemplate' => '选择下载的模板: ',
|
||||
'UI:CSVImport:SeparatorCharacter' => '分隔字符:',
|
||||
'UI:CSVImport:TextQualifierCharacter' => '文本限定字符',
|
||||
'UI:CSVImport:CommentsAndHeader' => '注释和头',
|
||||
'UI:CSVImport:SelectClass' => '选择类以导入:',
|
||||
'UI:CSVImport:AdvancedMode' => '高级模式',
|
||||
'UI:CSVImport:AdvancedMode+' => '在高级模式中,对象的"id" (主键) 可以被用来修改和重命名对象.' .
|
||||
'不管怎样,列 "id" (如果存在) 只能被用做一个搜索条件,不能与其它搜索条件混用.',
|
||||
'UI:CSVImport:SelectAClassFirst' => '首先选择一个类以配置映射.',
|
||||
'UI:CSVImport:HeaderFields' => '栏目',
|
||||
'UI:CSVImport:HeaderMappings' => '映射',
|
||||
'UI:CSVImport:HeaderSearch' => '搜索?',
|
||||
'UI:CSVImport:AlertIncompleteMapping' => '请为每个栏选择一个映射.',
|
||||
'UI:CSVImport:AlertNoSearchCriteria' => '请选择至少一个搜索条件',
|
||||
'UI:CSVImport:Encoding' => '字符编码',
|
||||
'UI:UniversalSearchTitle' => 'iTop - 通用搜索',
|
||||
'UI:UniversalSearch:Error' => '错误: %1$s',
|
||||
'UI:UniversalSearch:LabelSelectTheClass' => '选择类以搜索: ',
|
||||
|
||||
'UI:Audit:Title' => 'iTop - CMDB 审计',
|
||||
'UI:Audit:InteractiveAudit' => '交互审计',
|
||||
'UI:Audit:HeaderAuditRule' => '设计规则',
|
||||
'UI:Audit:HeaderNbObjects' => '# 对象',
|
||||
'UI:Audit:HeaderNbErrors' => '# 错误',
|
||||
'UI:Audit:PercentageOk' => '% Ok',
|
||||
|
||||
'UI:RunQuery:Title' => 'iTop - OQL 查询评估',
|
||||
'UI:RunQuery:QueryExamples' => '查询样例',
|
||||
'UI:RunQuery:HeaderPurpose' => '目的',
|
||||
'UI:RunQuery:HeaderPurpose+' => '该查询的解释',
|
||||
'UI:RunQuery:HeaderOQLExpression' => 'OQL 表达式',
|
||||
'UI:RunQuery:HeaderOQLExpression+' => 'OQL 语法表示的查询',
|
||||
'UI:RunQuery:ExpressionToEvaluate' => '待评估的表达式: ',
|
||||
'UI:RunQuery:MoreInfo' => '该查询的更多信息: ',
|
||||
'UI:RunQuery:DevelopedQuery' => '重新开发的查询表达式: ',
|
||||
'UI:RunQuery:SerializedFilter' => '序列化的过滤器: ',
|
||||
'UI:RunQuery:Error' => '运行该查询时产生了一个错误: %1$s',
|
||||
|
||||
'UI:Schema:Title' => 'iTop 对象 schema',
|
||||
'UI:Schema:CategoryMenuItem' => '类目 <b>%1$s</b>',
|
||||
'UI:Schema:Relationships' => '关联',
|
||||
'UI:Schema:AbstractClass' => '抽象类: 该类不能实例化对象.',
|
||||
'UI:Schema:NonAbstractClass' => '非抽象类: 该类可以实例化对象.',
|
||||
'UI:Schema:ClassHierarchyTitle' => '类层级',
|
||||
'UI:Schema:AllClasses' => '所有类',
|
||||
'UI:Schema:ExternalKey_To' => '%1$s的外部键',
|
||||
'UI:Schema:Columns_Description' => '列: <em>%1$s</em>',
|
||||
'UI:Schema:Default_Description' => '缺省: "%1$s"',
|
||||
'UI:Schema:NullAllowed' => '允许空',
|
||||
'UI:Schema:NullNotAllowed' => '不允许空',
|
||||
'UI:Schema:Attributes' => '属性',
|
||||
'UI:Schema:AttributeCode' => '属性编码',
|
||||
'UI:Schema:AttributeCode+' => '属性的内部编码',
|
||||
'UI:Schema:Label' => '标签',
|
||||
'UI:Schema:Label+' => '属性标签',
|
||||
'UI:Schema:Type' => '类别',
|
||||
|
||||
'UI:Schema:Type+' => '属性的数据类型',
|
||||
'UI:Schema:Origin' => '起源',
|
||||
'UI:Schema:Origin+' => '该属性被定义的基类',
|
||||
'UI:Schema:Description' => '描述',
|
||||
'UI:Schema:Description+' => '属性的描述',
|
||||
'UI:Schema:AllowedValues' => '允许值',
|
||||
'UI:Schema:AllowedValues+' => '该属性取值的限制',
|
||||
'UI:Schema:MoreInfo' => '更多信息',
|
||||
'UI:Schema:MoreInfo+' => '该栏目在数据库中被定义的更多信息',
|
||||
'UI:Schema:SearchCriteria' => '搜索条件',
|
||||
'UI:Schema:FilterCode' => '过滤器编码',
|
||||
'UI:Schema:FilterCode+' => '该搜索条件的编码',
|
||||
'UI:Schema:FilterDescription' => '描述',
|
||||
'UI:Schema:FilterDescription+' => '该搜索条件的描述',
|
||||
'UI:Schema:AvailOperators' => '可用的算子',
|
||||
'UI:Schema:AvailOperators+' => '该搜索条件可能的算子',
|
||||
'UI:Schema:ChildClasses' => '子类',
|
||||
'UI:Schema:ReferencingClasses' => '参考类',
|
||||
'UI:Schema:RelatedClasses' => '关联类',
|
||||
'UI:Schema:LifeCycle' => '生命周期',
|
||||
'UI:Schema:Triggers' => '触发器',
|
||||
'UI:Schema:Relation_Code_Description' => '关联 <em>%1$s</em> (%2$s)',
|
||||
'UI:Schema:RelationDown_Description' => 'Down: %1$s',
|
||||
'UI:Schema:RelationUp_Description' => 'Up: %1$s',
|
||||
'UI:Schema:RelationPropagates' => '%1$s: 繁殖到 %2$d 个层级, 查询: %3$s',
|
||||
'UI:Schema:RelationDoesNotPropagate' => '%1$s: 没有繁殖 (%2$d 层级), 查询: %3$s',
|
||||
'UI:Schema:Class_ReferencingClasses_From_By' => '%1$s 被类 %2$s 参照, 通过栏目 %3$s',
|
||||
'UI:Schema:Class_IsLinkedTo_Class_Via_ClassAndAttribute' => '%1$s 被链接到 %2$s 通过 %3$s::<em>%4$s</em>',
|
||||
'UI:Schema:Links:1-n' => '类指向 %1$s (1:n 链接):',
|
||||
'UI:Schema:Links:n-n' => '类链接到 %1$s (n:n 链接):',
|
||||
'UI:Schema:Links:All' => '全部相关类的图',
|
||||
'UI:Schema:NoLifeCyle' => '该类没有生命周期的定义.',
|
||||
'UI:Schema:LifeCycleTransitions' => '转换',
|
||||
'UI:Schema:LifeCyleAttributeOptions' => '属性选项',
|
||||
'UI:Schema:LifeCycleHiddenAttribute' => '隐藏',
|
||||
'UI:Schema:LifeCycleReadOnlyAttribute' => '只读',
|
||||
'UI:Schema:LifeCycleMandatoryAttribute' => '必须',
|
||||
'UI:Schema:LifeCycleAttributeMustChange' => '必须变更',
|
||||
'UI:Schema:LifeCycleAttributeMustPrompt' => '用户将被提示改变值',
|
||||
'UI:Schema:LifeCycleEmptyList' => '空列表',
|
||||
|
||||
'UI:LinksWidget:Autocomplete+' => '输入前3个字符...',
|
||||
'UI:Combo:SelectValue' => '--- 选择一个值 ---',
|
||||
'UI:Label:SelectedObjects' => '被选对象: ',
|
||||
'UI:Label:AvailableObjects' => '可用对象: ',
|
||||
'UI:Link_Class_Attributes' => '%1$s 属性',
|
||||
'UI:SelectAllToggle+' => '选择全部 / 清楚全部选择',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class_Instance' => '添加 %1$s 个对象, 链接 %2$s: %3$s',
|
||||
'UI:AddObjectsOf_Class_LinkedWith_Class' => '添加 %1$s 个对象与 %2$s 链接',
|
||||
'UI:ManageObjectsOf_Class_LinkedWith_Class_Instance' => '管理 %1$s 个对象, 链接 %2$s: %3$s',
|
||||
'UI:AddLinkedObjectsOf_Class' => '添加 %1$s...',
|
||||
'UI:RemoveLinkedObjectsOf_Class' => '移除选择的对象',
|
||||
'UI:Message:EmptyList:UseAdd' => '列表是空的, 使用 "添加..." 按扭以添加元素.',
|
||||
'UI:Message:EmptyList:UseSearchForm' => '使用上面的搜索表单, 以搜索要添加的对象.',
|
||||
|
||||
'UI:Wizard:FinalStepTitle' => '最后步骤: 确认',
|
||||
'UI:Title:DeletionOf_Object' => '删除 %1$s',
|
||||
'UI:Title:BulkDeletionOf_Count_ObjectsOf_Class' => '批量删除 %1$d 个 %2$s 类的对象',
|
||||
'UI:Delete:NotAllowedToDelete' => '您未被允许删除该对象',
|
||||
'UI:Delete:NotAllowedToUpdate_Fields' => '您未被允许更新下述栏目: %1$s',
|
||||
'UI:Error:NotEnoughRightsToDelete' => '该对象不能被删除, 因为当前用户没有足够权限',
|
||||
'UI:Error:CannotDeleteBecauseOfDepencies' => '该对象不能被删除, 因为一些手工操作必须事先完成',
|
||||
'UI:Archive_User_OnBehalfOf_User' => '%1$s on behalf of %2$s',
|
||||
'UI:Delete:AutomaticallyDeleted' => '自动删除了',
|
||||
'UI:Delete:AutomaticResetOf_Fields' => '自动重置栏目: %1$s',
|
||||
'UI:Delete:CleaningUpRefencesTo_Object' => '清除所有对 %1$s 的参照...',
|
||||
'UI:Delete:CleaningUpRefencesTo_Several_ObjectsOf_Class' => '清除所有对 %2$s 类的 %1$d 个对象的参照...',
|
||||
'UI:Delete:Done+' => '做了什么...',
|
||||
'UI:Delete:_Name_Class_Deleted' => '%1$s - %2$s 删除了.',
|
||||
'UI:Delete:ConfirmDeletionOf_Name' => '删除 %1$s',
|
||||
'UI:Delete:ConfirmDeletionOf_Count_ObjectsOf_Class' => '删除 %2$s 类的 %1$d 个对象',
|
||||
'UI:Delete:ShouldBeDeletedAtomaticallyButNotAllowed' => '应该自动删除, 但您未被允许这样做',
|
||||
'UI:Delete:MustBeDeletedManuallyButNotAllowed' => '必须手工删除 - 但您未被允许删除该对象, 请联系您的应用程序系统管理员',
|
||||
'UI:Delete:WillBeDeletedAutomatically' => '将被自动删除',
|
||||
'UI:Delete:MustBeDeletedManually' => '必须手工删除',
|
||||
'UI:Delete:CannotUpdateBecause_Issue' => '应该被自动更新, 但是: %1$s',
|
||||
'UI:Delete:WillAutomaticallyUpdate_Fields' => '将被自动更新 (重置: %1$s)',
|
||||
'UI:Delete:Count_Objects/LinksReferencing_Object' => '%1$d 个对象/链接参照了 %2$s',
|
||||
'UI:Delete:Count_Objects/LinksReferencingTheObjects' => '%1$d 个对象/链接参照了一些将删除的对象',
|
||||
'UI:Delete:ReferencesMustBeDeletedToEnsureIntegrity' => '为确保数据库的完整性, 任何参照应该更进一步清除',
|
||||
'UI:Delete:Consequence+' => '将做什么',
|
||||
'UI:Delete:SorryDeletionNotAllowed' => '抱歉, 您未被允许删除该对象, 请看上述详细解释',
|
||||
'UI:Delete:PleaseDoTheManualOperations' => '在要求删除该对象之前, 请先手工完成上述列出的操作',
|
||||
'UI:Delect:Confirm_Object' => '请确认您要删除 %1$s.',
|
||||
'UI:Delect:Confirm_Count_ObjectsOf_Class' => '请确认您要删除下列 %2$s 类的 %1$d 个对象.',
|
||||
'UI:WelcomeToITop' => '欢迎来到 iTop',
|
||||
'UI:DetailsPageTitle' => 'iTop - %1$s - %2$s 详细内容',
|
||||
'UI:ErrorPageTitle' => 'iTop - 错误',
|
||||
'UI:ObjectDoesNotExist' => '抱歉, 该对象不存在 (或您未被允许浏览该对象).',
|
||||
'UI:SearchResultsPageTitle' => 'iTop - 搜索结果',
|
||||
'UI:Search:NoSearch' => '没有可搜索的内容',
|
||||
'UI:FullTextSearchTitle_Text' => '"%1$s" 的结果:',
|
||||
'UI:Search:Count_ObjectsOf_Class_Found' => '发现 %2$s 类的 %1$d 个对象.',
|
||||
'UI:Search:NoObjectFound' => '未发现对象.',
|
||||
'UI:ModificationPageTitle_Object_Class' => 'iTop - %1$s - %2$s 修改',
|
||||
'UI:ModificationTitle_Class_Object' => '修改 %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:ClonePageTitle_Object_Class' => 'iTop - 克隆 %1$s - %2$s 修改',
|
||||
'UI:CloneTitle_Class_Object' => '克隆 %1$s: <span class=\"hilite\">%2$s</span>',
|
||||
'UI:CreationPageTitle_Class' => 'iTop - 创建一个新的 %1$s ',
|
||||
'UI:CreationTitle_Class' => '创建一个新的 %1$s',
|
||||
'UI:SelectTheTypeOf_Class_ToCreate' => '选择要创建的 %1$s 的类别:',
|
||||
'UI:Class_Object_NotUpdated' => '未发现变化, %1$s (%2$s) <strong>没有</strong> 被更新.',
|
||||
'UI:Class_Object_Updated' => '%1$s (%2$s) 更新了.',
|
||||
'UI:BulkDeletePageTitle' => 'iTop - 批量删除',
|
||||
'UI:BulkDeleteTitle' => '选择您要删除的对象:',
|
||||
'UI:PageTitle:ObjectCreated' => 'iTop 对象创建了.',
|
||||
'UI:Title:Object_Of_Class_Created' => '%1$s - %2$s 创建了.',
|
||||
'UI:Apply_Stimulus_On_Object_In_State_ToTarget_State' => '应用 %1$s 在对象: %2$s 上, 从 %3$s 状态到目标状态: %4$s.',
|
||||
'UI:ObjectCouldNotBeWritten' => '对象不能写入: %1$s',
|
||||
'UI:PageTitle:FatalError' => 'iTop - 致命错误',
|
||||
'UI:SystemIntrusion' => '访问被禁止. 您正尝试未被许可的操作.',
|
||||
'UI:FatalErrorMessage' => '致命错误, iTop 无法继续.',
|
||||
'UI:Error_Details' => '错误: %1$s.',
|
||||
|
||||
'UI:PageTitle:ClassProjections' => 'iTop 用户管理 - 类投射',
|
||||
'UI:PageTitle:ProfileProjections' => 'iTop 用户管理 - 简档投射',
|
||||
'UI:UserManagement:Class' => '类',
|
||||
'UI:UserManagement:Class+' => '对象的类',
|
||||
'UI:UserManagement:ProjectedObject' => '对象',
|
||||
'UI:UserManagement:ProjectedObject+' => '被投射的对象',
|
||||
'UI:UserManagement:AnyObject' => '* 任何 *',
|
||||
'UI:UserManagement:User' => '用户',
|
||||
'UI:UserManagement:User+' => '与该投射相关的用户',
|
||||
'UI:UserManagement:Profile' => '简档',
|
||||
'UI:UserManagement:Profile+' => '投射被指定的简档',
|
||||
'UI:UserManagement:Action:Read' => '读',
|
||||
'UI:UserManagement:Action:Read+' => '读/显示 对象',
|
||||
'UI:UserManagement:Action:Modify' => '修改',
|
||||
'UI:UserManagement:Action:Modify+' => '创建和编辑(修改)对象',
|
||||
'UI:UserManagement:Action:Delete' => '删除',
|
||||
'UI:UserManagement:Action:Delete+' => '删除对象',
|
||||
'UI:UserManagement:Action:BulkRead' => '大批量读 (导出)',
|
||||
'UI:UserManagement:Action:BulkRead+' => '列出对象或批量导出',
|
||||
'UI:UserManagement:Action:BulkModify' => '批量修改',
|
||||
'UI:UserManagement:Action:BulkModify+' => '批量创建/编辑 (CSV 导入)',
|
||||
'UI:UserManagement:Action:BulkDelete' => '批量删除',
|
||||
'UI:UserManagement:Action:BulkDelete+' => '批量删除对象',
|
||||
'UI:UserManagement:Action:Stimuli' => 'Stimuli',
|
||||
'UI:UserManagement:Action:Stimuli+' => '许可的 (复合的) 动作',
|
||||
'UI:UserManagement:Action' => '动作',
|
||||
'UI:UserManagement:Action+' => '该用户进行的动作',
|
||||
'UI:UserManagement:TitleActions' => '动作',
|
||||
'UI:UserManagement:Permission' => '许可',
|
||||
'UI:UserManagement:Permission+' => '用户的许可',
|
||||
'UI:UserManagement:Attributes' => '属性',
|
||||
'UI:UserManagement:ActionAllowed:Yes' => '是',
|
||||
'UI:UserManagement:ActionAllowed:No' => '否',
|
||||
'UI:UserManagement:AdminProfile+' => '系统管理员拥有数据库中所有对象的完全读/写访问权限.',
|
||||
'UI:UserManagement:NoLifeCycleApplicable' => 'N/A',
|
||||
'UI:UserManagement:NoLifeCycleApplicable+' => '该类未定义生命周期',
|
||||
'UI:UserManagement:GrantMatrix' => '授权矩阵',
|
||||
'UI:UserManagement:LinkBetween_User_And_Profile' => '链接 %1$s 和 %2$s',
|
||||
'UI:UserManagement:LinkBetween_User_And_Org' => '链接 %1$s 和 %2$s',
|
||||
|
||||
'Menu:AdminTools' => '管理工具',
|
||||
'Menu:AdminTools+' => '管理工具',
|
||||
'Menu:AdminTools?' => '具有系统管理员简档的用户才能获得的工具',
|
||||
|
||||
'UI:ChangeManagementMenu' => '变更管理',
|
||||
'UI:ChangeManagementMenu+' => '变更管理',
|
||||
'UI:ChangeManagementMenu:Title' => '变更概览',
|
||||
'UI-ChangeManagementMenu-ChangesByType' => '按类别划分的变更',
|
||||
'UI-ChangeManagementMenu-ChangesByStatus' => '按状态划分的变更',
|
||||
'UI-ChangeManagementMenu-ChangesByWorkgroup' => '按工作组划分的变更',
|
||||
'UI-ChangeManagementMenu-ChangesNotYetAssigned' => '尚未指派的变更',
|
||||
|
||||
'UI:ConfigurationItemsMenu'=> '配置项目',
|
||||
'UI:ConfigurationItemsMenu+'=> '所有设备',
|
||||
'UI:ConfigurationItemsMenu:Title' => '配置项概览',
|
||||
'UI-ConfigurationItemsMenu-ServersByCriticity' => '按关键性划分服务器',
|
||||
'UI-ConfigurationItemsMenu-PCsByCriticity' => '按关键性划分PC',
|
||||
'UI-ConfigurationItemsMenu-NWDevicesByCriticity' => '按关键性划分网络设备',
|
||||
'UI-ConfigurationItemsMenu-ApplicationsByCriticity' => '按关键性划分应用程序',
|
||||
|
||||
'UI:ConfigurationManagementMenu' => '配置管理',
|
||||
'UI:ConfigurationManagementMenu+' => '配置管理',
|
||||
'UI:ConfigurationManagementMenu:Title' => '基础架构概览',
|
||||
'UI-ConfigurationManagementMenu-InfraByType' => '按类别划分基础架构对象',
|
||||
'UI-ConfigurationManagementMenu-InfraByStatus' => '按状态划分基础架构对象',
|
||||
|
||||
'UI:ConfigMgmtMenuOverview:Title' => '配置管理仪表板',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus' => '按状态配置项目',
|
||||
'UI-ConfigMgmtMenuOverview-FunctionalCIByType' => '按类别配置项目',
|
||||
|
||||
'UI:RequestMgmtMenuOverview:Title' => '请求管理仪表板',
|
||||
'UI-RequestManagementOverview-RequestByService' => '按服务划分用户请求',
|
||||
'UI-RequestManagementOverview-RequestByPriority' => '按优先级划分用户请求',
|
||||
'UI-RequestManagementOverview-RequestUnassigned' => '尚未指派办理人的用户请求',
|
||||
|
||||
'UI:IncidentMgmtMenuOverview:Title' => '事件管理仪表板',
|
||||
'UI-IncidentManagementOverview-IncidentByService' => '按服务级划分事件',
|
||||
'UI-IncidentManagementOverview-IncidentByPriority' => '按优先级划分事件',
|
||||
'UI-IncidentManagementOverview-IncidentUnassigned' => '尚未指派办理人的事件',
|
||||
|
||||
'UI:ChangeMgmtMenuOverview:Title' => '变更管理仪表板',
|
||||
'UI-ChangeManagementOverview-ChangeByType' => '按类别划分变更',
|
||||
'UI-ChangeManagementOverview-ChangeUnassigned' => '尚未指派办理人的变更',
|
||||
'UI-ChangeManagementOverview-ChangeWithOutage' => '变更引起的停机',
|
||||
|
||||
'UI:ServiceMgmtMenuOverview:Title' => '服务管理仪表板',
|
||||
'UI-ServiceManagementOverview-CustomerContractToRenew' => '客户联系人需在30日内更新',
|
||||
'UI-ServiceManagementOverview-ProviderContractToRenew' => '供应商联系人需在30日内更新',
|
||||
|
||||
'UI:ContactsMenu' => '联系人',
|
||||
'UI:ContactsMenu+' => '联系人',
|
||||
'UI:ContactsMenu:Title' => '联系人概览',
|
||||
'UI-ContactsMenu-ContactsByLocation' => '按地域划分联系人',
|
||||
'UI-ContactsMenu-ContactsByType' => '按类别划分联系人',
|
||||
'UI-ContactsMenu-ContactsByStatus' => '按状态划分联系人',
|
||||
|
||||
'Menu:CSVImportMenu' => 'CSV 导入',
|
||||
'Menu:CSVImportMenu+' => '大批量创建或修改',
|
||||
|
||||
'Menu:DataModelMenu' => '数据模型',
|
||||
'Menu:DataModelMenu+' => '数据模型概览',
|
||||
|
||||
'Menu:ExportMenu' => '导出',
|
||||
'Menu:ExportMenu+' => '以HTML, CSV or XML格式导出任何查询的结果',
|
||||
|
||||
'Menu:NotificationsMenu' => '通知',
|
||||
'Menu:NotificationsMenu+' => '通知的配置',
|
||||
'UI:NotificationsMenu:Title' => '配置 <span class="hilite">通知</span>',
|
||||
'UI:NotificationsMenu:Help' => '帮助',
|
||||
'UI:NotificationsMenu:HelpContent' => '<p>在 iTop 中, 通知可以被完全客户化定制. 它们是基于两个对象集: <i>触发器和动作</i>.</p>
|
||||
<p><i><b>触发器</b></i> 定义了什么时候一个通知将被执行. 有3种触发器, 覆盖了一个对象生命周期的3个阶段:
|
||||
<ol>
|
||||
<li>"OnCreate" 触发器, 当某个特定类的对象创建时将触发</li>
|
||||
<li>"OnStateEnter" 触发器, 在某个给定类的对象进入某个特定状态前将触发(从另外一个状态而来)</li>
|
||||
<li>"OnStateLeave" 触发器, 在某个给定类的对象离开某个特定状态时将触发</li>
|
||||
</ol>
|
||||
</p>
|
||||
<p>
|
||||
<i><b>动作</b></i> 定义了触发器触发时要执行的动作. 目前, 仅有一种动作存在于发送邮件过程中.
|
||||
这些动作还定义了用于发送邮件及收件人,重要性等的模板.
|
||||
</p>
|
||||
<p>一个专门页面: <a href="../setup/email.test.php" target="_blank">email.test.php</a> 可用于测试和调试您的 PHP mail 配置.</p>
|
||||
<p>若要执行, 动作必须和触发器相关联.
|
||||
当与一个触发器关联时, 每个动作都被赋予一个顺序号, 规定了按什么样的顺序执行这些动作.</p>',
|
||||
'UI:NotificationsMenu:Triggers' => '触发器',
|
||||
'UI:NotificationsMenu:AvailableTriggers' => '可用的触发器',
|
||||
'UI:NotificationsMenu:OnCreate' => '当一个对象被创建',
|
||||
'UI:NotificationsMenu:OnStateEnter' => '当一个对象进入给定状态',
|
||||
'UI:NotificationsMenu:OnStateLeave' => '当一个对象离开给定状态',
|
||||
'UI:NotificationsMenu:Actions' => '动作',
|
||||
'UI:NotificationsMenu:AvailableActions' => '有效的动作',
|
||||
|
||||
'Menu:AuditCategories' => '审计类目',
|
||||
'Menu:AuditCategories+' => '审计类目',
|
||||
'Menu:Notifications:Title' => '审计类目',
|
||||
|
||||
'Menu:RunQueriesMenu' => '运行查询',
|
||||
'Menu:RunQueriesMenu+' => '运行任何查询',
|
||||
|
||||
'Menu:DataAdministration' => '数据管理',
|
||||
'Menu:DataAdministration+' => '数据管理',
|
||||
|
||||
'Menu:UniversalSearchMenu' => '通用搜索',
|
||||
'Menu:UniversalSearchMenu+' => '搜索所有...',
|
||||
|
||||
'Menu:ApplicationLogMenu' => 'Log de l\'application',
|
||||
'Menu:ApplicationLogMenu+' => 'Log de l\'application',
|
||||
'Menu:ApplicationLogMenu:Title' => 'Log de l\'application',
|
||||
|
||||
'Menu:UserManagementMenu' => '用户管理',
|
||||
'Menu:UserManagementMenu+' => '用户管理',
|
||||
|
||||
'Menu:ProfilesMenu' => '简档',
|
||||
'Menu:ProfilesMenu+' => '简档',
|
||||
'Menu:ProfilesMenu:Title' => '简档',
|
||||
|
||||
'Menu:UserAccountsMenu' => '用户帐户',
|
||||
'Menu:UserAccountsMenu+' => '用户帐户',
|
||||
'Menu:UserAccountsMenu:Title' => '用户帐户',
|
||||
|
||||
'UI:iTopVersion:Short' => 'iTop version %1$s',
|
||||
'UI:iTopVersion:Long' => 'iTop version %1$s-%2$s built on %3$s',
|
||||
'UI:PropertiesTab' => '属性',
|
||||
|
||||
'UI:OpenDocumentInNewWindow_' => '在新窗口打开文档: %1$s',
|
||||
'UI:DownloadDocument_' => '下载该文档: %1$s',
|
||||
'UI:Document:NoPreview' => '该类文档无法预览',
|
||||
|
||||
'UI:DeadlineMissedBy_duration' => 'Missed by %1$s',
|
||||
'UI:Deadline_LessThan1Min' => '< 1 min',
|
||||
'UI:Deadline_Minutes' => '%1$d min',
|
||||
'UI:Deadline_Hours_Minutes' => '%1$dh %2$dmin',
|
||||
'UI:Deadline_Days_Hours_Minutes' => '%1$dd %2$dh %3$dmin',
|
||||
'UI:Help' => '帮助',
|
||||
'UI:PasswordConfirm' => '(确认)',
|
||||
'UI:BeforeAdding_Class_ObjectsSaveThisObject' => '在添加更多 %1$s 对象前, 保存该对象.',
|
||||
'UI:DisplayThisMessageAtStartup' => '在启动时显示该消息',
|
||||
'UI:RelationshipGraph' => '图览',
|
||||
'UI:RelationshipList' => '列表',
|
||||
|
||||
'Portal:Title' => 'iTop 用户门户',
|
||||
'Portal:Refresh' => '刷新',
|
||||
'Portal:Back' => '返回',
|
||||
'Portal:CreateNewRequest' => '创建一个新的请求',
|
||||
'Portal:ChangeMyPassword' => '改变我的密码',
|
||||
'Portal:Disconnect' => '断开',
|
||||
'Portal:OpenRequests' => '我的待解决的请求',
|
||||
'Portal:ResolvedRequests' => '我的已解决的请求',
|
||||
'Portal:SelectService' => '从类目中选择一个服务:',
|
||||
'Portal:PleaseSelectOneService' => '请选择一个服务',
|
||||
'Portal:SelectSubcategoryFrom_Service' => '从服务中选择一个子类 %1$s:',
|
||||
'Portal:PleaseSelectAServiceSubCategory' => '请选择一个子类',
|
||||
'Portal:DescriptionOfTheRequest' => '输入您的请求描述:',
|
||||
'Portal:TitleRequestDetailsFor_Request' => '请求明细内容 %1$s:',
|
||||
'Portal:NoOpenRequest' => '该类目中没有请求.',
|
||||
'Portal:Button:CloseTicket' => '关闭这个单据',
|
||||
'Portal:EnterYourCommentsOnTicket' => '输入您对于该单据解决情况的评述:',
|
||||
'Portal:ErrorNoContactForThisUser' => '错误: 当前用户没有和一个联系人或人员关联. 请联系您的系统管理员.',
|
||||
|
||||
'Enum:Undefined' => '未定义',
|
||||
));
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
Before Width: | Height: | Size: 842 B |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 148 B |
|
Before Width: | Height: | Size: 4.0 KiB |
6
js/ckeditor/adapters/jquery.js
vendored
@@ -1,6 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
(function(){CKEDITOR.config.jqueryOverrideVal=typeof CKEDITOR.config.jqueryOverrideVal=='undefined'?true:CKEDITOR.config.jqueryOverrideVal;var a=window.jQuery;if(typeof a=='undefined')return;a.extend(a.fn,{ckeditorGet:function(){var b=this.eq(0).data('ckeditorInstance');if(!b)throw 'CKEditor not yet initialized, use ckeditor() with callback.';return b;},ckeditor:function(b,c){if(!a.isFunction(b)){var d=c;c=b;b=d;}c=c||{};this.filter('textarea, div, p').each(function(){var e=a(this),f=e.data('ckeditorInstance'),g=e.data('_ckeditorInstanceLock'),h=this;if(f&&!g){if(b)b.apply(f,[this]);}else if(!g){if(c.autoUpdateElement||typeof c.autoUpdateElement=='undefined'&&CKEDITOR.config.autoUpdateElement)c.autoUpdateElementJquery=true;c.autoUpdateElement=false;e.data('_ckeditorInstanceLock',true);f=CKEDITOR.replace(h,c);e.data('ckeditorInstance',f);f.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}i.removeListener('instanceReady',this.callee);j.on('dataReady',function(){e.trigger('setData.ckeditor',[j]);});j.on('getData',function(l){e.trigger('getData.ckeditor',[j,l.data]);},999);j.on('destroy',function(){e.trigger('destroy.ckeditor',[j]);});if(j.config.autoUpdateElementJquery&&e.is('textarea')&&e.parents('form').length){var k=function(){e.ckeditor(function(){j.updateElement();});};e.parents('form').submit(k);e.parents('form').bind('form-pre-serialize',k);e.bind('destroy.ckeditor',function(){e.parents('form').unbind('submit',k);e.parents('form').unbind('form-pre-serialize',k);});}j.on('destroy',function(){e.data('ckeditorInstance',null);});e.data('_ckeditorInstanceLock',null);e.trigger('instanceReady.ckeditor',[j]);if(b)b.apply(j,[h]);},0);},null,null,9999);}else CKEDITOR.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}if(j.element.$==h)if(b)b.apply(j,[h]);},0);},null,null,9999);});return this;}});if(CKEDITOR.config.jqueryOverrideVal)a.fn.val=CKEDITOR.tools.override(a.fn.val,function(b){return function(c,d){var e=typeof c!='undefined',f;this.each(function(){var g=a(this),h=g.data('ckeditorInstance');if(!d&&g.is('textarea')&&h){if(e)h.setData(c);else{f=h.getData();return null;}}else if(e)b.call(g,c);else{f=b.call(g);return null;}return true;});return e?this:f;};});})();
|
||||
137
js/ckeditor/ckeditor.js
vendored
@@ -1,137 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
(function(){if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'AA4E4NT',version:'3.4.2',revision:'6041',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;if(!d)throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/'&&!/[&?]t=/.test(d))d+=(d.indexOf('?')>=0?'&':'?')+'t='+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b){var c=a.event.prototype;for(var d in c){if(b[d]==undefined)b[d]=c[d];}};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e<f.length;e++){if(f[e].fn==d)return e;}return-1;}};return{on:function(d,e,f,g,h){var i=b(this),j=i[d]||(i[d]=new c(d));if(j.getListenerIndex(e)<0){var k=j.listeners;if(!f)f=this;if(isNaN(h))h=10;var l=this,m=function(o,p,q,r){var s={name:d,sender:this,editor:o,data:p,listenerData:g,stop:q,cancel:r,removeListener:function(){l.removeListener(d,e);}};e.call(f,s);return s.data;};m.fn=e;m.priority=h;for(var n=k.length-1;n>=0;n--){if(k[n].priority<=h){k.splice(n+1,0,m);return;}}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o<n.length;o++){var p=n[o].call(this,j,i,e,g);if(typeof p!='undefined')i=p;if(d||f)break;}}}var q=f||(typeof i=='undefined'?false:i);d=l;f=m;return q;};})(),fireOnce:function(d,e,f){var g=this.fire(d,e,f);delete b(this)[d];return g;},removeListener:function(d,e){var f=b(this)[d];if(f){var g=f.getListenerIndex(e);if(g>=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];
|
||||
return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d,e){var f=this;f._={instanceConfig:b,element:c,data:e};f.elementMode=d||0;a.event.call(f);f._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&d.tagName.toLowerCase()!='textarea'){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c,d){var e=b;if(typeof e!='object'){e=document.getElementById(b);if(!e)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,e,2,d);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',mobile:b.indexOf('mobile')>-1,isCustomDomain:function(){if(!this.ie)return false;var g=document.domain,h=window.location.hostname;return g!=h&&g!='['+h+']';}};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*100+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=!d.mobile&&(d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false);d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.air?'air':d.webkit?'webkit':'unknown');if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?document.documentMode:'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';
|
||||
}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=1;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=1;var d=function(e,f,g,h){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var i=g(e,f,h);a.add(i);return i;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f,g){return d(e,f,a.editor.appendTo,g);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f<e.length;f++){var g=null,h=e[f],i=h.name;if(!h.name&&!h.id)continue;if(typeof arguments[0]=='string'){var j=new RegExp('(?:^|\\s)'+arguments[0]+'(?:$|\\s)');if(!j.test(h.className))continue;}else if(typeof arguments[0]=='function'){g={};if(arguments[0](h,g)===false)continue;}this.replace(h,g);}};(function(){var e=function(){var f=a.loadFullCore,g=a.loadFullCoreTimeout;if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);a.status='basic_ready';if(f&&f._load)f();else if(g)setTimeout(function(){if(a.loadFullCore)a.loadFullCore();},g*1000);};if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();a.status='basic_loaded';})();a.dom={};var d=a.dom;(function(){var e=[];a.on('reset',function(){e=[];});a.tools={arrayCompare:function(f,g){if(!f&&!g)return true;if(!f||!g||f.length!=g.length)return false;for(var h=0;h<f.length;h++){if(f[h]!=g[h])return false;}return true;},clone:function(f){var g;if(f&&f instanceof Array){g=[];for(var h=0;h<f.length;h++)g[h]=this.clone(f[h]);return g;}if(f===null||typeof f!='object'||f instanceof String||f instanceof Number||f instanceof Boolean||f instanceof Date||f instanceof RegExp)return f;g=new f.constructor();for(var i in f){var j=f[i];g[i]=this.clone(j);}return g;},capitalize:function(f){return f.charAt(0).toUpperCase()+f.substring(1).toLowerCase();},extend:function(f){var g=arguments.length,h,i;if(typeof (h=arguments[g-1])=='boolean')g--;else if(typeof (h=arguments[g-2])=='boolean'){i=arguments[g-1];g-=2;}for(var j=1;j<g;j++){var k=arguments[j];for(var l in k){if(h===true||f[l]==undefined)if(!i||l in i)f[l]=k[l];
|
||||
}}return f;},prototypedCopy:function(f){var g=function(){};g.prototype=f;return new g();},isArray:function(f){return!!f&&f instanceof Array;},isEmpty:function(f){for(var g in f){if(f.hasOwnProperty(g))return false;}return true;},cssStyleToDomStyle:(function(){var f=document.createElement('div').style,g=typeof f.cssFloat!='undefined'?'cssFloat':typeof f.styleFloat!='undefined'?'styleFloat':'float';return function(h){if(h=='float')return g;else return h.replace(/-./g,function(i){return i.substr(1).toUpperCase();});};})(),buildStyleHtml:function(f){f=[].concat(f);var g,h=[];for(var i=0;i<f.length;i++){g=f[i];if(/@import|[{}]/.test(g))h.push('<style>'+g+'</style>');else h.push('<link type="text/css" rel=stylesheet href="'+g+'">');}return h.join('');},htmlEncode:function(f){var g=function(k){var l=new d.element('span');l.setText(k);return l.getHtml();},h=g('\n').toLowerCase()=='<br>'?function(k){return g(k).replace(/<br>/gi,'\n');}:g,i=g('>')=='>'?function(k){return h(k).replace(/>/g,'>');}:h,j=g(' ')==' '?function(k){return i(k).replace(/ /g,' ');}:i;this.htmlEncode=j;return this.htmlEncode(f);},htmlEncodeAttr:function(f){return f.replace(/"/g,'"').replace(/</g,'<').replace(/>/g,'>');},getNextNumber:(function(){var f=0;return function(){return++f;};})(),getNextId:function(){return 'cke_'+this.getNextNumber();},override:function(f,g){return g(f);},setTimeout:function(f,g,h,i,j){if(!j)j=window;if(!h)h=j;return j.setTimeout(function(){if(i)f.apply(h,[].concat(i));else f.apply(h);},g||0);},trim:(function(){var f=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(f,'');};})(),ltrim:(function(){var f=/^[ \t\n\r]+/g;return function(g){return g.replace(f,'');};})(),rtrim:(function(){var f=/[ \t\n\r]+$/g;return function(g){return g.replace(f,'');};})(),indexOf:Array.prototype.indexOf?function(f,g){return f.indexOf(g);}:function(f,g){for(var h=0,i=f.length;h<i;h++){if(f[h]===g)return h;}return-1;},bind:function(f,g){return function(){return f.apply(g,arguments);};},createClass:function(f){var g=f.$,h=f.base,i=f.privates||f._,j=f.proto,k=f.statics;if(i){var l=g;g=function(){var p=this;var m=p._||(p._={});for(var n in i){var o=i[n];m[n]=typeof o=='function'?a.tools.bind(o,p):o;}l.apply(p,arguments);};}if(h){g.prototype=this.prototypedCopy(h.prototype);g.prototype['constructor']=g;g.prototype.base=function(){this.base=h.prototype.base;h.apply(this,arguments);this.base=arguments.callee;};}if(j)this.extend(g.prototype,j,true);if(k)this.extend(g,k,true);
|
||||
return g;},addFunction:function(f,g){return e.push(function(){f.apply(g||this,arguments);})-1;},removeFunction:function(f){e[f]=null;},callFunction:function(f){var g=e[f];return g&&g.apply(window,Array.prototype.slice.call(arguments,1));},cssLength:(function(){var f=/^\d+(?:\.\d+)?$/;return function(g){return g+(f.test(g)?'px':'');};})(),repeat:function(f,g){return new Array(g+1).join(f);},tryThese:function(){var f;for(var g=0,h=arguments.length;g<h;g++){var i=arguments[g];try{f=i();break;}catch(j){}}return f;},genKey:function(){return Array.prototype.slice.call(arguments).join('-');}};})();var e=a.tools;a.dtd=(function(){var f=e.extend,g={isindex:1,fieldset:1},h={input:1,button:1,select:1,textarea:1,label:1},i=f({a:1},h),j=f({iframe:1},i),k={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},l={ins:1,del:1,script:1,style:1},m=f({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},l),n=f({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},m),o=f({p:1},n),p=f({iframe:1},n,h),q={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1},r=f({a:1},p),s={tr:1},t={'#':1},u=f({param:1},q),v=f({form:1},g,j,k,o),w={li:1},x={style:1,script:1},y={base:1,link:1,meta:1,title:1},z=f(y,x),A={head:1,body:1},B={html:1},C={address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};return{$nonBodyContent:f(B,A,y),$block:C,$blockLimit:{body:1,div:1,td:1,th:1,caption:1,form:1},$inline:r,$body:f({script:1,style:1},C),$cdata:{script:1,style:1},$empty:{area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1},$listItem:{dd:1,dt:1,li:1},$list:{ul:1,ol:1,dl:1},$nonEditable:{applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1},$removeEmpty:{abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},html:A,head:z,style:t,script:t,body:v,base:{},link:{},meta:{},title:t,col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:v,td:v,br:{},th:v,center:v,kbd:r,button:f(o,k),basefont:{},h5:r,h4:r,samp:r,h6:r,ol:w,h1:r,h3:r,option:t,h2:r,form:f(g,j,k,o),select:{optgroup:1,option:1},font:r,ins:r,menu:w,abbr:r,label:r,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:r,script:t,tfoot:s,cite:r,li:v,input:{},iframe:v,strong:r,textarea:t,noframes:v,big:r,small:r,span:r,hr:{},dt:r,sub:r,optgroup:{option:1},param:{},bdo:r,'var':r,div:v,object:u,sup:r,dd:v,strike:r,area:{},dir:w,map:f({area:1,form:1,p:1},g,l,k),applet:u,dl:{dt:1,dd:1},del:r,isindex:{},fieldset:f({legend:1},q),thead:s,ul:w,acronym:r,b:r,a:p,blockquote:v,caption:r,i:r,u:r,tbody:s,s:r,address:f(j,o),tt:r,legend:r,q:r,pre:f(m,i),p:r,em:r,dfn:r};
|
||||
})();var f=a.dtd;d.event=function(g){this.$=g;};d.event.prototype={getKey:function(){return this.$.keyCode||this.$.which;},getKeystroke:function(){var h=this;var g=h.getKey();if(h.$.ctrlKey||h.$.metaKey)g+=1000;if(h.$.shiftKey)g+=2000;if(h.$.altKey)g+=4000;return g;},preventDefault:function(g){var h=this.$;if(h.preventDefault)h.preventDefault();else h.returnValue=false;if(g)this.stopPropagation();},stopPropagation:function(){var g=this.$;if(g.stopPropagation)g.stopPropagation();else g.cancelBubble=true;},getTarget:function(){var g=this.$.target||this.$.srcElement;return g?new d.node(g):null;}};a.CTRL=1000;a.SHIFT=2000;a.ALT=4000;d.domObject=function(g){if(g)this.$=g;};d.domObject.prototype=(function(){var g=function(h,i){return function(j){if(typeof a!='undefined')h.fire(i,new d.event(j));};};return{getPrivate:function(){var h;if(!(h=this.getCustomData('_')))this.setCustomData('_',h={});return h;},on:function(h){var k=this;var i=k.getCustomData('_cke_nativeListeners');if(!i){i={};k.setCustomData('_cke_nativeListeners',i);}if(!i[h]){var j=i[h]=g(k,h);if(k.$.attachEvent)k.$.attachEvent('on'+h,j);else if(k.$.addEventListener)k.$.addEventListener(h,j,!!a.event.useCapture);}return a.event.prototype.on.apply(k,arguments);},removeListener:function(h){var k=this;a.event.prototype.removeListener.apply(k,arguments);if(!k.hasListeners(h)){var i=k.getCustomData('_cke_nativeListeners'),j=i&&i[h];if(j){if(k.$.detachEvent)k.$.detachEvent('on'+h,j);else if(k.$.removeEventListener)k.$.removeEventListener(h,j,false);delete i[h];}}},removeAllListeners:function(){var k=this;var h=k.getCustomData('_cke_nativeListeners');for(var i in h){var j=h[i];if(k.$.detachEvent)k.$.detachEvent('on'+i,j);else if(k.$.removeEventListener)k.$.removeEventListener(i,j,false);delete h[i];}}};})();(function(g){var h={};a.on('reset',function(){h={};});g.equals=function(i){return i&&i.$===this.$;};g.setCustomData=function(i,j){var k=this.getUniqueId(),l=h[k]||(h[k]={});l[i]=j;return this;};g.getCustomData=function(i){var j=this.$._cke_expando,k=j&&h[j];return k&&k[i];};g.removeCustomData=function(i){var j=this.$._cke_expando,k=j&&h[j],l=k&&k[i];if(typeof l!='undefined')delete k[i];return l||null;};g.clearCustomData=function(){this.removeAllListeners();var i=this.$._cke_expando;i&&delete h[i];};g.getUniqueId=function(){return this.$._cke_expando||(this.$._cke_expando=e.getNextNumber());};a.event.implementOn(g);})(d.domObject.prototype);d.window=function(g){d.domObject.call(this,g);};d.window.prototype=new d.domObject();
|
||||
e.extend(d.window.prototype,{focus:function(){if(b.webkit&&this.$.parent)this.$.parent.focus();this.$.focus();},getViewPaneSize:function(){var g=this.$.document,h=g.compatMode=='CSS1Compat';return{width:(h?g.documentElement.clientWidth:g.body.clientWidth)||0,height:(h?g.documentElement.clientHeight:g.body.clientHeight)||0};},getScrollPosition:function(){var g=this.$;if('pageXOffset' in g)return{x:g.pageXOffset||0,y:g.pageYOffset||0};else{var h=g.document;return{x:h.documentElement.scrollLeft||h.body.scrollLeft||0,y:h.documentElement.scrollTop||h.body.scrollTop||0};}}});d.document=function(g){d.domObject.call(this,g);};var g=d.document;g.prototype=new d.domObject();e.extend(g.prototype,{appendStyleSheet:function(h){if(this.$.createStyleSheet)this.$.createStyleSheet(h);else{var i=new d.element('link');i.setAttributes({rel:'stylesheet',type:'text/css',href:h});this.getHead().append(i);}},appendStyleText:function(h){var k=this;if(k.$.createStyleSheet){var i=k.$.createStyleSheet('');i.cssText=h;}else{var j=new d.element('style',k);j.append(new d.text(h,k));k.getHead().append(j);}},createElement:function(h,i){var j=new d.element(h,this);if(i){if(i.attributes)j.setAttributes(i.attributes);if(i.styles)j.setStyles(i.styles);}return j;},createText:function(h){return new d.text(h,this);},focus:function(){this.getWindow().focus();},getById:function(h){var i=this.$.getElementById(h);return i?new d.element(i):null;},getByAddress:function(h,i){var j=this.$.documentElement;for(var k=0;j&&k<h.length;k++){var l=h[k];if(!i){j=j.childNodes[l];continue;}var m=-1;for(var n=0;n<j.childNodes.length;n++){var o=j.childNodes[n];if(i===true&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;m++;if(m==l){j=o;break;}}}return j?new d.node(j):null;},getElementsByTag:function(h,i){if(!c&&i)h=i+':'+h;return new d.nodeList(this.$.getElementsByTagName(h));},getHead:function(){var h=this.$.getElementsByTagName('head')[0];h=new d.element(h);return(this.getHead=function(){return h;})();},getBody:function(){var h=new d.element(this.$.body);return(this.getBody=function(){return h;})();},getDocumentElement:function(){var h=new d.element(this.$.documentElement);return(this.getDocumentElement=function(){return h;})();},getWindow:function(){var h=new d.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return h;})();}});d.node=function(h){if(h){switch(h.nodeType){case 9:return new g(h);case 1:return new d.element(h);case 3:return new d.text(h);}d.domObject.call(this,h);
|
||||
}return this;};d.node.prototype=new d.domObject();a.NODE_ELEMENT=1;a.NODE_DOCUMENT=9;a.NODE_TEXT=3;a.NODE_COMMENT=8;a.NODE_DOCUMENT_FRAGMENT=11;a.POSITION_IDENTICAL=0;a.POSITION_DISCONNECTED=1;a.POSITION_FOLLOWING=2;a.POSITION_PRECEDING=4;a.POSITION_IS_CONTAINED=8;a.POSITION_CONTAINS=16;e.extend(d.node.prototype,{appendTo:function(h,i){h.append(this,i);return h;},clone:function(h,i){var j=this.$.cloneNode(h);if(!i){var k=function(l){if(l.nodeType!=1)return;l.removeAttribute('id',false);l.removeAttribute('_cke_expando',false);var m=l.childNodes;for(var n=0;n<m.length;n++)k(m[n]);};k(j);}return new d.node(j);},hasPrevious:function(){return!!this.$.previousSibling;},hasNext:function(){return!!this.$.nextSibling;},insertAfter:function(h){h.$.parentNode.insertBefore(this.$,h.$.nextSibling);return h;},insertBefore:function(h){h.$.parentNode.insertBefore(this.$,h.$);return h;},insertBeforeMe:function(h){this.$.parentNode.insertBefore(h.$,this.$);return h;},getAddress:function(h){var i=[],j=this.getDocument().$.documentElement,k=this.$;while(k&&k!=j){var l=k.parentNode,m=-1;if(l){for(var n=0;n<l.childNodes.length;n++){var o=l.childNodes[n];if(h&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;m++;if(o==k)break;}i.unshift(m);}k=l;}return i;},getDocument:function(){var h=new g(this.$.ownerDocument||this.$.parentNode.ownerDocument);return(this.getDocument=function(){return h;})();},getIndex:function(){var h=this.$,i=h.parentNode&&h.parentNode.firstChild,j=-1;while(i){j++;if(i==h)return j;i=i.nextSibling;}return-1;},getNextSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getFirst&&this.getFirst(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getNext();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getNext();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&i!=l.type)return l.getNextSourceNode(false,i,j);return l;},getPreviousSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getLast&&this.getLast(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getPrevious();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getPrevious();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&l.type!=i)return l.getPreviousSourceNode(false,i,j);return l;},getPrevious:function(h){var i=this.$,j;do{i=i.previousSibling;j=i&&new d.node(i);}while(j&&h&&!h(j))return j;
|
||||
},getNext:function(h){var i=this.$,j;do{i=i.nextSibling;j=i&&new d.node(i);}while(j&&h&&!h(j))return j;},getParent:function(){var h=this.$.parentNode;return h&&h.nodeType==1?new d.node(h):null;},getParents:function(h){var i=this,j=[];do j[h?'push':'unshift'](i);while(i=i.getParent())return j;},getCommonAncestor:function(h){var j=this;if(h.equals(j))return j;if(h.contains&&h.contains(j))return h;var i=j.contains?j:j.getParent();do{if(i.contains(h))return i;}while(i=i.getParent())return null;},getPosition:function(h){var i=this.$,j=h.$;if(i.compareDocumentPosition)return i.compareDocumentPosition(j);if(i==j)return 0;if(this.type==1&&h.type==1){if(i.contains){if(i.contains(j))return 16+4;if(j.contains(i))return 8+2;}if('sourceIndex' in i)return i.sourceIndex<0||j.sourceIndex<0?1:i.sourceIndex<j.sourceIndex?4:2;}var k=this.getAddress(),l=h.getAddress(),m=Math.min(k.length,l.length);for(var n=0;n<=m-1;n++){if(k[n]!=l[n]){if(n<m)return k[n]<l[n]?4:2;break;}}return k.length<l.length?16+4:8+2;},getAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return new d.node(j);j=j.parentNode;}return null;},hasAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return true;j=j.parentNode;}return false;},move:function(h,i){h.append(this.remove(),i);},remove:function(h){var i=this.$,j=i.parentNode;if(j){if(h)for(var k;k=i.firstChild;)j.insertBefore(i.removeChild(k),i);j.removeChild(i);}return this;},replace:function(h){this.insertBefore(h);h.remove();},trim:function(){this.ltrim();this.rtrim();},ltrim:function(){var k=this;var h;while(k.getFirst&&(h=k.getFirst())){if(h.type==3){var i=e.ltrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(j-i.length);k.$.removeChild(k.$.firstChild);}}break;}},rtrim:function(){var k=this;var h;while(k.getLast&&(h=k.getLast())){if(h.type==3){var i=e.rtrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(i.length);k.$.lastChild.parentNode.removeChild(k.$.lastChild);}}break;}if(!c&&!b.opera){h=k.$.lastChild;if(h&&h.type==1&&h.nodeName.toLowerCase()=='br')h.parentNode.removeChild(h);}},isReadOnly:function(){var h=this;while(h){if(h.type==1){if(h.is('body')||h.getCustomData('_cke_notReadOnly'))break;if(h.getAttribute('contentEditable')=='false')return h;else if(h.getAttribute('contentEditable')=='true')break;}h=h.getParent();}return false;}});d.nodeList=function(h){this.$=h;
|
||||
};d.nodeList.prototype={count:function(){return this.$.length;},getItem:function(h){var i=this.$[h];return i?new d.node(i):null;}};d.element=function(h,i){if(typeof h=='string')h=(i?i.$:document).createElement(h);d.domObject.call(this,h);};var h=d.element;h.get=function(i){return i&&(i.$?i:new h(i));};h.prototype=new d.node();h.createFromHtml=function(i,j){var k=new h('div',j);k.setHtml(i);return k.getFirst().remove();};h.setMarker=function(i,j,k,l){var m=j.getCustomData('list_marker_id')||j.setCustomData('list_marker_id',e.getNextNumber()).getCustomData('list_marker_id'),n=j.getCustomData('list_marker_names')||j.setCustomData('list_marker_names',{}).getCustomData('list_marker_names');i[m]=j;n[k]=1;return j.setCustomData(k,l);};h.clearAllMarkers=function(i){for(var j in i)h.clearMarkers(i,i[j],1);};h.clearMarkers=function(i,j,k){var l=j.getCustomData('list_marker_names'),m=j.getCustomData('list_marker_id');for(var n in l)j.removeCustomData(n);j.removeCustomData('list_marker_names');if(k){j.removeCustomData('list_marker_id');delete i[m];}};e.extend(h.prototype,{type:1,addClass:function(i){var j=this.$.className;if(j){var k=new RegExp('(?:^|\\s)'+i+'(?:\\s|$)','');if(!k.test(j))j+=' '+i;}this.$.className=j||i;},removeClass:function(i){var j=this.getAttribute('class');if(j){var k=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','i');if(k.test(j)){j=j.replace(k,'').replace(/^\s+/,'');if(j)this.setAttribute('class',j);else this.removeAttribute('class');}}},hasClass:function(i){var j=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','');return j.test(this.getAttribute('class'));},append:function(i,j){var k=this;if(typeof i=='string')i=k.getDocument().createElement(i);if(j)k.$.insertBefore(i.$,k.$.firstChild);else k.$.appendChild(i.$);return i;},appendHtml:function(i){var k=this;if(!k.$.childNodes.length)k.setHtml(i);else{var j=new h('div',k.getDocument());j.setHtml(i);j.moveChildren(k);}},appendText:function(i){if(this.$.text!=undefined)this.$.text+=i;else this.append(new d.text(i));},appendBogus:function(){var k=this;var i=k.getLast();while(i&&i.type==3&&!e.rtrim(i.getText()))i=i.getPrevious();if(!i||!i.is||!i.is('br')){var j=b.opera?k.getDocument().createText(''):k.getDocument().createElement('br');b.gecko&&j.setAttribute('type','_moz');k.append(j);}},breakParent:function(i){var l=this;var j=new d.range(l.getDocument());j.setStartAfter(l);j.setEndAfter(i);var k=j.extractContents();j.insertNode(l.remove());k.insertAfterNode(l);},contains:c||b.webkit?function(i){var j=this.$;return i.type!=1?j.contains(i.getParent().$):j!=i.$&&j.contains(i.$);
|
||||
}:function(i){return!!(this.$.compareDocumentPosition(i.$)&16);},focus:function(){try{this.$.focus();}catch(i){}},getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;},getOuterHtml:function(){var j=this;if(j.$.outerHTML)return j.$.outerHTML.replace(/<\?[^>]*>/,'');var i=j.$.ownerDocument.createElement('div');i.appendChild(j.$.cloneNode(true));return i.innerHTML;},setHtml:function(i){return this.$.innerHTML=i;},setText:function(i){h.prototype.setText=this.$.innerText!=undefined?function(j){return this.$.innerText=j;}:function(j){return this.$.textContent=j;};return this.setText(i);},getAttribute:(function(){var i=function(j){return this.$.getAttribute(j,2);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){var n=this;switch(j){case 'class':j='className';break;case 'tabindex':var k=i.call(n,j);if(k!==0&&n.$.tabIndex===0)k=null;return k;break;case 'checked':var l=n.$.attributes.getNamedItem(j),m=l.specified?l.nodeValue:n.$.checked;return m?'checked':null;case 'hspace':return n.$.hspace;case 'style':return n.$.style.cssText;}return i.call(n,j);};else return i;})(),getChildren:function(){return new d.nodeList(this.$.childNodes);},getComputedStyle:c?function(i){return this.$.currentStyle[e.cssStyleToDomStyle(i)];}:function(i){return this.getWindow().$.getComputedStyle(this.$,'').getPropertyValue(i);},getDtd:function(){var i=f[this.getName()];this.getDtd=function(){return i;};return i;},getElementsByTag:g.prototype.getElementsByTag,getTabIndex:c?function(){var i=this.$.tabIndex;if(i===0&&!f.$tabIndex[this.getName()]&&parseInt(this.getAttribute('tabindex'),10)!==0)i=-1;return i;}:b.webkit?function(){var i=this.$.tabIndex;if(i==undefined){i=parseInt(this.getAttribute('tabindex'),10);if(isNaN(i))i=-1;}return i;}:function(){return this.$.tabIndex;},getText:function(){return this.$.textContent||this.$.innerText||'';},getWindow:function(){return this.getDocument().getWindow();},getId:function(){return this.$.id||null;},getNameAtt:function(){return this.$.name||null;},getName:function(){var i=this.$.nodeName.toLowerCase();if(c){var j=this.$.scopeName;if(j!='HTML')i=j.toLowerCase()+':'+i;}return(this.getName=function(){return i;})();},getValue:function(){return this.$.value;},getFirst:function(i){var j=this.$.firstChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getNext(i);return k;},getLast:function(i){var j=this.$.lastChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getPrevious(i);return k;},getStyle:function(i){return this.$.style[e.cssStyleToDomStyle(i)];
|
||||
},is:function(){var i=this.getName();for(var j=0;j<arguments.length;j++){if(arguments[j]==i)return true;}return false;},isEditable:function(){var i=this.getName(),j=!f.$nonEditable[i]&&(f[i]||f.span);return j&&j['#'];},isIdentical:function(i){if(this.getName()!=i.getName())return false;var j=this.$.attributes,k=i.$.attributes,l=j.length,m=k.length;if(!c&&l!=m)return false;for(var n=0;n<l;n++){var o=j[n];if((!c||o.specified&&o.nodeName!='_cke_expando')&&o.nodeValue!=i.getAttribute(o.nodeName))return false;}if(c)for(n=0;n<m;n++){o=k[n];if(o.specified&&o.nodeName!='_cke_expando'&&o.nodeValue!=this.getAttribute(o.nodeName))return false;}return true;},isVisible:function(){var i=!!this.$.offsetHeight&&this.getComputedStyle('visibility')!='hidden',j,k;if(i&&(b.webkit||b.opera)){j=this.getWindow();if(!j.equals(a.document.getWindow())&&(k=j.$.frameElement))i=new h(k).isVisible();}return i;},isEmptyInlineRemoveable:function(){if(!f.$removeEmpty[this.getName()])return false;var i=this.getChildren();for(var j=0,k=i.count();j<k;j++){var l=i.getItem(j);if(l.type==1&&l.getAttribute('_cke_bookmark'))continue;if(l.type==1&&!l.isEmptyInlineRemoveable()||l.type==3&&e.trim(l.getText()))return false;}return true;},hasAttributes:c&&(b.ie7Compat||b.ie6Compat)?function(){var i=this.$.attributes;for(var j=0;j<i.length;j++){var k=i[j];switch(k.nodeName){case 'class':if(this.getAttribute('class'))return true;case '_cke_expando':continue;default:if(k.specified)return true;}}return false;}:function(){var i=this.$.attributes,j=i.length,k={_cke_expando:1,_moz_dirty:1};return j>0&&(j>2||!k[i[0].nodeName]||j==2&&!k[i[1].nodeName]);},hasAttribute:function(i){var j=this.$.attributes.getNamedItem(i);return!!(j&&j.specified);},hide:function(){this.setStyle('display','none');},moveChildren:function(i,j){var k=this.$;i=i.$;if(k==i)return;var l;if(j)while(l=k.lastChild)i.insertBefore(k.removeChild(l),i.firstChild);else while(l=k.firstChild)i.appendChild(k.removeChild(l));},mergeSiblings:(function(){function i(j,k,l){if(k&&k.type==1){var m=[];while(k.getAttribute('_cke_bookmark')||k.isEmptyInlineRemoveable()){m.push(k);k=l?k.getNext():k.getPrevious();if(!k||k.type!=1)return;}if(j.isIdentical(k)){var n=l?j.getLast():j.getFirst();while(m.length)m.shift().move(j,!l);k.moveChildren(j,!l);k.remove();if(n&&n.type==1)n.mergeSiblings();}}};return function(){var j=this;if(!(f.$removeEmpty[j.getName()]||j.is('a')))return;i(j,j.getNext(),true);i(j,j.getPrevious());};})(),show:function(){this.setStyles({display:'',visibility:''});
|
||||
},setAttribute:(function(){var i=function(j,k){this.$.setAttribute(j,k);return this;};if(c&&(b.ie7Compat||b.ie6Compat))return function(j,k){var l=this;if(j=='class')l.$.className=k;else if(j=='style')l.$.style.cssText=k;else if(j=='tabindex')l.$.tabIndex=k;else if(j=='checked')l.$.checked=k;else i.apply(l,arguments);return l;};else return i;})(),setAttributes:function(i){for(var j in i)this.setAttribute(j,i[j]);return this;},setValue:function(i){this.$.value=i;return this;},removeAttribute:(function(){var i=function(j){this.$.removeAttribute(j);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){if(j=='class')j='className';else if(j=='tabindex')j='tabIndex';i.call(this,j);};else return i;})(),removeAttributes:function(i){if(e.isArray(i))for(var j=0;j<i.length;j++)this.removeAttribute(i[j]);else for(var k in i)i.hasOwnProperty(k)&&this.removeAttribute(k);},removeStyle:function(i){var j=this;j.setStyle(i,'');if(j.$.style.removeAttribute)j.$.style.removeAttribute(e.cssStyleToDomStyle(i));if(!j.$.style.cssText)j.removeAttribute('style');},setStyle:function(i,j){this.$.style[e.cssStyleToDomStyle(i)]=j;return this;},setStyles:function(i){for(var j in i)this.setStyle(j,i[j]);return this;},setOpacity:function(i){if(c){i=Math.round(i*100);this.setStyle('filter',i>=100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+i+')');}else this.setStyle('opacity',i);},unselectable:b.gecko?function(){this.$.style.MozUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:b.webkit?function(){this.$.style.KhtmlUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:function(){if(c||b.opera){var i=this.$,j,k=0;i.unselectable='on';while(j=i.all[k++])switch(j.tagName.toLowerCase()){case 'iframe':case 'textarea':case 'input':case 'select':break;default:j.unselectable='on';}}},getPositionedAncestor:function(){var i=this;while(i.getName()!='html'){if(i.getComputedStyle('position')!='static')return i;i=i.getParent();}return null;},getDocumentPosition:function(i){var D=this;var j=0,k=0,l=D.getDocument().getBody(),m=D.getDocument().$.compatMode=='BackCompat',n=D.getDocument();if(document.documentElement.getBoundingClientRect){var o=D.$.getBoundingClientRect(),p=n.$,q=p.documentElement,r=q.clientTop||l.$.clientTop||0,s=q.clientLeft||l.$.clientLeft||0,t=true;if(c){var u=n.getDocumentElement().contains(D),v=n.getBody().contains(D);t=m&&v||!m&&u;}if(t){j=o.left+(!m&&q.scrollLeft||l.$.scrollLeft);j-=s;k=o.top+(!m&&q.scrollTop||l.$.scrollTop);
|
||||
k-=r;}}else{var w=D,x=null,y;while(w&&!(w.getName()=='body'||w.getName()=='html')){j+=w.$.offsetLeft-w.$.scrollLeft;k+=w.$.offsetTop-w.$.scrollTop;if(!w.equals(D)){j+=w.$.clientLeft||0;k+=w.$.clientTop||0;}var z=x;while(z&&!z.equals(w)){j-=z.$.scrollLeft;k-=z.$.scrollTop;z=z.getParent();}x=w;w=(y=w.$.offsetParent)?new h(y):null;}}if(i){var A=D.getWindow(),B=i.getWindow();if(!A.equals(B)&&A.$.frameElement){var C=new h(A.$.frameElement).getDocumentPosition(i);j+=C.x;k+=C.y;}}if(!document.documentElement.getBoundingClientRect)if(b.gecko&&!m){j+=D.$.clientLeft?1:0;k+=D.$.clientTop?1:0;}return{x:j,y:k};},scrollIntoView:function(i){var o=this;var j=o.getWindow(),k=j.getViewPaneSize().height,l=k*-1;if(i)l+=k;else{l+=o.$.offsetHeight||0;l+=parseInt(o.getComputedStyle('marginBottom')||0,10)||0;}var m=o.getDocumentPosition();l+=m.y;l=l<0?0:l;var n=j.getScrollPosition().y;if(l>n||l<n-k)j.$.scrollTo(0,l);},setState:function(i){var j=this;switch(i){case 1:j.addClass('cke_on');j.removeClass('cke_off');j.removeClass('cke_disabled');break;case 0:j.addClass('cke_disabled');j.removeClass('cke_off');j.removeClass('cke_on');break;default:j.addClass('cke_off');j.removeClass('cke_on');j.removeClass('cke_disabled');break;}},getFrameDocument:function(){var i=this.$;try{i.contentWindow.document;}catch(j){i.src=i.src;if(c&&b.version<7)window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');}return i&&new g(i.contentWindow.document);},copyAttributes:function(i,j){var p=this;var k=p.$.attributes;j=j||{};for(var l=0;l<k.length;l++){var m=k[l],n=m.nodeName.toLowerCase(),o;if(n in j)continue;if(n=='checked'&&(o=p.getAttribute(n)))i.setAttribute(n,o);else if(m.specified||c&&m.nodeValue&&n=='value'){o=p.getAttribute(n);if(o===null)o=m.nodeValue;i.setAttribute(n,o);}}if(p.$.style.cssText!=='')i.$.style.cssText=p.$.style.cssText;},renameNode:function(i){var l=this;if(l.getName()==i)return;var j=l.getDocument(),k=new h(i,j);l.copyAttributes(k);l.moveChildren(k);l.getParent()&&l.$.parentNode.replaceChild(k.$,l.$);k.$._cke_expando=l.$._cke_expando;l.$=k.$;},getChild:function(i){var j=this.$;if(!i.slice)j=j.childNodes[i];else while(i.length>0&&j)j=j.childNodes[i.shift()];return j?new d.node(j):null;},getChildCount:function(){return this.$.childNodes.length;},disableContextMenu:function(){this.on('contextmenu',function(i){if(!i.data.getTarget().hasClass('cke_enable_context_menu'))i.data.preventDefault();});},setSize:(function(){var i={width:['border-left-width','border-right-width','padding-left','padding-right'],height:['border-top-width','border-bottom-width','padding-top','padding-bottom']};
|
||||
return function(j,k,l){if(typeof k=='number'){if(l&&!(c&&b.quirks)){var m=0;for(var n=0,o=i[j].length;n<o;n++)m+=parseInt(this.getComputedStyle(i[j][n])||0,10)||0;k-=m;}this.setStyle(j,k+'px');}};})(),getDirection:function(i){return i?this.getComputedStyle('direction'):this.getStyle('direction')||this.getAttribute('dir');}});a.command=function(i,j){this.uiItems=[];this.exec=function(k){if(this.state==0)return false;if(this.editorFocus)i.focus();return j.exec.call(this,i,k)!==false;};e.extend(this,j,{modes:{wysiwyg:1},editorFocus:1,state:2});a.event.call(this);};a.command.prototype={enable:function(){var i=this;if(i.state==0)i.setState(!i.preserveState||typeof i.previousState=='undefined'?2:i.previousState);},disable:function(){this.setState(0);},setState:function(i){var j=this;if(j.state==i)return false;j.previousState=j.state;j.state=i;j.fire('state');return true;},toggleState:function(){var i=this;if(i.state==2)i.setState(1);else if(i.state==1)i.setState(2);}};a.event.implementOn(a.command.prototype,true);a.ENTER_P=1;a.ENTER_BR=2;a.ENTER_DIV=3;a.config={customConfig:'config.js',autoUpdateElement:true,baseHref:'',contentsCss:a.basePath+'contents.css',contentsLangDirection:'ui',contentsLanguage:'',language:'',defaultLanguage:'en',enterMode:1,forceEnterMode:false,shiftEnterMode:2,corePlugins:'',docType:'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',bodyId:'',bodyClass:'',fullPage:false,height:200,plugins:'about,a11yhelp,basicstyles,bidi,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,dialogadvtab,div,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,liststyle,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,showborders,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',extraPlugins:'',removePlugins:'',protectedSource:[],tabIndex:0,theme:'default',skin:'kama',width:'',baseFloatZIndex:10000};var i=a.config;a.focusManager=function(j){if(j.focusManager)return j.focusManager;this.hasFocus=false;this._={editor:j};return this;};a.focusManager.prototype={focus:function(){var k=this;if(k._.timer)clearTimeout(k._.timer);if(!k.hasFocus){if(a.currentInstance)a.currentInstance.focusManager.forceBlur();var j=k._.editor;j.container.getChild(1).addClass('cke_focus');k.hasFocus=true;
|
||||
j.fire('focus');}},blur:function(){var j=this;if(j._.timer)clearTimeout(j._.timer);j._.timer=setTimeout(function(){delete j._.timer;j.forceBlur();},100);},forceBlur:function(){if(this.hasFocus){var j=this._.editor;j.container.getChild(1).removeClass('cke_focus');this.hasFocus=false;j.fire('blur');}}};(function(){var j={};a.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,'en-au':1,'en-ca':1,'en-gb':1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,'fr-ca':1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,km:1,ko:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,'pt-br':1,pt:1,ro:1,ru:1,sk:1,sl:1,'sr-latn':1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,'zh-cn':1,zh:1},load:function(k,l,m){if(!k||!a.lang.languages[k])k=this.detect(l,k);if(!this[k])a.scriptLoader.load(a.getUrl('lang/'+k+'.js'),function(){m(k,this[k]);},this);else m(k,this[k]);},detect:function(k,l){var m=this.languages;l=l||navigator.userLanguage||navigator.language;var n=l.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),o=n[1],p=n[2];if(m[o+'-'+p])o=o+'-'+p;else if(!m[o])o=null;a.lang.detect=o?function(){return o;}:function(q){return q;};return o||k;}};})();a.scriptLoader=(function(){var j={},k={};return{load:function(l,m,n,o,p){var q=typeof l=='string';if(q)l=[l];if(!n)n=a;var r=l.length,s=[],t=[],u=function(z){if(m)if(q)m.call(n,z);else m.call(n,s,t);};if(r===0){u(true);return;}var v=function(z,A){(A?s:t).push(z);if(--r<=0){p&&a.document.getDocumentElement().removeStyle('cursor');u(A);}},w=function(z,A){j[z]=1;var B=k[z];delete k[z];for(var C=0;C<B.length;C++)B[C](z,A);},x=function(z){if(o!==true&&j[z]){v(z,true);return;}var A=k[z]||(k[z]=[]);A.push(v);if(A.length>1)return;var B=new h('script');B.setAttributes({type:'text/javascript',src:z});if(m)if(c)B.$.onreadystatechange=function(){if(B.$.readyState=='loaded'||B.$.readyState=='complete'){B.$.onreadystatechange=null;w(z,true);}};else{B.$.onload=function(){setTimeout(function(){w(z,true);},0);};B.$.onerror=function(){w(z,false);};}B.appendTo(a.document.getHead());};p&&a.document.getDocumentElement().setStyle('cursor','wait');for(var y=0;y<r;y++)x(l[y]);},loadCode:function(l){var m=new h('script');m.setAttribute('type','text/javascript');m.appendText(l);m.appendTo(a.document.getHead());}};})();a.resourceManager=function(j,k){var l=this;l.basePath=j;l.fileName=k;l.registered={};l.loaded={};l.externals={};l._={waitingList:{}};};a.resourceManager.prototype={add:function(j,k){if(this.registered[j])throw '[CKEDITOR.resourceManager.add] The resource name "'+j+'" is already registered.';
|
||||
a.fire(j+e.capitalize(this.fileName)+'Ready',this.registered[j]=k||{});},get:function(j){return this.registered[j]||null;},getPath:function(j){var k=this.externals[j];return a.getUrl(k&&k.dir||this.basePath+j+'/');},getFilePath:function(j){var k=this.externals[j];return a.getUrl(this.getPath(j)+(k&&typeof k.file=='string'?k.file:this.fileName+'.js'));},addExternal:function(j,k,l){j=j.split(',');for(var m=0;m<j.length;m++){var n=j[m];this.externals[n]={dir:k,file:l};}},load:function(j,k,l){if(!e.isArray(j))j=j?[j]:[];var m=this.loaded,n=this.registered,o=[],p={},q={};for(var r=0;r<j.length;r++){var s=j[r];if(!s)continue;if(!m[s]&&!n[s]){var t=this.getFilePath(s);o.push(t);if(!(t in p))p[t]=[];p[t].push(s);}else q[s]=this.get(s);}a.scriptLoader.load(o,function(u,v){if(v.length)throw '[CKEDITOR.resourceManager.load] Resource name "'+p[v[0]].join(',')+'" was not found at "'+v[0]+'".';for(var w=0;w<u.length;w++){var x=p[u[w]];for(var y=0;y<x.length;y++){var z=x[y];q[z]=this.get(z);m[z]=1;}}k.call(l,q);},this);}};a.plugins=new a.resourceManager('plugins/','plugin');var j=a.plugins;j.load=e.override(j.load,function(k){return function(l,m,n){var o={},p=function(q){k.call(this,q,function(r){e.extend(o,r);var s=[];for(var t in r){var u=r[t],v=u&&u.requires;if(v)for(var w=0;w<v.length;w++){if(!o[v[w]])s.push(v[w]);}}if(s.length)p.call(this,s);else{for(t in o){u=o[t];if(u.onLoad&&!u.onLoad._called){u.onLoad();u.onLoad._called=1;}}if(m)m.call(n||window,o);}},this);};p.call(this,l);};});j.setLang=function(k,l,m){var n=this.get(k),o=n.lang||(n.lang={});o[l]=m;};(function(){var k={},l=function(m,n){var o=function(){p.removeAllListeners();k[m]=1;n();},p=new h('img');p.on('load',o);p.on('error',o);p.setAttribute('src',m);};a.imageCacher={load:function(m,n){var o=m.length,p=new a.event();p.on('loaded',function(){p.finished=1;});if(n)p.on('loaded',n);var q=function(){if(--o===0)p.fire('loaded');};for(var r=0;r<m.length;r++){var s=m[r];if(k[s])q();else l(s,q);}return p;}};})();a.skins=(function(){var k={},l={},m={},n=function(o,p,q,r){var s=k[p];if(!o.skin){o.skin=s;if(s.init)s.init(o);}var t=function(D){for(var E=0;E<D.length;E++)D[E]=a.getUrl(m[p]+D[E]);};function u(D,E){return D.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(F,G,H,I){if(/^\/|^\w?:/.test(H))return F;else return 'url('+E+G+H+I+')';});};var v=s.preload;if(v&&v.length>0){if(!l[p]){t(v);l[p]=a.imageCacher.load(v);}if(!l[p].finished){l[p].on('loaded',function(){n(o,p,q,r);});return;}}q=s[q];var w=!q||!!q._isLoaded;
|
||||
if(w)r&&r();else{var x=q._pending||(q._pending=[]);x.push(r);if(x.length>1)return;var y=!q.css||!q.css.length,z=!q.js||!q.js.length,A=function(){if(y&&z){q._isLoaded=1;for(var D=0;D<x.length;D++){if(x[D])x[D]();}}};if(!y){var B=q.css;if(e.isArray(B)){t(B);for(var C=0;C<B.length;C++)a.document.appendStyleSheet(B[C]);}else{B=u(B,a.getUrl(m[p]));a.document.appendStyleText(B);}q.css=B;y=1;}if(!z){t(q.js);a.scriptLoader.load(q.js,function(){z=1;A();});}A();}};return{add:function(o,p){k[o]=p;p.skinPath=m[o]||(m[o]=a.getUrl('skins/'+o+'/'));},load:function(o,p,q){var r=o.skinName,s=o.skinPath;if(k[r])n(o,r,p,q);else{m[r]=s;a.scriptLoader.load(a.getUrl(s+'skin.js'),function(){n(o,r,p,q);});}}};})();a.themes=new a.resourceManager('themes/','theme');a.ui=function(k){if(k.ui)return k.ui;this._={handlers:{},items:{},editor:k};return this;};var k=a.ui;k.prototype={add:function(l,m,n){this._.items[l]={type:m,command:n.command||null,args:Array.prototype.slice.call(arguments,2)};},create:function(l){var q=this;var m=q._.items[l],n=m&&q._.handlers[m.type],o=m&&m.command&&q._.editor.getCommand(m.command),p=n&&n.create.apply(q,m.args);if(o)o.uiItems.push(p);return p;},addHandler:function(l,m){this._.handlers[l]=m;}};(function(){var l=0,m=function(){var x='editor'+ ++l;return a.instances&&a.instances[x]?m():x;},n={},o=function(x){var y=x.config.customConfig;if(!y)return false;y=a.getUrl(y);var z=n[y]||(n[y]={});if(z.fn){z.fn.call(x,x.config);if(a.getUrl(x.config.customConfig)==y||!o(x))x.fireOnce('customConfigLoaded');}else a.scriptLoader.load(y,function(){if(a.editorConfig)z.fn=a.editorConfig;else z.fn=function(){};o(x);});return true;},p=function(x,y){x.on('customConfigLoaded',function(){if(y){if(y.on)for(var z in y.on)x.on(z,y.on[z]);e.extend(x.config,y,true);delete x.config.on;}q(x);});if(y&&y.customConfig!=undefined)x.config.customConfig=y.customConfig;if(!o(x))x.fireOnce('customConfigLoaded');},q=function(x){var y=x.config.skin.split(','),z=y[0],A=a.getUrl(y[1]||'skins/'+z+'/');x.skinName=z;x.skinPath=A;x.skinClass='cke_skin_'+z;x.tabIndex=x.config.tabIndex||x.element.getAttribute('tabindex')||0;x.fireOnce('configLoaded');t(x);},r=function(x){a.lang.load(x.config.language,x.config.defaultLanguage,function(y,z){x.langCode=y;x.lang=e.prototypedCopy(z);if(b.gecko&&b.version<10900&&x.lang.dir=='rtl')x.lang.dir='ltr';var A=x.config;A.contentsLangDirection=='ui'&&(A.contentsLangDirection=x.lang.dir);s(x);});},s=function(x){var y=x.config,z=y.plugins,A=y.extraPlugins,B=y.removePlugins;
|
||||
if(A){var C=new RegExp('(?:^|,)(?:'+A.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');z+=','+A;}if(B){C=new RegExp('(?:^|,)(?:'+B.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');}j.load(z.split(','),function(D){var E=[],F=[],G=[];x.plugins=D;for(var H in D){var I=D[H],J=I.lang,K=j.getPath(H),L=null;I.path=K;if(J){L=e.indexOf(J,x.langCode)>=0?x.langCode:J[0];if(!I.lang[L])G.push(a.getUrl(K+'lang/'+L+'.js'));else{e.extend(x.lang,I.lang[L]);L=null;}}F.push(L);E.push(I);}a.scriptLoader.load(G,function(){var M=['beforeInit','init','afterInit'];for(var N=0;N<M.length;N++)for(var O=0;O<E.length;O++){var P=E[O];if(N===0&&F[O]&&P.lang)e.extend(x.lang,P.lang[F[O]]);if(P[M[N]])P[M[N]](x);}x.fire('pluginsLoaded');u(x);});});},t=function(x){a.skins.load(x,'editor',function(){r(x);});},u=function(x){var y=x.config.theme;a.themes.load(y,function(){var z=x.theme=a.themes.get(y);z.path=a.themes.getPath(y);z.build(x);if(x.config.autoUpdateElement)v(x);});},v=function(x){var y=x.element;if(x.elementMode==1&&y.is('textarea')){var z=y.$.form&&new h(y.$.form);if(z){function A(){x.updateElement();};z.on('submit',A);if(!z.$.submit.nodeName)z.$.submit=e.override(z.$.submit,function(B){return function(){x.updateElement();if(B.apply)B.apply(this,arguments);else B();};});x.on('destroy',function(){z.removeListener('submit',A);});}}};function w(){var x,y=this._.commands,z=this.mode;for(var A in y){x=y[A];x[x.startDisabled?'disable':x.modes[z]?'enable':'disable']();}};a.editor.prototype._init=function(){var z=this;var x=h.get(z._.element),y=z._.instanceConfig;delete z._.element;delete z._.instanceConfig;z._.commands={};z._.styles=[];z.element=x;z.name=x&&z.elementMode==1&&(x.getId()||x.getNameAtt())||m();if(z.name in a.instances)throw '[CKEDITOR.editor] The instance "'+z.name+'" already exists.';z.id=e.getNextId();z.config=e.prototypedCopy(i);z.ui=new k(z);z.focusManager=new a.focusManager(z);a.fire('instanceCreated',null,z);z.on('mode',w,null,null,1);p(z,y);};})();e.extend(a.editor.prototype,{addCommand:function(l,m){return this._.commands[l]=new a.command(this,m);},addCss:function(l){this._.styles.push(l);},destroy:function(l){var r=this;if(!l)r.updateElement();if(r.mode)r._.modes[r.mode].unload(r.getThemeSpace('contents'));r.theme.destroy(r);var m,n=0,o,p,q;if(r.toolbox){m=r.toolbox.toolbars;for(;n<m.length;n++){p=m[n].items;for(o=0;o<p.length;o++){q=p[o];if(q.clickFn)e.removeFunction(q.clickFn);if(q.keyDownFn)e.removeFunction(q.keyDownFn);if(q.index)k.button._.instances[q.index]=null;
|
||||
}}}if(r.contextMenu)e.removeFunction(r.contextMenu._.functionId);if(r._.filebrowserFn)e.removeFunction(r._.filebrowserFn);r.fire('destroy');a.remove(r);a.fire('instanceDestroyed',null,r);},execCommand:function(l,m){var n=this.getCommand(l),o={name:l,commandData:m,command:n};if(n&&n.state!=0)if(this.fire('beforeCommandExec',o)!==true){o.returnValue=n.exec(o.commandData);if(!n.async&&this.fire('afterCommandExec',o)!==true)return o.returnValue;}return false;},getCommand:function(l){return this._.commands[l];},getData:function(){var n=this;n.fire('beforeGetData');var l=n._.data;if(typeof l!='string'){var m=n.element;if(m&&n.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();else l='';}l={dataValue:l};n.fire('getData',l);return l.dataValue;},getSnapshot:function(){var l=this.fire('getSnapshot');if(typeof l!='string'){var m=this.element;if(m&&this.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();}return l;},loadSnapshot:function(l){this.fire('loadSnapshot',l);},setData:function(l,m){if(m)this.on('dataReady',function(o){o.removeListener();m.call(o.editor);});var n={dataValue:l};this.fire('setData',n);this._.data=n.dataValue;this.fire('afterSetData',n);},insertHtml:function(l){this.fire('insertHtml',l);},insertElement:function(l){this.fire('insertElement',l);},checkDirty:function(){return this.mayBeDirty&&this._.previousValue!==this.getSnapshot();},resetDirty:function(){if(this.mayBeDirty)this._.previousValue=this.getSnapshot();},updateElement:function(){var n=this;var l=n.element;if(l&&n.elementMode==1){var m=n.getData();if(n.config.htmlEncodeOutput)m=e.htmlEncode(m);if(l.is('textarea'))l.setValue(m);else l.setHtml(m);}}});a.on('loaded',function(){var l=a.editor._pending;if(l){delete a.editor._pending;for(var m=0;m<l.length;m++)l[m]._init();}});a.htmlParser=function(){this._={htmlPartsRegex:new RegExp("<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:[^\"'>]+)|(?:\"[^\"]*\")|(?:'[^']*'))*)\\/?>))",'g')};};(function(){var l=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,m={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};a.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(n){var A=this;var o,p,q=0,r;while(o=A._.htmlPartsRegex.exec(n)){var s=o.index;if(s>q){var t=n.substring(q,s);if(r)r.push(t);else A.onText(t);}q=A._.htmlPartsRegex.lastIndex;
|
||||
if(p=o[1]){p=p.toLowerCase();if(r&&f.$cdata[p]){A.onCDATA(r.join(''));r=null;}if(!r){A.onTagClose(p);continue;}}if(r){r.push(o[0]);continue;}if(p=o[3]){p=p.toLowerCase();if(/="/.test(p))continue;var u={},v,w=o[4],x=!!(w&&w.charAt(w.length-1)=='/');if(w)while(v=l.exec(w)){var y=v[1].toLowerCase(),z=v[2]||v[3]||v[4]||'';if(!z&&m[y])u[y]=y;else u[y]=z;}A.onTagOpen(p,u,x);if(!r&&f.$cdata[p])r=[];continue;}if(p=o[2])A.onComment(p);}if(n.length>q)A.onText(n.substring(q,n.length));}};})();a.htmlParser.comment=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.comment.prototype={type:8,writeHtml:function(l,m){var n=this.value;if(m){if(!(n=m.onComment(n,this)))return;if(typeof n!='string'){n.parent=this.parent;n.writeHtml(l,m);return;}}l.comment(n);}};(function(){var l=/[\t\r\n ]{2,}|[\t\r\n]/g;a.htmlParser.text=function(m){this.value=m;this._={isBlockLike:false};};a.htmlParser.text.prototype={type:3,writeHtml:function(m,n){var o=this.value;if(n&&!(o=n.onText(o,this)))return;m.text(o);}};})();(function(){a.htmlParser.cdata=function(l){this.value=l;};a.htmlParser.cdata.prototype={type:3,writeHtml:function(l){l.write(this.value);}};})();a.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false};};(function(){var l={colgroup:1,dd:1,dt:1,li:1,option:1,p:1,td:1,tfoot:1,th:1,thead:1,tr:1},m=e.extend({table:1,ul:1,ol:1,dl:1},f.table,f.ul,f.ol,f.dl),n=f.$list,o=f.$listItem;a.htmlParser.fragment.fromHtml=function(p,q){var r=new a.htmlParser(),s=[],t=new a.htmlParser.fragment(),u=[],v=[],w=t,x=false,y;function z(E){var F;if(u.length>0)for(var G=0;G<u.length;G++){var H=u[G],I=H.name,J=f[I],K=w.name&&f[w.name];if((!K||K[I])&&(!E||!J||J[E]||!f[E])){if(!F){A();F=1;}H=H.clone();H.parent=w;w=H;u.splice(G,1);G--;}}};function A(E){while(v.length-(E||0)>0)w.add(v.shift());};function B(E,F,G){F=F||w||t;if(q&&!F.type){var H,I;if(E.attributes&&(I=E.attributes._cke_real_element_type))H=I;else H=E.name;if(H&&!(H in f.$body)&&!(H in f.$nonBodyContent)){var J=w;w=F;r.onTagOpen(q,{});F=w;if(G)w=J;}}if(E._.isBlockLike&&E.name!='pre'){var K=E.children.length,L=E.children[K-1],M;if(L&&L.type==3)if(!(M=e.rtrim(L.value)))E.children.length=K-1;else L.value=M;}F.add(E);if(E.returnPoint){w=E.returnPoint;delete E.returnPoint;}};r.onTagOpen=function(E,F,G){var H=new a.htmlParser.element(E,F);if(H.isUnknown&&G)H.isEmpty=true;if(f.$removeEmpty[E]){u.push(H);return;}else if(E=='pre')x=true;else if(E=='br'&&x){w.add(new a.htmlParser.text('\n'));
|
||||
return;}if(E=='br'){v.push(H);return;}var I=w.name,J=I&&(f[I]||(w._.isBlockLike?f.div:f.span));if(J&&!H.isUnknown&&!w.isUnknown&&!J[E]){var K=false,L;if(E in n&&I in n){var M=w.children,N=M[M.length-1];if(!(N&&N.name in o))B(N=new a.htmlParser.element('li'),w);y=w,L=N;}else if(E==I)B(w,w.parent);else if(E in f.$listItem){r.onTagOpen('ul',{});L=w;K=true;}else{if(m[I]){if(!y)y=w;}else{B(w,w.parent,true);if(!l[I])u.unshift(w);}K=true;}if(L)w=L;else w=w.returnPoint||w.parent;if(K){r.onTagOpen.apply(this,arguments);return;}}z(E);A();H.parent=w;H.returnPoint=y;y=0;if(H.isEmpty)B(H);else w=H;};r.onTagClose=function(E){for(var F=u.length-1;F>=0;F--){if(E==u[F].name){u.splice(F,1);return;}}var G=[],H=[],I=w;while(I.type&&I.name!=E){if(!I._.isBlockLike)H.unshift(I);G.push(I);I=I.parent;}if(I.type){for(F=0;F<G.length;F++){var J=G[F];B(J,J.parent);}w=I;if(w.name=='pre')x=false;if(I._.isBlockLike)A();B(I,I.parent);if(I==w)w=w.parent;u=u.concat(H);}if(E=='body')q=false;};r.onText=function(E){if(!w._.hasInlineStarted&&!x){E=e.ltrim(E);if(E.length===0)return;}A();z();if(q&&(!w.type||w.name=='body')&&e.trim(E))this.onTagOpen(q,{});if(!x)E=E.replace(/[\t\r\n ]{2,}|[\t\r\n]/g,' ');w.add(new a.htmlParser.text(E));};r.onCDATA=function(E){w.add(new a.htmlParser.cdata(E));};r.onComment=function(E){z();w.add(new a.htmlParser.comment(E));};r.parse(p);A(!c&&1);while(w.type){var C=w.parent,D=w;if(q&&(!C.type||C.name=='body')&&!f.$body[D.name]){w=C;r.onTagOpen(q,{});C=w;}C.add(D);w=C;}return t;};a.htmlParser.fragment.prototype={add:function(p){var s=this;var q=s.children.length,r=q>0&&s.children[q-1]||null;if(r){if(p._.isBlockLike&&r.type==3){r.value=e.rtrim(r.value);if(r.value.length===0){s.children.pop();s.add(p);return;}}r.next=p;}p.previous=r;p.parent=s;s.children.push(p);s._.hasInlineStarted=p.type==3||p.type==1&&!p._.isBlockLike;},writeHtml:function(p,q){var r;this.filterChildren=function(){var s=new a.htmlParser.basicWriter();this.writeChildrenHtml.call(this,s,q,true);var t=s.getHtml();this.children=new a.htmlParser.fragment.fromHtml(t).children;r=1;};!this.name&&q&&q.onFragment(this);this.writeChildrenHtml(p,r?null:q);},writeChildrenHtml:function(p,q){for(var r=0;r<this.children.length;r++)this.children[r].writeHtml(p,q);}};})();a.htmlParser.element=function(l,m){var r=this;r.name=l;r.attributes=m||(m={});r.children=[];var n=m._cke_real_element_type||l,o=f,p=!!(o.$nonBodyContent[n]||o.$block[n]||o.$listItem[n]||o.$tableContent[n]||o.$nonEditable[n]||n=='br'),q=!!o.$empty[l];r.isEmpty=q;
|
||||
r.isUnknown=!o[l];r._={isBlockLike:p,hasInlineStarted:q||!p};};(function(){var l=function(m,n){m=m[0];n=n[0];return m<n?-1:m>n?1:0;};a.htmlParser.element.prototype={type:1,add:a.htmlParser.fragment.prototype.add,clone:function(){return new a.htmlParser.element(this.name,this.attributes);},writeHtml:function(m,n){var o=this.attributes,p=this,q=p.name,r,s,t,u;p.filterChildren=function(){if(!u){var z=new a.htmlParser.basicWriter();a.htmlParser.fragment.prototype.writeChildrenHtml.call(p,z,n);p.children=new a.htmlParser.fragment.fromHtml(z.getHtml()).children;u=1;}};if(n){for(;;){if(!(q=n.onElementName(q)))return;p.name=q;if(!(p=n.onElement(p)))return;p.parent=this.parent;if(p.name==q)break;if(p.type!=1){p.writeHtml(m,n);return;}q=p.name;if(!q){this.writeChildrenHtml.call(p,m,u?null:n);return;}}o=p.attributes;}m.openTag(q,o);var v=[];for(var w=0;w<2;w++)for(r in o){s=r;t=o[r];if(w==1)v.push([r,t]);else if(n){for(;;){if(!(s=n.onAttributeName(r))){delete o[r];break;}else if(s!=r){delete o[r];r=s;continue;}else break;}if(s)if((t=n.onAttribute(p,s,t))===false)delete o[s];else o[s]=t;}}if(m.sortAttributes)v.sort(l);var x=v.length;for(w=0;w<x;w++){var y=v[w];m.attribute(y[0],y[1]);}m.openTagClose(q,p.isEmpty);if(!p.isEmpty){this.writeChildrenHtml.call(p,m,u?null:n);m.closeTag(q);}},writeChildrenHtml:function(m,n){a.htmlParser.fragment.prototype.writeChildrenHtml.apply(this,arguments);}};})();(function(){a.htmlParser.filter=e.createClass({$:function(q){this._={elementNames:[],attributeNames:[],elements:{$length:0},attributes:{$length:0}};if(q)this.addRules(q,10);},proto:{addRules:function(q,r){var s=this;if(typeof r!='number')r=10;m(s._.elementNames,q.elementNames,r);m(s._.attributeNames,q.attributeNames,r);n(s._.elements,q.elements,r);n(s._.attributes,q.attributes,r);s._.text=o(s._.text,q.text,r)||s._.text;s._.comment=o(s._.comment,q.comment,r)||s._.comment;s._.root=o(s._.root,q.root,r)||s._.root;},onElementName:function(q){return l(q,this._.elementNames);},onAttributeName:function(q){return l(q,this._.attributeNames);},onText:function(q){var r=this._.text;return r?r.filter(q):q;},onComment:function(q,r){var s=this._.comment;return s?s.filter(q,r):q;},onFragment:function(q){var r=this._.root;return r?r.filter(q):q;},onElement:function(q){var v=this;var r=[v._.elements['^'],v._.elements[q.name],v._.elements.$],s,t;for(var u=0;u<3;u++){s=r[u];if(s){t=s.filter(q,v);if(t===false)return null;if(t&&t!=q)return v.onNode(t);if(q.parent&&!q.name)break;}}return q;},onNode:function(q){var r=q.type;
|
||||
return r==1?this.onElement(q):r==3?new a.htmlParser.text(this.onText(q.value)):r==8?new a.htmlParser.comment(this.onComment(q.value)):null;},onAttribute:function(q,r,s){var t=this._.attributes[r];if(t){var u=t.filter(s,q,this);if(u===false)return false;if(typeof u!='undefined')return u;}return s;}}});function l(q,r){for(var s=0;q&&s<r.length;s++){var t=r[s];q=q.replace(t[0],t[1]);}return q;};function m(q,r,s){if(typeof r=='function')r=[r];var t,u,v=q.length,w=r&&r.length;if(w){for(t=0;t<v&&q[t].pri<s;t++){}for(u=w-1;u>=0;u--){var x=r[u];if(x){x.pri=s;q.splice(t,0,x);}}}};function n(q,r,s){if(r)for(var t in r){var u=q[t];q[t]=o(u,r[t],s);if(!u)q.$length++;}};function o(q,r,s){if(r){r.pri=s;if(q){if(!q.splice){if(q.pri>s)q=[r,q];else q=[q,r];q.filter=p;}else m(q,r,s);return q;}else{r.filter=r;return r;}}};function p(q){var r=q.type||q instanceof a.htmlParser.fragment;for(var s=0;s<this.length;s++){if(r)var t=q.type,u=q.name;var v=this[s],w=v.apply(window,arguments);if(w===false)return w;if(r){if(w&&(w.name!=u||w.type!=t))return w;}else if(typeof w!='string')return w;w!=undefined&&(q=w);}return q;};})();a.htmlParser.basicWriter=e.createClass({$:function(){this._={output:[]};},proto:{openTag:function(l,m){this._.output.push('<',l);},openTagClose:function(l,m){if(m)this._.output.push(' />');else this._.output.push('>');},attribute:function(l,m){if(typeof m=='string')m=e.htmlEncodeAttr(m);this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){this._.output.push('</',l,'>');},text:function(l){this._.output.push(l);},comment:function(l){this._.output.push('<!--',l,'-->');},write:function(l){this._.output.push(l);},reset:function(){this._.output=[];this._.indent=false;},getHtml:function(l){var m=this._.output.join('');if(l)this.reset();return m;}}});delete a.loadFullCore;a.instances={};a.document=new g(document);a.add=function(l){a.instances[l.name]=l;l.on('focus',function(){if(a.currentInstance!=l){a.currentInstance=l;a.fire('currentInstance');}});l.on('blur',function(){if(a.currentInstance==l){a.currentInstance=null;a.fire('currentInstance');}});};a.remove=function(l){delete a.instances[l.name];};a.on('instanceDestroyed',function(){if(e.isEmpty(this.instances))a.fire('reset');});a.TRISTATE_ON=1;a.TRISTATE_OFF=2;a.TRISTATE_DISABLED=0;d.comment=e.createClass({base:d.node,$:function(l,m){if(typeof l=='string')l=(m?m.$:document).createComment(l);this.base(l);},proto:{type:8,getOuterHtml:function(){return '<!--'+this.$.nodeValue+'-->';}}});(function(){var l={address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1},m={body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,caption:1,form:1},n=function(o){var p=o.getChildren();
|
||||
for(var q=0,r=p.count();q<r;q++){var s=p.getItem(q);if(s.type==1&&f.$block[s.getName()])return true;}return false;};d.elementPath=function(o){var u=this;var p=null,q=null,r=[],s=o;while(s){if(s.type==1){if(!u.lastElement)u.lastElement=s;var t=s.getName();if(c&&s.$.scopeName!='HTML')t=s.$.scopeName.toLowerCase()+':'+t;if(!q){if(!p&&l[t])p=s;if(m[t])if(!p&&t=='div'&&!n(s))p=s;else q=s;}r.push(s);if(t=='body')break;}s=s.getParent();}u.block=p;u.blockLimit=q;u.elements=r;};})();d.elementPath.prototype={compare:function(l){var m=this.elements,n=l&&l.elements;if(!n||m.length!=n.length)return false;for(var o=0;o<m.length;o++){if(!m[o].equals(n[o]))return false;}return true;},contains:function(l){var m=this.elements;for(var n=0;n<m.length;n++){if(m[n].getName() in l)return m[n];}return null;}};d.text=function(l,m){if(typeof l=='string')l=(m?m.$:document).createTextNode(l);this.$=l;};d.text.prototype=new d.node();e.extend(d.text.prototype,{type:3,getLength:function(){return this.$.nodeValue.length;},getText:function(){return this.$.nodeValue;},split:function(l){var q=this;if(c&&l==q.getLength()){var m=q.getDocument().createText('');m.insertAfter(q);return m;}var n=q.getDocument(),o=new d.text(q.$.splitText(l),n);if(b.ie8){var p=new d.text('',n);p.insertAfter(o);p.remove();}return o;},substring:function(l,m){if(typeof m!='number')return this.$.nodeValue.substr(l);else return this.$.nodeValue.substring(l,m);}});d.documentFragment=function(l){l=l||a.document;this.$=l.$.createDocumentFragment();};e.extend(d.documentFragment.prototype,h.prototype,{type:11,insertAfterNode:function(l){l=l.$;l.parentNode.insertBefore(this.$,l.nextSibling);}},true,{append:1,appendBogus:1,getFirst:1,getLast:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});(function(){function l(t,u){if(this._.end)return null;var v,w=this.range,x,y=this.guard,z=this.type,A=t?'getPreviousSourceNode':'getNextSourceNode';if(!this._.start){this._.start=1;w.trim();if(w.collapsed){this.end();return null;}}if(!t&&!this._.guardLTR){var B=w.endContainer,C=B.getChild(w.endOffset);this._.guardLTR=function(G,H){return(!H||!B.equals(G))&&(!C||!G.equals(C))&&(G.type!=1||!H||G.getName()!='body');};}if(t&&!this._.guardRTL){var D=w.startContainer,E=w.startOffset>0&&D.getChild(w.startOffset-1);this._.guardRTL=function(G,H){return(!H||!D.equals(G))&&(!E||!G.equals(E))&&(G.type!=1||!H||G.getName()!='body');};}var F=t?this._.guardRTL:this._.guardLTR;
|
||||
if(y)x=function(G,H){if(F(G,H)===false)return false;return y(G,H);};else x=F;if(this.current)v=this.current[A](false,z,x);else if(t){v=w.endContainer;if(w.endOffset>0){v=v.getChild(w.endOffset-1);if(x(v)===false)v=null;}else v=x(v,true)===false?null:v.getPreviousSourceNode(true,z,x);}else{v=w.startContainer;v=v.getChild(w.startOffset);if(v){if(x(v)===false)v=null;}else v=x(w.startContainer,true)===false?null:w.startContainer.getNextSourceNode(true,z,x);}while(v&&!this._.end){this.current=v;if(!this.evaluator||this.evaluator(v)!==false){if(!u)return v;}else if(u&&this.evaluator)return false;v=v[A](false,z,x);}this.end();return this.current=null;};function m(t){var u,v=null;while(u=l.call(this,t))v=u;return v;};d.walker=e.createClass({$:function(t){this.range=t;this._={};},proto:{end:function(){this._.end=1;},next:function(){return l.call(this);},previous:function(){return l.call(this,1);},checkForward:function(){return l.call(this,0,1)!==false;},checkBackward:function(){return l.call(this,1,1)!==false;},lastForward:function(){return m.call(this);},lastBackward:function(){return m.call(this,1);},reset:function(){delete this.current;this._={};}}});var n={block:1,'list-item':1,table:1,'table-row-group':1,'table-header-group':1,'table-footer-group':1,'table-row':1,'table-column-group':1,'table-column':1,'table-cell':1,'table-caption':1},o={hr:1};h.prototype.isBlockBoundary=function(t){var u=e.extend({},o,t||{});return n[this.getComputedStyle('display')]||u[this.getName()];};d.walker.blockBoundary=function(t){return function(u,v){return!(u.type==1&&u.isBlockBoundary(t));};};d.walker.listItemBoundary=function(){return this.blockBoundary({br:1});};d.walker.bookmark=function(t,u){function v(w){return w&&w.getName&&w.getName()=='span'&&w.hasAttribute('_cke_bookmark');};return function(w){var x,y;x=w&&!w.getName&&(y=w.getParent())&&v(y);x=t?x:x||v(w);return!!(u^x);};};d.walker.whitespaces=function(t){return function(u){var v=u&&u.type==3&&!e.trim(u.getText());return!!(t^v);};};d.walker.invisible=function(t){var u=d.walker.whitespaces();return function(v){var w=u(v)||v.is&&!v.$.offsetHeight;return!!(t^w);};};var p=/^[\t\r\n ]*(?: |\xa0)$/,q=d.walker.whitespaces(1),r=d.walker.bookmark(0,1),s=function(t){return r(t)&&q(t);};h.prototype.getBogus=function(){var t=this.getLast(s);if(t&&(!c?t.is&&t.is('br'):t.getText&&p.test(t.getText())))return t;return false;};})();d.range=function(l){var m=this;m.startContainer=null;m.startOffset=null;m.endContainer=null;m.endOffset=null;
|
||||
m.collapsed=true;m.document=l;};(function(){var l=function(t){t.collapsed=t.startContainer&&t.endContainer&&t.startContainer.equals(t.endContainer)&&t.startOffset==t.endOffset;},m=function(t,u,v){t.optimizeBookmark();var w=t.startContainer,x=t.endContainer,y=t.startOffset,z=t.endOffset,A,B;if(x.type==3)x=x.split(z);else if(x.getChildCount()>0)if(z>=x.getChildCount()){x=x.append(t.document.createText(''));B=true;}else x=x.getChild(z);if(w.type==3){w.split(y);if(w.equals(x))x=w.getNext();}else if(!y){w=w.getFirst().insertBeforeMe(t.document.createText(''));A=true;}else if(y>=w.getChildCount()){w=w.append(t.document.createText(''));A=true;}else w=w.getChild(y).getPrevious();var C=w.getParents(),D=x.getParents(),E,F,G;for(E=0;E<C.length;E++){F=C[E];G=D[E];if(!F.equals(G))break;}var H=v,I,J,K,L;for(var M=E;M<C.length;M++){I=C[M];if(H&&!I.equals(w))J=H.append(I.clone());K=I.getNext();while(K){if(K.equals(D[M])||K.equals(x))break;L=K.getNext();if(u==2)H.append(K.clone(true));else{K.remove();if(u==1)H.append(K);}K=L;}if(H)H=J;}H=v;for(var N=E;N<D.length;N++){I=D[N];if(u>0&&!I.equals(x))J=H.append(I.clone());if(!C[N]||I.$.parentNode!=C[N].$.parentNode){K=I.getPrevious();while(K){if(K.equals(C[N])||K.equals(w))break;L=K.getPrevious();if(u==2)H.$.insertBefore(K.$.cloneNode(true),H.$.firstChild);else{K.remove();if(u==1)H.$.insertBefore(K.$,H.$.firstChild);}K=L;}}if(H)H=J;}if(u==2){var O=t.startContainer;if(O.type==3){O.$.data+=O.$.nextSibling.data;O.$.parentNode.removeChild(O.$.nextSibling);}var P=t.endContainer;if(P.type==3&&P.$.nextSibling){P.$.data+=P.$.nextSibling.data;P.$.parentNode.removeChild(P.$.nextSibling);}}else{if(F&&G&&(w.$.parentNode!=F.$.parentNode||x.$.parentNode!=G.$.parentNode)){var Q=G.getIndex();if(A&&G.$.parentNode==w.$.parentNode)Q--;t.setStart(G.getParent(),Q);}t.collapse(true);}if(A)w.remove();if(B&&x.$.parentNode)x.remove();},n={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1};function o(t){var u=false,v=d.walker.bookmark(true);return function(w){if(v(w))return true;if(w.type==3){if(e.trim(w.getText()).length)return false;}else if(w.type==1)if(!n[w.getName()])if(!t&&!c&&w.getName()=='br'&&!u)u=true;else return false;return true;};};function p(t){return t.type!=3&&t.getName() in f.$removeEmpty||!e.trim(t.getText())||t.getParent().hasAttribute('_cke_bookmark');};var q=new d.walker.whitespaces(),r=new d.walker.bookmark();function s(t){return!q(t)&&!r(t);
|
||||
};d.range.prototype={clone:function(){var u=this;var t=new d.range(u.document);t.startContainer=u.startContainer;t.startOffset=u.startOffset;t.endContainer=u.endContainer;t.endOffset=u.endOffset;t.collapsed=u.collapsed;return t;},collapse:function(t){var u=this;if(t){u.endContainer=u.startContainer;u.endOffset=u.startOffset;}else{u.startContainer=u.endContainer;u.startOffset=u.endOffset;}u.collapsed=true;},cloneContents:function(){var t=new d.documentFragment(this.document);if(!this.collapsed)m(this,2,t);return t;},deleteContents:function(){if(this.collapsed)return;m(this,0);},extractContents:function(){var t=new d.documentFragment(this.document);if(!this.collapsed)m(this,1,t);return t;},createBookmark:function(t){var z=this;var u,v,w,x,y=z.collapsed;u=z.document.createElement('span');u.setAttribute('_cke_bookmark',1);u.setStyle('display','none');u.setHtml(' ');if(t){w='cke_bm_'+e.getNextNumber();u.setAttribute('id',w+'S');}if(!y){v=u.clone();v.setHtml(' ');if(t)v.setAttribute('id',w+'E');x=z.clone();x.collapse();x.insertNode(v);}x=z.clone();x.collapse(true);x.insertNode(u);if(v){z.setStartAfter(u);z.setEndBefore(v);}else z.moveToPosition(u,4);return{startNode:t?w+'S':u,endNode:t?w+'E':v,serializable:t,collapsed:y};},createBookmark2:function(t){var B=this;var u=B.startContainer,v=B.endContainer,w=B.startOffset,x=B.endOffset,y=B.collapsed,z,A;if(!u||!v)return{start:0,end:0};if(t){if(u.type==1){z=u.getChild(w);if(z&&z.type==3&&w>0&&z.getPrevious().type==3){u=z;w=0;}}while(u.type==3&&(A=u.getPrevious())&&A.type==3){u=A;w+=A.getLength();}if(!y){if(v.type==1){z=v.getChild(x);if(z&&z.type==3&&x>0&&z.getPrevious().type==3){v=z;x=0;}}while(v.type==3&&(A=v.getPrevious())&&A.type==3){v=A;x+=A.getLength();}}}return{start:u.getAddress(t),end:y?null:v.getAddress(t),startOffset:w,endOffset:x,normalized:t,collapsed:y,is2:true};},moveToBookmark:function(t){var B=this;if(t.is2){var u=B.document.getByAddress(t.start,t.normalized),v=t.startOffset,w=t.end&&B.document.getByAddress(t.end,t.normalized),x=t.endOffset;B.setStart(u,v);if(w)B.setEnd(w,x);else B.collapse(true);}else{var y=t.serializable,z=y?B.document.getById(t.startNode):t.startNode,A=y?B.document.getById(t.endNode):t.endNode;B.setStartBefore(z);z.remove();if(A){B.setEndBefore(A);A.remove();}else B.collapse(true);}},getBoundaryNodes:function(){var y=this;var t=y.startContainer,u=y.endContainer,v=y.startOffset,w=y.endOffset,x;if(t.type==1){x=t.getChildCount();if(x>v)t=t.getChild(v);else if(x<1)t=t.getPreviousSourceNode();
|
||||
else{t=t.$;while(t.lastChild)t=t.lastChild;t=new d.node(t);t=t.getNextSourceNode()||t;}}if(u.type==1){x=u.getChildCount();if(x>w)u=u.getChild(w).getPreviousSourceNode(true);else if(x<1)u=u.getPreviousSourceNode();else{u=u.$;while(u.lastChild)u=u.lastChild;u=new d.node(u);}}if(t.getPosition(u)&2)t=u;return{startNode:t,endNode:u};},getCommonAncestor:function(t,u){var y=this;var v=y.startContainer,w=y.endContainer,x;if(v.equals(w)){if(t&&v.type==1&&y.startOffset==y.endOffset-1)x=v.getChild(y.startOffset);else x=v;}else x=v.getCommonAncestor(w);return u&&!x.is?x.getParent():x;},optimize:function(){var v=this;var t=v.startContainer,u=v.startOffset;if(t.type!=1)if(!u)v.setStartBefore(t);else if(u>=t.getLength())v.setStartAfter(t);t=v.endContainer;u=v.endOffset;if(t.type!=1)if(!u)v.setEndBefore(t);else if(u>=t.getLength())v.setEndAfter(t);},optimizeBookmark:function(){var v=this;var t=v.startContainer,u=v.endContainer;if(t.is&&t.is('span')&&t.hasAttribute('_cke_bookmark'))v.setStartAt(t,3);if(u&&u.is&&u.is('span')&&u.hasAttribute('_cke_bookmark'))v.setEndAt(u,4);},trim:function(t,u){var B=this;var v=B.startContainer,w=B.startOffset,x=B.collapsed;if((!t||x)&&v&&v.type==3){if(!w){w=v.getIndex();v=v.getParent();}else if(w>=v.getLength()){w=v.getIndex()+1;v=v.getParent();}else{var y=v.split(w);w=v.getIndex()+1;v=v.getParent();if(B.startContainer.equals(B.endContainer))B.setEnd(y,B.endOffset-B.startOffset);else if(v.equals(B.endContainer))B.endOffset+=1;}B.setStart(v,w);if(x){B.collapse(true);return;}}var z=B.endContainer,A=B.endOffset;if(!(u||x)&&z&&z.type==3){if(!A){A=z.getIndex();z=z.getParent();}else if(A>=z.getLength()){A=z.getIndex()+1;z=z.getParent();}else{z.split(A);A=z.getIndex()+1;z=z.getParent();}B.setEnd(z,A);}},enlarge:function(t){switch(t){case 1:if(this.collapsed)return;var u=this.getCommonAncestor(),v=this.document.getBody(),w,x,y,z,A,B=false,C,D,E=this.startContainer,F=this.startOffset;if(E.type==3){if(F){E=!e.trim(E.substring(0,F)).length&&E;B=!!E;}if(E)if(!(z=E.getPrevious()))y=E.getParent();}else{if(F)z=E.getChild(F-1)||E.getLast();if(!z)y=E;}while(y||z){if(y&&!z){if(!A&&y.equals(u))A=true;if(!v.contains(y))break;if(!B||y.getComputedStyle('display')!='inline'){B=false;if(A)w=y;else this.setStartBefore(y);}z=y.getPrevious();}while(z){C=false;if(z.type==3){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;C=/[\s\ufeff]$/.test(D);}else if(z.$.offsetWidth>0&&!z.getAttribute('_cke_bookmark'))if(B&&f.$removeEmpty[z.getName()]){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;
|
||||
else{var G=z.$.all||z.$.getElementsByTagName('*');for(var H=0,I;I=G[H++];){if(!f.$removeEmpty[I.nodeName.toLowerCase()]){z=null;break;}}}if(z)C=!!D.length;}else z=null;if(C)if(B){if(A)w=y;else if(y)this.setStartBefore(y);}else B=true;if(z){var J=z.getPrevious();if(!y&&!J){y=z;z=null;break;}z=J;}else y=null;}if(y)y=y.getParent();}E=this.endContainer;F=this.endOffset;y=z=null;A=B=false;if(E.type==3){E=!e.trim(E.substring(F)).length&&E;B=!(E&&E.getLength());if(E)if(!(z=E.getNext()))y=E.getParent();}else{z=E.getChild(F);if(!z)y=E;}while(y||z){if(y&&!z){if(!A&&y.equals(u))A=true;if(!v.contains(y))break;if(!B||y.getComputedStyle('display')!='inline'){B=false;if(A)x=y;else if(y)this.setEndAfter(y);}z=y.getNext();}while(z){C=false;if(z.type==3){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;C=/^[\s\ufeff]/.test(D);}else if(z.$.offsetWidth>0&&!z.getAttribute('_cke_bookmark'))if(B&&f.$removeEmpty[z.getName()]){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;else{G=z.$.all||z.$.getElementsByTagName('*');for(H=0;I=G[H++];){if(!f.$removeEmpty[I.nodeName.toLowerCase()]){z=null;break;}}}if(z)C=!!D.length;}else z=null;if(C)if(B)if(A)x=y;else this.setEndAfter(y);if(z){J=z.getNext();if(!y&&!J){y=z;z=null;break;}z=J;}else y=null;}if(y)y=y.getParent();}if(w&&x){u=w.contains(x)?x:w;this.setStartBefore(u);this.setEndAfter(u);}break;case 2:case 3:var K=new d.range(this.document);v=this.document.getBody();K.setStartAt(v,1);K.setEnd(this.startContainer,this.startOffset);var L=new d.walker(K),M,N,O=d.walker.blockBoundary(t==3?{br:1}:null),P=function(R){var S=O(R);if(!S)M=R;return S;},Q=function(R){var S=P(R);if(!S&&R.is&&R.is('br'))N=R;return S;};L.guard=P;y=L.lastBackward();M=M||v;this.setStartAt(M,!M.is('br')&&(!y&&this.checkStartOfBlock()||y&&M.contains(y))?1:4);K=this.clone();K.collapse();K.setEndAt(v,2);L=new d.walker(K);L.guard=t==3?Q:P;M=null;y=L.lastForward();M=M||v;this.setEndAt(M,!y&&this.checkEndOfBlock()||y&&M.contains(y)?2:3);if(N)this.setEndAfter(N);}},shrink:function(t,u){if(!this.collapsed){t=t||2;var v=this.clone(),w=this.startContainer,x=this.endContainer,y=this.startOffset,z=this.endOffset,A=this.collapsed,B=1,C=1;if(w&&w.type==3)if(!y)v.setStartBefore(w);else if(y>=w.getLength())v.setStartAfter(w);else{v.setStartBefore(w);B=0;}if(x&&x.type==3)if(!z)v.setEndBefore(x);else if(z>=x.getLength())v.setEndAfter(x);else{v.setEndAfter(x);C=0;}var D=new d.walker(v),E=d.walker.bookmark();D.evaluator=function(I){return I.type==(t==1?1:3);};var F;D.guard=function(I,J){if(E(I))return true;
|
||||
if(t==1&&I.type==3)return false;if(J&&I.equals(F))return false;if(!J&&I.type==1)F=I;return true;};if(B){var G=D[t==1?'lastForward':'next']();G&&this.setStartAt(G,u?1:3);}if(C){D.reset();var H=D[t==1?'lastBackward':'previous']();H&&this.setEndAt(H,u?2:4);}return!!(B||C);}},insertNode:function(t){var x=this;x.optimizeBookmark();x.trim(false,true);var u=x.startContainer,v=x.startOffset,w=u.getChild(v);if(w)t.insertBefore(w);else u.append(t);if(t.getParent().equals(x.endContainer))x.endOffset++;x.setStartBefore(t);},moveToPosition:function(t,u){this.setStartAt(t,u);this.collapse(true);},selectNodeContents:function(t){this.setStart(t,0);this.setEnd(t,t.type==3?t.getLength():t.getChildCount());},setStart:function(t,u){var v=this;if(t.type==1&&f.$empty[t.getName()])t=t.getParent(),u=t.getIndex();v.startContainer=t;v.startOffset=u;if(!v.endContainer){v.endContainer=t;v.endOffset=u;}l(v);},setEnd:function(t,u){var v=this;if(t.type==1&&f.$empty[t.getName()])u=t.getIndex()+1,t=t.getParent();v.endContainer=t;v.endOffset=u;if(!v.startContainer){v.startContainer=t;v.startOffset=u;}l(v);},setStartAfter:function(t){this.setStart(t.getParent(),t.getIndex()+1);},setStartBefore:function(t){this.setStart(t.getParent(),t.getIndex());},setEndAfter:function(t){this.setEnd(t.getParent(),t.getIndex()+1);},setEndBefore:function(t){this.setEnd(t.getParent(),t.getIndex());},setStartAt:function(t,u){var v=this;switch(u){case 1:v.setStart(t,0);break;case 2:if(t.type==3)v.setStart(t,t.getLength());else v.setStart(t,t.getChildCount());break;case 3:v.setStartBefore(t);break;case 4:v.setStartAfter(t);}l(v);},setEndAt:function(t,u){var v=this;switch(u){case 1:v.setEnd(t,0);break;case 2:if(t.type==3)v.setEnd(t,t.getLength());else v.setEnd(t,t.getChildCount());break;case 3:v.setEndBefore(t);break;case 4:v.setEndAfter(t);}l(v);},fixBlock:function(t,u){var x=this;var v=x.createBookmark(),w=x.document.createElement(u);x.collapse(t);x.enlarge(2);x.extractContents().appendTo(w);w.trim();if(!c)w.appendBogus();x.insertNode(w);x.moveToBookmark(v);return w;},splitBlock:function(t){var D=this;var u=new d.elementPath(D.startContainer),v=new d.elementPath(D.endContainer),w=u.blockLimit,x=v.blockLimit,y=u.block,z=v.block,A=null;if(!w.equals(x))return null;if(t!='br'){if(!y){y=D.fixBlock(true,t);z=new d.elementPath(D.endContainer).block;}if(!z)z=D.fixBlock(false,t);}var B=y&&D.checkStartOfBlock(),C=z&&D.checkEndOfBlock();D.deleteContents();if(y&&y.equals(z))if(C){A=new d.elementPath(D.startContainer);D.moveToPosition(z,4);
|
||||
z=null;}else if(B){A=new d.elementPath(D.startContainer);D.moveToPosition(y,3);y=null;}else{z=D.splitElement(y);if(!c&&!y.is('ul','ol'))y.appendBogus();}return{previousBlock:y,nextBlock:z,wasStartOfBlock:B,wasEndOfBlock:C,elementPath:A};},splitElement:function(t){var w=this;if(!w.collapsed)return null;w.setEndAt(t,2);var u=w.extractContents(),v=t.clone(false);u.appendTo(v);v.insertAfter(t);w.moveToPosition(t,4);return v;},checkBoundaryOfElement:function(t,u){var v=u==1,w=this.clone();w.collapse(v);w[v?'setStartAt':'setEndAt'](t,v?1:2);var x=new d.walker(w);x.evaluator=p;return x[v?'checkBackward':'checkForward']();},checkStartOfBlock:function(){var z=this;var t=z.startContainer,u=z.startOffset;if(u&&t.type==3){var v=e.ltrim(t.substring(0,u));if(v.length)return false;}z.trim();var w=new d.elementPath(z.startContainer),x=z.clone();x.collapse(true);x.setStartAt(w.block||w.blockLimit,1);var y=new d.walker(x);y.evaluator=o(true);return y.checkBackward();},checkEndOfBlock:function(){var z=this;var t=z.endContainer,u=z.endOffset;if(t.type==3){var v=e.rtrim(t.substring(u));if(v.length)return false;}z.trim();var w=new d.elementPath(z.endContainer),x=z.clone();x.collapse(false);x.setEndAt(w.block||w.blockLimit,2);var y=new d.walker(x);y.evaluator=o(false);return y.checkForward();},moveToElementEditablePosition:function(t,u){var v;if(f.$empty[t.getName()])return false;while(t&&t.type==1){v=t.isEditable();if(v)this.moveToPosition(t,u?2:1);else if(f.$inline[t.getName()]){this.moveToPosition(t,u?4:3);return true;}if(f.$empty[t.getName()])t=t[u?'getPrevious':'getNext'](s);else t=t[u?'getLast':'getFirst'](s);if(t&&t.type==3){this.moveToPosition(t,u?4:3);return true;}}return v;},moveToElementEditStart:function(t){return this.moveToElementEditablePosition(t);},moveToElementEditEnd:function(t){return this.moveToElementEditablePosition(t,true);},getEnclosedNode:function(){var t=this.clone();t.optimize();if(t.startContainer.type!=1||t.endContainer.type!=1)return null;var u=new d.walker(t),v=d.walker.bookmark(true),w=d.walker.whitespaces(true),x=function(z){return w(z)&&v(z);};t.evaluator=x;var y=u.next();u.reset();return y&&y.equals(u.previous())?y:null;},getTouchedStartNode:function(){var t=this.startContainer;if(this.collapsed||t.type!=1)return t;return t.getChild(this.startOffset)||t;},getTouchedEndNode:function(){var t=this.endContainer;if(this.collapsed||t.type!=1)return t;return t.getChild(this.endOffset-1)||t;}};})();a.POSITION_AFTER_START=1;a.POSITION_BEFORE_END=2;a.POSITION_BEFORE_START=3;
|
||||
a.POSITION_AFTER_END=4;a.ENLARGE_ELEMENT=1;a.ENLARGE_BLOCK_CONTENTS=2;a.ENLARGE_LIST_ITEM_CONTENTS=3;a.START=1;a.END=2;a.STARTEND=3;a.SHRINK_ELEMENT=1;a.SHRINK_TEXT=2;(function(){d.rangeList=function(n){if(n instanceof d.rangeList)return n;if(!n)n=[];else if(n instanceof d.range)n=[n];return e.extend(n,l);};var l={createIterator:function(){var n=this,o=d.walker.bookmark(),p=function(s){return!(s.is&&s.is('tr'));},q=[],r;return{getNextRange:function(s){r=r==undefined?0:r+1;var t=n[r];if(t&&n.length>1){if(!r)for(var u=n.length-1;u>=0;u--)q.unshift(n[u].createBookmark(true));if(s){var v=0;while(n[r+v+1]){var w=t.document,x=0,y=w.getById(q[v].endNode),z=w.getById(q[v+1].startNode),A;while(1){A=y.getNextSourceNode(false);if(!z.equals(A)){if(o(A)||A.type==1&&A.isBlockBoundary()){y=A;continue;}}else x=1;break;}if(!x)break;v++;}}t.moveToBookmark(q.shift());var A;while(v--){A=n[++r];A.moveToBookmark(q.shift());t.setEnd(A.endContainer,A.endOffset);}}return t;}};},createBookmarks:function(n){var s=this;var o=[],p;for(var q=0;q<s.length;q++){o.push(p=s[q].createBookmark(n,true));for(var r=q+1;r<s.length;r++){s[r]=m(p,s[r]);s[r]=m(p,s[r],true);}}return o;},createBookmarks2:function(n){var o=[];for(var p=0;p<this.length;p++)o.push(this[p].createBookmark2(n));return o;},moveToBookmarks:function(n){for(var o=0;o<this.length;o++)this[o].moveToBookmark(n[o]);}};function m(n,o,p){var q=n.serializable,r=o[p?'endContainer':'startContainer'],s=p?'endOffset':'startOffset',t=q?o.document.getById(n.startNode):n.startNode,u=q?o.document.getById(n.endNode):n.endNode;if(r.equals(t.getPrevious())){o.startOffset=o.startOffset-r.getLength()-u.getPrevious().getLength();r=u.getNext();}else if(r.equals(u.getPrevious())){o.startOffset=o.startOffset-r.getLength();r=u.getNext();}r.equals(t.getParent())&&o[s]++;r.equals(u.getParent())&&o[s]++;o[p?'endContainer':'startContainer']=r;return o;};})();(function(){if(b.webkit){b.hc=false;return;}var l=c&&b.version<7,m=c&&b.version==7,n=l?a.basePath+'images/spacer.gif':m?'about:blank':'data:image/png;base64,',o=h.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;background-image:url('+n+')"></div>',a.document);o.appendTo(a.document.getHead());try{b.hc=o.getComputedStyle('background-image')=='none';}catch(p){b.hc=false;}if(b.hc)b.cssClass+=' cke_hc';o.remove();})();j.load(i.corePlugins.split(','),function(){a.status='loaded';a.fire('loaded');var l=a._.pending;if(l){delete a._.pending;for(var m=0;m<l.length;m++)a.add(l[m]);
|
||||
}});if(c)try{document.execCommand('BackgroundImageCache',false,true);}catch(l){}a.skins.add('kama',(function(){var m=[],n='cke_ui_color';if(c&&b.version<7)m.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:m,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(o){if(o.config.width&&!isNaN(o.config.width))o.config.width-=12;var p=[],q=/\$color/g,r='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';if(b.webkit){r=r.split('}').slice(0,-1);for(var s=0;s<r.length;s++)r[s]=r[s].split('{');}function t(w){var x=w.getById(n);if(!x){x=w.getHead().append('style');x.setAttribute('id',n);x.setAttribute('type','text/css');}return x;};function u(w,x,y){var z,A,B;for(var C=0;C<w.length;C++){if(b.webkit)for(A=0;A<x.length;A++){B=x[A][1];for(z=0;z<y.length;z++)B=B.replace(y[z][0],y[z][1]);w[C].$.sheet.addRule(x[A][0],B);}else{B=x;for(z=0;z<y.length;z++)B=B.replace(y[z][0],y[z][1]);if(c)w[C].$.styleSheet.cssText+=B;else w[C].$.innerHTML+=B;}}};var v=/\$color/g;e.extend(o,{uiColor:null,getUiColor:function(){return this.uiColor;
|
||||
},setUiColor:function(w){var x,y=t(a.document),z='.'+o.id,A=[z+' .cke_wrapper',z+'_dialog .cke_dialog_contents',z+'_dialog a.cke_dialog_tab',z+'_dialog .cke_dialog_footer'].join(','),B='background-color: $color !important;';if(b.webkit)x=[[A,B]];else x=A+'{'+B+'}';return(this.setUiColor=function(C){var D=[[v,C]];o.uiColor=C;u([y],x,D);u(p,r,D);})(w);}});o.on('menuShow',function(w){var x=w.data[0],y=x.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!y.getById('cke_ui_color')){var z=t(y);p.push(z);var A=o.getUiColor();if(A)u([z],r,[[v,A]]);}});if(o.config.uiColor)o.setUiColor(o.config.uiColor);}};})());(function(){a.dialog?m():a.on('dialogPluginReady',m);function m(){a.dialog.on('resize',function(n){var o=n.data,p=o.width,q=o.height,r=o.dialog,s=r.parts.contents;if(o.skin!='kama')return;s.setStyles({width:p+'px',height:q+'px'});setTimeout(function(){var t=r.parts.dialog.getChild([0,0,0]),u=t.getChild(0),v=t.getChild(2);v.setStyle('width',u.$.offsetWidth+'px');v=t.getChild(7);v.setStyle('width',u.$.offsetWidth-28+'px');v=t.getChild(4);v.setStyle('height',q+u.getChild(0).$.offsetHeight+'px');v=t.getChild(5);v.setStyle('height',q+u.getChild(0).$.offsetHeight+'px');},100);});};})();j.add('about',{requires:['dialog'],init:function(m){var n=m.addCommand('about',new a.dialogCommand('about'));n.modes={wysiwyg:1,source:1};n.canUndo=false;m.ui.addButton('About',{label:m.lang.about.title,command:'about'});a.dialog.add('about',this.path+'dialogs/about.js');}});(function(){var m='a11yhelp',n='a11yHelp';j.add(m,{availableLangs:{en:1,he:1},init:function(o){var p=this;o.addCommand(n,{exec:function(){var q=o.langCode;q=p.availableLangs[q]?q:'en';a.scriptLoader.load(a.getUrl(p.path+'lang/'+q+'.js'),function(){e.extend(o.lang,p.lang[q]);o.openDialog(n);});},modes:{wysiwyg:1,source:1},canUndo:false});a.dialog.add(n,this.path+'dialogs/a11yhelp.js');}});})();j.add('basicstyles',{requires:['styles','button'],init:function(m){var n=function(q,r,s,t){var u=new a.style(t);m.attachStyleStateChange(u,function(v){m.getCommand(s).setState(v);});m.addCommand(s,new a.styleCommand(u));m.ui.addButton(q,{label:r,command:s});},o=m.config,p=m.lang;n('Bold',p.bold,'bold',o.coreStyles_bold);n('Italic',p.italic,'italic',o.coreStyles_italic);n('Underline',p.underline,'underline',o.coreStyles_underline);n('Strike',p.strike,'strike',o.coreStyles_strike);n('Subscript',p.subscript,'subscript',o.coreStyles_subscript);n('Superscript',p.superscript,'superscript',o.coreStyles_superscript);
|
||||
}});i.coreStyles_bold={element:'strong',overrides:'b'};i.coreStyles_italic={element:'em',overrides:'i'};i.coreStyles_underline={element:'u'};i.coreStyles_strike={element:'strike'};i.coreStyles_subscript={element:'sub'};i.coreStyles_superscript={element:'sup'};(function(){var m={table:1,tbody:1,ul:1,ol:1,blockquote:1,div:1,tr:1},n={},o={};e.extend(n,m,{tr:1,p:1,div:1,li:1});e.extend(o,n,{td:1});function p(w){q(w);r(w);};function q(w){var x=w.editor,y=w.data.path,z=x.config.useComputedState,A;z=z===undefined||z;if(!z)A=s(y.lastElement);A=A||y.block||y.blockLimit;if(!A||A.getName()=='body')return;var B=z?A.getComputedStyle('direction'):A.getStyle('direction')||A.getAttribute('dir');x.getCommand('bidirtl').setState(B=='rtl'?1:2);x.getCommand('bidiltr').setState(B=='ltr'?1:2);};function r(w){var x=w.editor,y=x.container.getChild(1),z=s(w.data.path.lastElement);if(z&&x.lang.dir!=z.getComputedStyle('direction'))y.addClass('cke_mixed_dir_content');else y.removeClass('cke_mixed_dir_content');};function s(w){while(w&&!(w.getName() in o||w.is('body'))){var x=w.getParent();if(!x)break;w=x;}return w;};function t(w,x,y,z){h.setMarker(z,w,'bidi_processed',1);var A=w;while((A=A.getParent())&&!A.is('body')){if(A.getCustomData('bidi_processed')){w.removeStyle('direction');w.removeAttribute('dir');return null;}}var B='useComputedState' in y.config?y.config.useComputedState:1,C=B?w.getComputedStyle('direction'):w.getStyle('direction')||w.hasAttribute('dir');if(C==x)return null;var D=B?C:w.getComputedStyle('direction');w.removeStyle('direction');if(B){w.removeAttribute('dir');if(x!=w.getComputedStyle('direction'))w.setAttribute('dir',x);}else w.setAttribute('dir',x);if(x!=D)y.fire('dirChanged',w);y.forceNextSelectionCheck();return null;};function u(w,x){var y=w.getCommonAncestor(false,true);w.enlarge(2);if(w.checkBoundaryOfElement(y,1)&&w.checkBoundaryOfElement(y,2)){var z;while(y&&y.type==1&&(z=y.getParent())&&z.getChildCount()==1&&(!(y.getName() in x)||z.getName() in x))y=z;return y.type==1&&y.getName() in x&&y;}};function v(w){return function(x){var y=x.getSelection(),z=x.config.enterMode,A=y.getRanges();if(A&&A.length){var B={},C=y.createBookmarks(),D=A.createIterator(),E,F=0;while(E=D.getNextRange(1)){var G=E.getEnclosedNode();if(!G||G&&!(G.type==1&&G.getName() in n))G=u(E,m);if(G&&!G.isReadOnly())t(G,w,x,B);var H,I,J=new d.walker(E),K=C[F].startNode,L=C[F++].endNode;J.evaluator=function(M){return!!(M.type==1&&M.getName() in m&&!(M.getName()==(z==1)?'p':'div'&&M.getParent().type==1&&M.getParent().getName()=='blockquote')&&M.getPosition(K)&2&&(M.getPosition(L)&4+16)==4);
|
||||
};while(I=J.next())t(I,w,x,B);H=E.createIterator();H.enlargeBr=z!=2;while(I=H.getNextParagraph(z==1?'p':'div'))!I.isReadOnly()&&t(I,w,x,B);}h.clearAllMarkers(B);x.forceNextSelectionCheck();y.selectBookmarks(C);x.focus();}};};j.add('bidi',{requires:['styles','button'],init:function(w){var x=function(z,A,B,C){w.addCommand(B,new a.command(w,{exec:C}));w.ui.addButton(z,{label:A,command:B});},y=w.lang.bidi;x('BidiLtr',y.ltr,'bidiltr',v('ltr'));x('BidiRtl',y.rtl,'bidirtl',v('rtl'));w.on('selectionChange',p);}});})();(function(){function m(q,r){var s=r.block||r.blockLimit;if(!s||s.getName()=='body')return 2;if(s.getAscendant('blockquote',true))return 1;return 2;};function n(q){var r=q.editor,s=r.getCommand('blockquote');s.state=m(r,q.data.path);s.fire('state');};function o(q){for(var r=0,s=q.getChildCount(),t;r<s&&(t=q.getChild(r));r++){if(t.type==1&&t.isBlockBoundary())return false;}return true;};var p={exec:function(q){var r=q.getCommand('blockquote').state,s=q.getSelection(),t=s&&s.getRanges(true)[0];if(!t)return;var u=s.createBookmarks();if(c){var v=u[0].startNode,w=u[0].endNode,x;if(v&&v.getParent().getName()=='blockquote'){x=v;while(x=x.getNext()){if(x.type==1&&x.isBlockBoundary()){v.move(x,true);break;}}}if(w&&w.getParent().getName()=='blockquote'){x=w;while(x=x.getPrevious()){if(x.type==1&&x.isBlockBoundary()){w.move(x);break;}}}}var y=t.createIterator(),z;if(r==2){var A=[];while(z=y.getNextParagraph())A.push(z);if(A.length<1){var B=q.document.createElement(q.config.enterMode==1?'p':'div'),C=u.shift();t.insertNode(B);B.append(new d.text('\ufeff',q.document));t.moveToBookmark(C);t.selectNodeContents(B);t.collapse(true);C=t.createBookmark();A.push(B);u.unshift(C);}var D=A[0].getParent(),E=[];for(var F=0;F<A.length;F++){z=A[F];D=D.getCommonAncestor(z.getParent());}var G={table:1,tbody:1,tr:1,ol:1,ul:1};while(G[D.getName()])D=D.getParent();var H=null;while(A.length>0){z=A.shift();while(!z.getParent().equals(D))z=z.getParent();if(!z.equals(H))E.push(z);H=z;}while(E.length>0){z=E.shift();if(z.getName()=='blockquote'){var I=new d.documentFragment(q.document);while(z.getFirst()){I.append(z.getFirst().remove());A.push(I.getLast());}I.replace(z);}else A.push(z);}var J=q.document.createElement('blockquote');J.insertBefore(A[0]);while(A.length>0){z=A.shift();J.append(z);}}else if(r==1){var K=[],L={};while(z=y.getNextParagraph()){var M=null,N=null;while(z.getParent()){if(z.getParent().getName()=='blockquote'){M=z.getParent();N=z;break;}z=z.getParent();}if(M&&N&&!N.getCustomData('blockquote_moveout')){K.push(N);
|
||||
h.setMarker(L,N,'blockquote_moveout',true);}}h.clearAllMarkers(L);var O=[],P=[];L={};while(K.length>0){var Q=K.shift();J=Q.getParent();if(!Q.getPrevious())Q.remove().insertBefore(J);else if(!Q.getNext())Q.remove().insertAfter(J);else{Q.breakParent(Q.getParent());P.push(Q.getNext());}if(!J.getCustomData('blockquote_processed')){P.push(J);h.setMarker(L,J,'blockquote_processed',true);}O.push(Q);}h.clearAllMarkers(L);for(F=P.length-1;F>=0;F--){J=P[F];if(o(J))J.remove();}if(q.config.enterMode==2){var R=true;while(O.length){Q=O.shift();if(Q.getName()=='div'){I=new d.documentFragment(q.document);var S=R&&Q.getPrevious()&&!(Q.getPrevious().type==1&&Q.getPrevious().isBlockBoundary());if(S)I.append(q.document.createElement('br'));var T=Q.getNext()&&!(Q.getNext().type==1&&Q.getNext().isBlockBoundary());while(Q.getFirst())Q.getFirst().remove().appendTo(I);if(T)I.append(q.document.createElement('br'));I.replace(Q);R=false;}}}}s.selectBookmarks(u);q.focus();}};j.add('blockquote',{init:function(q){q.addCommand('blockquote',p);q.ui.addButton('Blockquote',{label:q.lang.blockquote,command:'blockquote'});q.on('selectionChange',n);},requires:['domiterator']});})();j.add('button',{beforeInit:function(m){m.ui.addHandler(1,k.button.handler);}});a.UI_BUTTON=1;k.button=function(m){e.extend(this,m,{title:m.label,className:m.className||m.command&&'cke_button_'+m.command||'',click:m.click||(function(n){n.execCommand(m.command);})});this._={};};k.button.handler={create:function(m){return new k.button(m);}};k.button.prototype={canGroup:true,render:function(m,n){var o=b,p=this._.id=e.getNextId(),q='',r=this.command,s,t;this._.editor=m;var u={id:p,button:this,editor:m,focus:function(){var w=a.document.getById(p);w.focus();},execute:function(){this.button.click(m);}};u.clickFn=s=e.addFunction(u.execute,u);u.index=t=k.button._.instances.push(u)-1;if(this.modes)m.on('mode',function(){this.setState(this.modes[m.mode]?2:0);},this);else if(r){r=m.getCommand(r);if(r){r.on('state',function(){this.setState(r.state);},this);q+='cke_'+(r.state==1?'on':r.state==0?'disabled':'off');}}if(!r)q+='cke_off';if(this.className)q+=' '+this.className;n.push('<span class="cke_button">','<a id="',p,'" class="',q,'"',o.gecko&&o.version>=10900&&!o.hc?'':'" href="javascript:void(\''+(this.title||'').replace("'",'')+"')\"",' title="',this.title,'" tabindex="-1" hidefocus="true" role="button" aria-labelledby="'+p+'_label"'+(this.hasArrow?' aria-haspopup="true"':''));if(o.opera||o.gecko&&o.mac)n.push(' onkeypress="return false;"');
|
||||
if(o.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');n.push(' onkeydown="return CKEDITOR.ui.button._.keydown(',t,', event);" onfocus="return CKEDITOR.ui.button._.focus(',t,', event);" onclick="CKEDITOR.tools.callFunction(',s,', this); return false;"><span class="cke_icon"');if(this.icon){var v=(this.iconOffset||0)*-16;n.push(' style="background-image:url(',a.getUrl(this.icon),');background-position:0 '+v+'px;"');}n.push('> </span><span id="',p,'_label" class="cke_label">',this.label,'</span>');if(this.hasArrow)n.push('<span class="cke_buttonarrow">'+(b.hc?'▼':' ')+'</span>');n.push('</a>','</span>');if(this.onRender)this.onRender();return u;},setState:function(m){if(this._.state==m)return false;this._.state=m;var n=a.document.getById(this._.id);if(n){n.setState(m);m==0?n.setAttribute('aria-disabled',true):n.removeAttribute('aria-disabled');m==1?n.setAttribute('aria-pressed',true):n.removeAttribute('aria-pressed');return true;}else return false;}};k.button._={instances:[],keydown:function(m,n){var o=k.button._.instances[m];if(o.onkey){n=new d.event(n);return o.onkey(o,n.getKeystroke())!==false;}},focus:function(m,n){var o=k.button._.instances[m],p;if(o.onfocus)p=o.onfocus(o,new d.event(n))!==false;if(b.gecko&&b.version<10900)n.preventBubble();return p;}};k.prototype.addButton=function(m,n){this.add(m,1,n);};a.on('reset',function(){k.button._.instances=[];});(function(){var m=function(t,u){var v=t.document,w=v.getBody(),x=0,y=function(){x=1;};w.on(u,y);(b.version>7?v.$:v.$.selection.createRange()).execCommand(u);w.removeListener(u,y);return x;},n=c?function(t,u){return m(t,u);}:function(t,u){try{return t.document.$.execCommand(u);}catch(v){return false;}},o=function(t){this.type=t;this.canUndo=this.type=='cut';};o.prototype={exec:function(t,u){this.type=='cut'&&s(t);var v=n(t,this.type);if(!v)alert(t.lang.clipboard[this.type+'Error']);return v;}};var p={canUndo:false,exec:c?function(t){t.focus();if(!t.document.getBody().fire('beforepaste')&&!m(t,'paste')){t.fire('pasteDialog');return false;}}:function(t){try{if(!t.document.getBody().fire('beforepaste')&&!t.document.$.execCommand('Paste',false,null))throw 0;}catch(u){setTimeout(function(){t.fire('pasteDialog');},0);return false;}}},q=function(t){if(this.mode!='wysiwyg')return;switch(t.data.keyCode){case 1000+86:case 2000+45:var u=this.document.getBody();if(!c&&u.fire('beforepaste'))t.cancel();else if(b.opera||b.gecko&&b.version<10900)u.fire('paste');return;case 1000+88:case 2000+46:var v=this;
|
||||
this.fire('saveSnapshot');setTimeout(function(){v.fire('saveSnapshot');},0);}};function r(t,u,v){var w=this.document;if(w.getById('cke_pastebin'))return;if(u=='text'&&t.data&&t.data.$.clipboardData){var x=t.data.$.clipboardData.getData('text/plain');if(x){t.data.preventDefault();v(x);return;}}var y=this.getSelection(),z=new d.range(w),A=new h(u=='text'?'textarea':b.webkit?'body':'div',w);A.setAttribute('id','cke_pastebin');b.webkit&&A.append(w.createText('\xa0'));w.getBody().append(A);A.setStyles({position:'absolute',top:y.getStartElement().getDocumentPosition().y+'px',width:'1px',height:'1px',overflow:'hidden'});A.setStyle(this.config.contentsLangDirection=='ltr'?'left':'right','-1000px');var B=y.createBookmarks();if(u=='text'){if(c){var C=w.getBody().$.createTextRange();C.moveToElementText(A.$);C.execCommand('Paste');t.data.preventDefault();}else{w.$.designMode='off';A.$.focus();}}else{z.setStartAt(A,1);z.setEndAt(A,2);z.select(true);}window.setTimeout(function(){u=='text'&&!c&&(w.$.designMode='on');A.remove();var D;A=b.webkit&&(D=A.getFirst())&&D.is&&D.hasClass('Apple-style-span')?D:A;y.selectBookmarks(B);v(A['get'+(u=='text'?'Value':'Html')]());},0);};function s(t){if(!c||b.quirks)return;var u=t.getSelection(),v;if(u.getType()==3&&(v=u.getSelectedElement())){var w=u.getRanges()[0],x=t.document.createText('');x.insertBefore(v);w.setStartBefore(x);w.setEndAfter(v);u.selectRanges([w]);setTimeout(function(){if(v.getParent()){x.remove();u.selectElement(v);}},0);}};j.add('clipboard',{requires:['dialog','htmldataprocessor'],init:function(t){t.on('paste',function(y){var z=y.data;if(z.html)t.insertHtml(z.html);else if(z.text)t.insertText(z.text);},null,null,1000);t.on('pasteDialog',function(y){setTimeout(function(){t.openDialog('paste');},0);});function u(y,z,A,B){var C=t.lang[z];t.addCommand(z,A);t.ui.addButton(y,{label:C,command:z});if(t.addMenuItems)t.addMenuItem(z,{label:C,command:z,group:'clipboard',order:B});};u('Cut','cut',new o('cut'),1);u('Copy','copy',new o('copy'),4);u('Paste','paste',p,8);a.dialog.add('paste',a.getUrl(this.path+'dialogs/paste.js'));t.on('key',q,t);var v=t.config.forcePasteAsPlainText?'text':'html';t.on('contentDom',function(){var y=t.document.getBody();y.on(v=='text'&&c||b.webkit?'paste':'beforepaste',function(z){if(w)return;r.call(t,z,v,function(A){if(!A)return;var B={};B[v]=A;t.fire('paste',B);});});y.on('beforecut',function(){!w&&s(t);});});if(t.contextMenu){var w;function x(y){c&&(w=1);var z=t.document.$.queryCommandEnabled(y)?2:0;
|
||||
w=0;return z;};t.contextMenu.addListener(function(y,z){var A=z.getCommonAncestor().isReadOnly();return{cut:!A&&x('Cut'),copy:x('Copy'),paste:!A&&(b.webkit?2:x('Paste'))};});}}});})();j.add('colorbutton',{requires:['panelbutton','floatpanel','styles'],init:function(m){var n=m.config,o=m.lang.colorButton,p;if(!b.hc){q('TextColor','fore',o.textColorTitle);q('BGColor','back',o.bgColorTitle);}function q(s,t,u){m.ui.add(s,4,{label:u,title:u,className:'cke_button_'+s.toLowerCase(),modes:{wysiwyg:1},panel:{css:m.skin.editor.css,attributes:{role:'listbox','aria-label':o.panelTitle}},onBlock:function(v,w){w.autoSize=true;w.element.addClass('cke_colorblock');w.element.setHtml(r(v,t));w.element.getDocument().getBody().setStyle('overflow','hidden');var x=w.keys,y=m.lang.dir=='rtl';x[y?37:39]='next';x[40]='next';x[9]='next';x[y?39:37]='prev';x[38]='prev';x[2000+9]='prev';x[32]='click';}});};function r(s,t){var u=[],v=n.colorButton_colors.split(','),w=v.length+(n.colorButton_enableMore?2:1),x=e.addFunction(function(D,E){if(D=='?'){var F=arguments.callee;function G(I){this.removeListener('ok',G);this.removeListener('cancel',G);I.name=='ok'&&F(this.getContentElement('picker','selectedColor').getValue(),E);};m.openDialog('colordialog',function(){this.on('ok',G);this.on('cancel',G);});return;}m.focus();s.hide();m.fire('saveSnapshot');new a.style(n['colorButton_'+E+'Style'],{color:'inherit'}).remove(m.document);if(D){var H=n['colorButton_'+E+'Style'];H.childRule=E=='back'?function(){return false;}:function(I){return I.getName()!='a';};new a.style(H,{color:D}).apply(m.document);}m.fire('saveSnapshot');});u.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',o.auto,'" onclick="CKEDITOR.tools.callFunction(',x,",null,'",t,"');return false;\" href=\"javascript:void('",o.auto,'\')" role="option" aria-posinset="1" aria-setsize="',w,'"><table role="presentation" cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" style="background-color:#000"></span></td><td colspan=7 align=center>',o.auto,'</td></tr></table></a><table role="presentation" cellspacing=0 cellpadding=0 width="100%">');for(var y=0;y<v.length;y++){if(y%8===0)u.push('</tr><tr>');var z=v[y].split('/'),A=z[0],B=z[1]||A;if(!z[1])A='#'+A.replace(/^(.)(.)(.)$/,'$1$1$2$2$3$3');var C=m.lang.colors[B]||B;u.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',C,'" onclick="CKEDITOR.tools.callFunction(',x,",'",A,"','",t,"'); return false;\" href=\"javascript:void('",C,'\')" role="option" aria-posinset="',y+2,'" aria-setsize="',w,'"><span class="cke_colorbox" style="background-color:#',B,'"></span></a></td>');
|
||||
}if(n.colorButton_enableMore===undefined||n.colorButton_enableMore)u.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',o.more,'" onclick="CKEDITOR.tools.callFunction(',x,",'?','",t,"');return false;\" href=\"javascript:void('",o.more,"')\"",' role="option" aria-posinset="',w,'" aria-setsize="',w,'">',o.more,'</a></td>');u.push('</tr></table>');return u.join('');};}});i.colorButton_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';i.colorButton_foreStyle={element:'span',styles:{color:'#(color)'},overrides:[{element:'font',attributes:{color:null}}]};i.colorButton_backStyle={element:'span',styles:{'background-color':'#(color)'}};(function(){j.colordialog={init:function(m){m.addCommand('colordialog',new a.dialogCommand('colordialog'));a.dialog.add('colordialog',this.path+'dialogs/colordialog.js');}};j.add('colordialog',j.colordialog);})();j.add('contextmenu',{requires:['menu'],beforeInit:function(m){m.contextMenu=new j.contextMenu(m);m.addCommand('contextMenu',{exec:function(){m.contextMenu.show(m.document.getBody());}});}});j.contextMenu=e.createClass({$:function(m){this.id=e.getNextId();this.editor=m;this._.listeners=[];this._.functionId=e.addFunction(function(n){this._.panel.hide();m.focus();m.execCommand(n);},this);this.definition={panel:{className:m.skinClass+' cke_contextmenu',attributes:{'aria-label':m.lang.contextmenu.options}}};},_:{onMenu:function(m,n,o,p){var q=this._.menu,r=this.editor;if(q){q.hide();q.removeAll();}else{q=this._.menu=new a.menu(r,this.definition);q.onClick=e.bind(function(A){q.hide();if(A.onClick)A.onClick();else if(A.command)r.execCommand(A.command);},this);q.onEscape=function(A){var B=this.parent;if(B){B._.panel.hideChild();var C=B._.panel._.panel._.currentBlock,D=C._.focusIndex;C._.markItem(D);}else if(A==27){this.hide();r.focus();}return false;};}var s=this._.listeners,t=[],u=this.editor.getSelection(),v=u&&u.getStartElement();q.onHide=e.bind(function(){q.onHide=null;if(c){var A=r.getSelection();A&&A.unlock();}this.onHide&&this.onHide();},this);for(var w=0;w<s.length;w++){var x=s[w](v,u);if(x)for(var y in x){var z=this.editor.getMenuItem(y);if(z){z.state=x[y];q.add(z);}}}q.items.length&&q.show(m,n||(r.lang.dir=='rtl'?2:1),o,p);}},proto:{addTarget:function(m,n){if(b.opera&&!('oncontextmenu' in document.body)){var o;
|
||||
m.on('mousedown',function(s){s=s.data;if(s.$.button!=2){if(s.getKeystroke()==1000+1)m.fire('contextmenu',s);return;}if(n&&(b.mac?s.$.metaKey:s.$.ctrlKey))return;var t=s.getTarget();if(!o){var u=t.getDocument();o=u.createElement('input');o.$.type='button';u.getBody().append(o);}o.setAttribute('style','position:absolute;top:'+(s.$.clientY-2)+'px;left:'+(s.$.clientX-2)+'px;width:5px;height:5px;opacity:0.01');});m.on('mouseup',function(s){if(o){o.remove();o=undefined;m.fire('contextmenu',s.data);}});}m.on('contextmenu',function(s){var t=s.data;if(n&&(b.webkit?p:b.mac?t.$.metaKey:t.$.ctrlKey))return;t.preventDefault();var u=t.getTarget().getDocument().getDocumentElement(),v=t.$.clientX,w=t.$.clientY;e.setTimeout(function(){this.show(u,null,v,w);},0,this);},this);if(b.opera)m.on('keypress',function(s){var t=s.data;if(t.$.keyCode===0)t.preventDefault();});if(b.webkit){var p,q=function(s){p=b.mac?s.data.$.metaKey:s.data.$.ctrlKey;},r=function(){p=0;};m.on('keydown',q);m.on('keyup',r);m.on('contextmenu',r);}},addListener:function(m){this._.listeners.push(m);},show:function(m,n,o,p){this.editor.focus();if(c){var q=this.editor.getSelection();q&&q.lock();}this._.onMenu(m||a.document.getDocumentElement(),n,o||0,p||0);}}});(function(){function m(o){var p=this.att,q=o&&o.hasAttribute(p)&&o.getAttribute(p)||'';if(q!==undefined)this.setValue(q);};function n(){var o;for(var p=0;p<arguments.length;p++){if(arguments[p] instanceof h){o=arguments[p];break;}}if(o){var q=this.att,r=this.getValue();if(q=='dir'){var s=o.getAttribute(q,r);if(s!=r&&o.getParent())this._.dialog._.editor.fire('dirChanged',o);}if(r)o.setAttribute(q,r);else o.removeAttribute(q,r);}};j.add('dialogadvtab',{createAdvancedTab:function(o,p){if(!p)p={id:1,dir:1,classes:1,styles:1};var q=o.lang.common,r={id:'advanced',label:q.advancedTab,title:q.advancedTab,elements:[{type:'vbox',padding:1,children:[]}]},s=[];if(p.id||p.dir){if(p.id)s.push({id:'advId',att:'id',type:'text',label:q.id,setup:m,commit:n});if(p.dir)s.push({id:'advLangDir',att:'dir',type:'select',label:q.langDir,'default':'',style:'width:100%',items:[[q.notSet,''],[q.langDirLTR,'ltr'],[q.langDirRTL,'rtl']],setup:m,commit:n});r.elements[0].children.push({type:'hbox',widths:['50%','50%'],children:[].concat(s)});}if(p.styles||p.classes){s=[];if(p.styles)s.push({id:'advStyles',att:'style',type:'text',label:q.styles,'default':'',getStyle:function(t,u){var v=this.getValue().match(new RegExp(t+'\\s*:s*([^;]*)','i'));return v?v[1]:u;},updateStyle:function(t,u){var v=this.getValue();
|
||||
if(v)v=v.replace(new RegExp('\\s*'+t+'s*:[^;]*(?:$|;s*)','i'),'').replace(/^[;\s]+/,'').replace(/\s+$/,'');if(u){v&&!/;\s*$/.test(v)&&(v+='; ');v+=t+': '+u;}this.setValue(v,1);},setup:m,commit:n});if(p.classes)s.push({type:'hbox',widths:['45%','55%'],children:[{id:'advCSSClasses',att:'class',type:'text',label:q.cssClasses,'default':'',setup:m,commit:n}]});r.elements[0].children.push({type:'hbox',widths:['50%','50%'],children:[].concat(s)});}return r;}});})();(function(){j.add('div',{requires:['editingblock','domiterator','styles'],init:function(m){var n=m.lang.div;m.addCommand('creatediv',new a.dialogCommand('creatediv'));m.addCommand('editdiv',new a.dialogCommand('editdiv'));m.addCommand('removediv',{exec:function(o){var p=o.getSelection(),q=p&&p.getRanges(),r,s=p.createBookmarks(),t,u=[];function v(x){var y=new d.elementPath(x),z=y.blockLimit,A=z.is('div')&&z;if(A&&!A.getAttribute('_cke_div_added')){u.push(A);A.setAttribute('_cke_div_added');}};for(var w=0;w<q.length;w++){r=q[w];if(r.collapsed)v(p.getStartElement());else{t=new d.walker(r);t.evaluator=v;t.lastForward();}}for(w=0;w<u.length;w++)u[w].remove(true);p.selectBookmarks(s);}});m.ui.addButton('CreateDiv',{label:n.toolbar,command:'creatediv'});if(m.addMenuItems){m.addMenuItems({editdiv:{label:n.edit,command:'editdiv',group:'div',order:1},removediv:{label:n.remove,command:'removediv',group:'div',order:5}});if(m.contextMenu)m.contextMenu.addListener(function(o,p){if(!o||o.isReadOnly())return null;var q=new d.elementPath(o),r=q.blockLimit;if(r&&r.getAscendant('div',true))return{editdiv:2,removediv:2};return null;});}a.dialog.add('creatediv',this.path+'dialogs/div.js');a.dialog.add('editdiv',this.path+'dialogs/div.js');}});})();(function(){var m={toolbarFocus:{exec:function(o){var p=o._.elementsPath.idBase,q=a.document.getById(p+'0');if(q)q.focus();}}},n='<span class="cke_empty"> </span>';j.add('elementspath',{requires:['selection'],init:function(o){var p='cke_path_'+o.name,q,r=function(){if(!q)q=a.document.getById(p);return q;},s='cke_elementspath_'+e.getNextNumber()+'_';o._.elementsPath={idBase:s,filters:[]};o.on('themeSpace',function(t){if(t.data.space=='bottom')t.data.html+='<span id="'+p+'_label" class="cke_voice_label">'+o.lang.elementsPath.eleLabel+'</span>'+'<div id="'+p+'" class="cke_path" role="group" aria-labelledby="'+p+'_label">'+n+'</div>';});o.on('selectionChange',function(t){var u=b,v=t.data.selection,w=v.getStartElement(),x=[],y=t.editor,z=y._.elementsPath.list=[],A=y._.elementsPath.filters;
|
||||
while(w){var B=0;for(var C=0;C<A.length;C++){if(A[C](w)===false){B=1;break;}}if(!B){var D=z.push(w)-1,E;if(w.getAttribute('_cke_real_element_type'))E=w.getAttribute('_cke_real_element_type');else E=w.getName();var F='';if(u.opera||u.gecko&&u.mac)F+=' onkeypress="return false;"';if(u.gecko)F+=' onblur="this.style.cssText = this.style.cssText;"';var G=y.lang.elementsPath.eleTitle.replace(/%1/,E);x.unshift('<a id="',s,D,'" href="javascript:void(\'',E,'\')" tabindex="-1" title="',G,'"'+(b.gecko&&b.version<10900?' onfocus="event.preventBubble();"':'')+' hidefocus="true" '+" onkeydown=\"return CKEDITOR._.elementsPath.keydown('",y.name,"',",D,', event);"'+F," onclick=\"return CKEDITOR._.elementsPath.click('",y.name,"',",D,');"',' role="button" aria-labelledby="'+s+D+'_label">',E,'<span id="',s,D,'_label" class="cke_label">'+G+'</span>','</a>');}if(E=='body')break;w=w.getParent();}r().setHtml(x.join('')+n);});o.on('contentDomUnload',function(){q&&q.setHtml(n);});o.addCommand('elementsPathFocus',m.toolbarFocus);}});})();a._.elementsPath={click:function(m,n){var o=a.instances[m];o.focus();var p=o._.elementsPath.list[n];o.getSelection().selectElement(p);return false;},keydown:function(m,n,o){var p=k.button._.instances[n],q=a.instances[m],r=q._.elementsPath.idBase,s;o=new d.event(o);var t=q.lang.dir=='rtl';switch(o.getKeystroke()){case t?39:37:case 9:s=a.document.getById(r+(n+1));if(!s)s=a.document.getById(r+'0');s.focus();return false;case t?37:39:case 2000+9:s=a.document.getById(r+(n-1));if(!s)s=a.document.getById(r+(q._.elementsPath.list.length-1));s.focus();return false;case 27:q.focus();return false;case 13:case 32:this.click(m,n);return false;}return true;}};(function(){j.add('enterkey',{requires:['keystrokes','indent'],init:function(t){var u=t.specialKeys;u[13]=r;u[2000+13]=q;}});j.enterkey={enterBlock:function(t,u,v,w){v=v||s(t);if(!v)return;var x=v.document;if(v.checkStartOfBlock()&&v.checkEndOfBlock()){var y=new d.elementPath(v.startContainer),z=y.block;if(z&&(z.is('li')||z.getParent().is('li'))){t.execCommand('outdent');return;}}var A=u==3?'div':'p',B=v.splitBlock(A);if(!B)return;var C=B.previousBlock,D=B.nextBlock,E=B.wasStartOfBlock,F=B.wasEndOfBlock,G;if(D){G=D.getParent();if(G.is('li')){D.breakParent(G);D.move(D.getNext(),1);}}else if(C&&(G=C.getParent())&&G.is('li')){C.breakParent(G);v.moveToElementEditStart(C.getNext());C.move(C.getPrevious());}if(!E&&!F){if(D.is('li')&&(G=D.getFirst(d.walker.invisible(true)))&&G.is&&G.is('ul','ol'))(c?x.createText('\xa0'):x.createElement('br')).insertBefore(G);
|
||||
if(D)v.moveToElementEditStart(D);}else{var H;if(C){if(C.is('li')||!p.test(C.getName()))H=C.clone();}else if(D)H=D.clone();if(!H)H=x.createElement(A);else if(w&&!H.is('li'))H.renameNode(A);var I=B.elementPath;if(I)for(var J=0,K=I.elements.length;J<K;J++){var L=I.elements[J];if(L.equals(I.block)||L.equals(I.blockLimit))break;if(f.$removeEmpty[L.getName()]){L=L.clone();H.moveChildren(L);H.append(L);}}if(!c)H.appendBogus();v.insertNode(H);if(c&&E&&(!F||!C.getChildCount())){v.moveToElementEditStart(F?C:H);v.select();}v.moveToElementEditStart(E&&!F?D:H);}if(!c)if(D){var M=x.createElement('span');M.setHtml(' ');v.insertNode(M);M.scrollIntoView();v.deleteContents();}else H.scrollIntoView();v.select();},enterBr:function(t,u,v,w){v=v||s(t);if(!v)return;var x=v.document,y=u==3?'div':'p',z=v.checkEndOfBlock(),A=new d.elementPath(t.getSelection().getStartElement()),B=A.block,C=B&&A.block.getName(),D=false;if(!w&&C=='li'){o(t,u,v,w);return;}if(!w&&z&&p.test(C)){x.createElement('br').insertAfter(B);if(b.gecko)x.createText('').insertAfter(B);v.setStartAt(B.getNext(),c?3:1);}else{var E;D=C=='pre';if(D&&!b.gecko)E=x.createText(c?'\r':'\n');else E=x.createElement('br');v.deleteContents();v.insertNode(E);if(!c)x.createText('\ufeff').insertAfter(E);if(z&&!c)E.getParent().appendBogus();if(!c)E.getNext().$.nodeValue='';if(c)v.setStartAt(E,4);else v.setStartAt(E.getNext(),1);if(!c){var F=null;if(!b.gecko){F=x.createElement('span');F.setHtml(' ');}else F=x.createElement('br');F.insertBefore(E.getNext());F.scrollIntoView();F.remove();}}v.collapse(true);v.select(D);}};var m=j.enterkey,n=m.enterBr,o=m.enterBlock,p=/^h[1-6]$/;function q(t){if(t.mode!='wysiwyg')return false;if(t.getSelection().getStartElement().hasAscendant('pre',true)){setTimeout(function(){o(t,t.config.enterMode,null,true);},0);return true;}else return r(t,t.config.shiftEnterMode,1);};function r(t,u,v){v=t.config.forceEnterMode||v;if(t.mode!='wysiwyg')return false;if(!u)u=t.config.enterMode;setTimeout(function(){t.fire('saveSnapshot');if(u==2||t.getSelection().getStartElement().hasAscendant('pre',1))n(t,u,null,v);else o(t,u,null,v);},0);return true;};function s(t){var u=t.getSelection().getRanges(true);for(var v=u.length-1;v>0;v--)u[v].deleteContents();return u[0];};})();(function(){var m='nbsp,gt,lt,quot',n='iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',o='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',p='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv';
|
||||
function q(r,s){var t={},u=[],v={nbsp:'\xa0',shy:'',gt:'>',lt:'<'};r=r.replace(/\b(nbsp|shy|gt|lt|amp)(?:,|$)/g,function(A,B){var C=s?'&'+B+';':v[B],D=s?v[B]:'&'+B+';';t[C]=D;u.push(C);return '';});if(!s){r=r.split(',');var w=document.createElement('div'),x;w.innerHTML='&'+r.join(';&')+';';x=w.innerHTML;w=null;for(var y=0;y<x.length;y++){var z=x.charAt(y);t[z]='&'+r[y]+';';u.push(z);}}t.regex=u.join(s?'|':'');return t;};j.add('entities',{afterInit:function(r){var s=r.config,t=r.dataProcessor,u=t&&t.htmlFilter;if(u){var v=m;if(s.entities){v+=','+n;if(s.entities_latin)v+=','+o;if(s.entities_greek)v+=','+p;if(s.entities_additional)v+=','+s.entities_additional;}var w=q(v),x='['+w.regex+']';delete w.regex;if(s.entities&&s.entities_processNumerical)x='[^ -~]|'+x;x=new RegExp(x,'g');function y(C){return s.entities_processNumerical=='force'||!w[C]?'&#'+C.charCodeAt(0)+';':w[C];};var z=q([m,'shy'].join(','),true),A=new RegExp(z.regex,'g');function B(C){return z[C];};u.addRules({text:function(C){return C.replace(A,B).replace(x,y);}});}}});})();i.entities=true;i.entities_latin=true;i.entities_greek=true;i.entities_additional='#39';(function(){function m(v,w){var x=[];if(!w)return v;else for(var y in w)x.push(y+'='+encodeURIComponent(w[y]));return v+(v.indexOf('?')!=-1?'&':'?')+x.join('&');};function n(v){v+='';var w=v.charAt(0).toUpperCase();return w+v.substr(1);};function o(v){var C=this;var w=C.getDialog(),x=w.getParentEditor();x._.filebrowserSe=C;var y=x.config['filebrowser'+n(w.getName())+'WindowWidth']||x.config.filebrowserWindowWidth||'80%',z=x.config['filebrowser'+n(w.getName())+'WindowHeight']||x.config.filebrowserWindowHeight||'70%',A=C.filebrowser.params||{};A.CKEditor=x.name;A.CKEditorFuncNum=x._.filebrowserFn;if(!A.langCode)A.langCode=x.langCode;var B=m(C.filebrowser.url,A);x.popup(B,y,z,x.config.fileBrowserWindowFeatures);};function p(v){var y=this;var w=y.getDialog(),x=w.getParentEditor();x._.filebrowserSe=y;if(!w.getContentElement(y['for'][0],y['for'][1]).getInputElement().$.value)return false;if(!w.getContentElement(y['for'][0],y['for'][1]).getAction())return false;return true;};function q(v,w,x){var y=x.params||{};y.CKEditor=v.name;y.CKEditorFuncNum=v._.filebrowserFn;if(!y.langCode)y.langCode=v.langCode;w.action=m(x.url,y);w.filebrowser=x;};function r(v,w,x,y){var z,A;for(var B in y){z=y[B];if(z.type=='hbox'||z.type=='vbox')r(v,w,x,z.children);if(!z.filebrowser)continue;if(typeof z.filebrowser=='string'){var C={action:z.type=='fileButton'?'QuickUpload':'Browse',target:z.filebrowser};
|
||||
z.filebrowser=C;}if(z.filebrowser.action=='Browse'){var D=z.filebrowser.url;if(D===undefined){D=v.config['filebrowser'+n(w)+'BrowseUrl'];if(D===undefined)D=v.config.filebrowserBrowseUrl;}if(D){z.onClick=o;z.filebrowser.url=D;z.hidden=false;}}else if(z.filebrowser.action=='QuickUpload'&&z['for']){var D=z.filebrowser.url;if(D===undefined){D=v.config['filebrowser'+n(w)+'UploadUrl'];if(D===undefined)D=v.config.filebrowserUploadUrl;}if(D){var E=z.onClick;z.onClick=function(F){var G=F.sender;if(E&&E.call(G,F)===false)return false;return p.call(G,F);};z.filebrowser.url=D;z.hidden=false;q(v,x.getContents(z['for'][0]).get(z['for'][1]),z.filebrowser);}}}};function s(v,w){var x=w.getDialog(),y=w.filebrowser.target||null;v=v.replace(/#/g,'%23');if(y){var z=y.split(':'),A=x.getContentElement(z[0],z[1]);if(A){A.setValue(v);x.selectPage(z[0]);}}};function t(v,w,x){if(x.indexOf(';')!==-1){var y=x.split(';');for(var z=0;z<y.length;z++){if(t(v,w,y[z]))return true;}return false;}var A=v.getContents(w).get(x).filebrowser;return A&&A.url;};function u(v,w){var A=this;var x=A._.filebrowserSe.getDialog(),y=A._.filebrowserSe['for'],z=A._.filebrowserSe.filebrowser.onSelect;if(y)x.getContentElement(y[0],y[1]).reset();if(typeof w=='function'&&w.call(A._.filebrowserSe)===false)return;if(z&&z.call(A._.filebrowserSe,v,w)===false)return;if(typeof w=='string'&&w)alert(w);if(v)s(v,A._.filebrowserSe);};j.add('filebrowser',{init:function(v,w){v._.filebrowserFn=e.addFunction(u,v);}});a.on('dialogDefinition',function(v){var w=v.data.definition,x;for(var y in w.contents){if(x=w.contents[y]){r(v.editor,v.data.name,w,x.elements);if(x.hidden&&x.filebrowser)x.hidden=!t(w,x.id,x.filebrowser);}}});})();j.add('find',{init:function(m){var n=j.find;m.ui.addButton('Find',{label:m.lang.findAndReplace.find,command:'find'});var o=m.addCommand('find',new a.dialogCommand('find'));o.canUndo=false;m.ui.addButton('Replace',{label:m.lang.findAndReplace.replace,command:'replace'});var p=m.addCommand('replace',new a.dialogCommand('replace'));p.canUndo=false;a.dialog.add('find',this.path+'dialogs/find.js');a.dialog.add('replace',this.path+'dialogs/find.js');},requires:['styles']});i.find_highlight={element:'span',styles:{'background-color':'#004',color:'#fff'}};(function(){var m=/\.swf(?:$|\?)/i,n=e.cssLength;function o(q){var r=q.attributes;return r.type=='application/x-shockwave-flash'||m.test(r.src||'');};function p(q,r){var s=q.createFakeParserElement(r,'cke_flash','flash',true),t=s.attributes.style||'',u=r.attributes.width,v=r.attributes.height;
|
||||
if(typeof u!='undefined')t=s.attributes.style=t+'width:'+n(u)+';';if(typeof v!='undefined')t=s.attributes.style=t+'height:'+n(v)+';';return s;};j.add('flash',{init:function(q){q.addCommand('flash',new a.dialogCommand('flash'));q.ui.addButton('Flash',{label:q.lang.common.flash,command:'flash'});a.dialog.add('flash',this.path+'dialogs/flash.js');q.addCss('img.cke_flash{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');if(q.addMenuItems)q.addMenuItems({flash:{label:q.lang.flash.properties,command:'flash',group:'flash'}});q.on('doubleclick',function(r){var s=r.data.element;if(s.is('img')&&s.getAttribute('_cke_real_element_type')=='flash')r.data.dialog='flash';});if(q.contextMenu)q.contextMenu.addListener(function(r,s){if(r&&r.is('img')&&!r.isReadOnly()&&r.getAttribute('_cke_real_element_type')=='flash')return{flash:2};});},afterInit:function(q){var r=q.dataProcessor,s=r&&r.dataFilter;if(s)s.addRules({elements:{'cke:object':function(t){var u=t.attributes,v=u.classid&&String(u.classid).toLowerCase();if(!v){for(var w=0;w<t.children.length;w++){if(t.children[w].name=='cke:embed'){if(!o(t.children[w]))return null;return p(q,t);}}return null;}return p(q,t);},'cke:embed':function(t){if(!o(t))return null;return p(q,t);}}},5);},requires:['fakeobjects']});})();e.extend(i,{flashEmbedTagOnly:false,flashAddEmbedTag:true,flashConvertOnEdit:false});(function(){function m(n,o,p,q,r,s,t){var u=n.config,v=r.split(';'),w=[],x={};for(var y=0;y<v.length;y++){var z=v[y];if(z){z=z.split('/');var A={},B=v[y]=z[0];A[p]=w[y]=z[1]||B;x[B]=new a.style(t,A);x[B]._.definition.name=B;}else v.splice(y--,1);}n.ui.addRichCombo(o,{label:q.label,title:q.panelTitle,className:'cke_'+(p=='size'?'fontSize':'font'),panel:{css:n.skin.editor.css.concat(u.contentsCss),multiSelect:false,attributes:{'aria-label':q.panelTitle}},init:function(){this.startGroup(q.panelTitle);for(var C=0;C<v.length;C++){var D=v[C];this.add(D,x[D].buildPreview(),D);}},onClick:function(C){n.focus();n.fire('saveSnapshot');var D=x[C];if(this.getValue()==C)D.remove(n.document);else D.apply(n.document);n.fire('saveSnapshot');},onRender:function(){n.on('selectionChange',function(C){var D=this.getValue(),E=C.data.path,F=E.elements;for(var G=0,H;G<F.length;G++){H=F[G];for(var I in x){if(x[I].checkElementRemovable(H,true)){if(I!=D)this.setValue(I);return;}}}this.setValue('',s);},this);
|
||||
}});};j.add('font',{requires:['richcombo','styles'],init:function(n){var o=n.config;m(n,'Font','family',n.lang.font,o.font_names,o.font_defaultLabel,o.font_style);m(n,'FontSize','size',n.lang.fontSize,o.fontSize_sizes,o.fontSize_defaultLabel,o.fontSize_style);}});})();i.font_names='Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif';i.font_defaultLabel='';i.font_style={element:'span',styles:{'font-family':'#(family)'},overrides:[{element:'font',attributes:{face:null}}]};i.fontSize_sizes='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';i.fontSize_defaultLabel='';i.fontSize_style={element:'span',styles:{'font-size':'#(size)'},overrides:[{element:'font',attributes:{size:null}}]};j.add('format',{requires:['richcombo','styles'],init:function(m){var n=m.config,o=m.lang.format,p=n.format_tags.split(';'),q={};for(var r=0;r<p.length;r++){var s=p[r];q[s]=new a.style(n['format_'+s]);q[s]._.enterMode=m.config.enterMode;}m.ui.addRichCombo('Format',{label:o.label,title:o.panelTitle,className:'cke_format',panel:{css:m.skin.editor.css.concat(n.contentsCss),multiSelect:false,attributes:{'aria-label':o.panelTitle}},init:function(){this.startGroup(o.panelTitle);for(var t in q){var u=o['tag_'+t];this.add(t,'<'+t+'>'+u+'</'+t+'>',u);}},onClick:function(t){m.focus();m.fire('saveSnapshot');q[t].apply(m.document);setTimeout(function(){m.fire('saveSnapshot');},0);},onRender:function(){m.on('selectionChange',function(t){var u=this.getValue(),v=t.data.path;for(var w in q){if(q[w].checkActive(v)){if(w!=u)this.setValue(w,m.lang.format['tag_'+w]);return;}}this.setValue('');},this);}});}});i.format_tags='p;h1;h2;h3;h4;h5;h6;pre;address;div';i.format_p={element:'p'};i.format_div={element:'div'};i.format_pre={element:'pre'};i.format_address={element:'address'};i.format_h1={element:'h1'};i.format_h2={element:'h2'};i.format_h3={element:'h3'};i.format_h4={element:'h4'};i.format_h5={element:'h5'};i.format_h6={element:'h6'};j.add('forms',{init:function(m){var n=m.lang;m.addCss('form{border: 1px dotted #FF0000;padding: 2px;}\n');m.addCss('img.cke_hidden{background-image: url('+a.getUrl(this.path+'images/hiddenfield.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 16px !important;'+'height: 16px !important;'+'}');
|
||||
var o=function(q,r,s){m.addCommand(r,new a.dialogCommand(r));m.ui.addButton(q,{label:n.common[q.charAt(0).toLowerCase()+q.slice(1)],command:r});a.dialog.add(r,s);},p=this.path+'dialogs/';o('Form','form',p+'form.js');o('Checkbox','checkbox',p+'checkbox.js');o('Radio','radio',p+'radio.js');o('TextField','textfield',p+'textfield.js');o('Textarea','textarea',p+'textarea.js');o('Select','select',p+'select.js');o('Button','button',p+'button.js');o('ImageButton','imagebutton',j.getPath('image')+'dialogs/image.js');o('HiddenField','hiddenfield',p+'hiddenfield.js');if(m.addMenuItems)m.addMenuItems({form:{label:n.form.menu,command:'form',group:'form'},checkbox:{label:n.checkboxAndRadio.checkboxTitle,command:'checkbox',group:'checkbox'},radio:{label:n.checkboxAndRadio.radioTitle,command:'radio',group:'radio'},textfield:{label:n.textfield.title,command:'textfield',group:'textfield'},hiddenfield:{label:n.hidden.title,command:'hiddenfield',group:'hiddenfield'},imagebutton:{label:n.image.titleButton,command:'imagebutton',group:'imagebutton'},button:{label:n.button.title,command:'button',group:'button'},select:{label:n.select.title,command:'select',group:'select'},textarea:{label:n.textarea.title,command:'textarea',group:'textarea'}});if(m.contextMenu){m.contextMenu.addListener(function(q){if(q&&q.hasAscendant('form',true)&&!q.isReadOnly())return{form:2};});m.contextMenu.addListener(function(q){if(q&&!q.isReadOnly()){var r=q.getName();if(r=='select')return{select:2};if(r=='textarea')return{textarea:2};if(r=='input'){var s=q.getAttribute('type');if(s=='text'||s=='password')return{textfield:2};if(s=='button'||s=='submit'||s=='reset')return{button:2};if(s=='checkbox')return{checkbox:2};if(s=='radio')return{radio:2};if(s=='image')return{imagebutton:2};}if(r=='img'&&q.getAttribute('_cke_real_element_type')=='hiddenfield')return{hiddenfield:2};}});}m.on('doubleclick',function(q){var r=q.data.element;if(r.is('form'))q.data.dialog='form';else if(r.is('select'))q.data.dialog='select';else if(r.is('textarea'))q.data.dialog='textarea';else if(r.is('img')&&r.getAttribute('_cke_real_element_type')=='hiddenfield')q.data.dialog='hiddenfield';else if(r.is('input')){var s=r.getAttribute('type');switch(s){case 'text':case 'password':q.data.dialog='textfield';break;case 'button':case 'submit':case 'reset':q.data.dialog='button';break;case 'checkbox':q.data.dialog='checkbox';break;case 'radio':q.data.dialog='radio';break;case 'image':q.data.dialog='imagebutton';break;}}});},afterInit:function(m){var n=m.dataProcessor,o=n&&n.htmlFilter,p=n&&n.dataFilter;
|
||||
if(c)o&&o.addRules({elements:{input:function(q){var r=q.attributes,s=r.type;if(s=='checkbox'||s=='radio')r.value=='on'&&delete r.value;}}});if(p)p.addRules({elements:{input:function(q){if(q.attributes.type=='hidden')return m.createFakeParserElement(q,'cke_hidden','hiddenfield');}}});},requires:['image','fakeobjects']});if(c)h.prototype.hasAttribute=function(m){var p=this;var n=p.$.attributes.getNamedItem(m);if(p.getName()=='input')switch(m){case 'class':return p.$.className.length>0;case 'checked':return!!p.$.checked;case 'value':var o=p.getAttribute('type');if(o=='checkbox'||o=='radio')return p.$.value!='on';break;default:}return!!(n&&n.specified);};(function(){var m={canUndo:false,exec:function(o){o.insertElement(o.document.createElement('hr'));}},n='horizontalrule';j.add(n,{init:function(o){o.addCommand(n,m);o.ui.addButton('HorizontalRule',{label:o.lang.horizontalrule,command:n});}});})();(function(){var m=/^[\t\r\n ]*(?: |\xa0)$/,n='{cke_protected}';function o(T){var U=T.children.length,V=T.children[U-1];while(V&&V.type==3&&!e.trim(V.value))V=T.children[--U];return V;};function p(T,U){var V=T.children,W=o(T);if(W){if((U||!c)&&W.type==1&&W.name=='br')V.pop();if(W.type==3&&m.test(W.value))V.pop();}};function q(T){var U=o(T);return!U||U.type==1&&U.name=='br'||T.name=='form'&&U.name=='input';};function r(T){p(T,true);if(q(T))if(c)T.add(new a.htmlParser.text('\xa0'));else T.add(new a.htmlParser.element('br',{}));};function s(T){p(T);if(q(T))T.add(new a.htmlParser.text('\xa0'));};var t=f,u=e.extend({},t.$block,t.$listItem,t.$tableContent);for(var v in u){if(!('br' in t[v]))delete u[v];}delete u.pre;var w={elements:{},attributeNames:[[/^on/,'_cke_pa_on']]},x={elements:{}};for(v in u)x.elements[v]=r;var y={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^_cke_(saved|pa)_/,''],[/^_cke.*/,''],['hidefocus','']],elements:{$:function(T){var U=T.attributes;if(U){if(U.cke_temp)return false;var V=['name','href','src'],W;for(var X=0;X<V.length;X++){W='_cke_saved_'+V[X];W in U&&delete U[V[X]];}}return T;},embed:function(T){var U=T.parent;if(U&&U.name=='object'){var V=U.attributes.width,W=U.attributes.height;V&&(T.attributes.width=V);W&&(T.attributes.height=W);}},param:function(T){T.children=[];T.isEmpty=true;return T;},a:function(T){if(!(T.children.length||T.attributes.name||T.attributes._cke_saved_name))return false;},html:function(T){delete T.attributes.contenteditable;delete T.attributes['class'];},body:function(T){delete T.attributes.spellcheck;
|
||||
delete T.attributes.contenteditable;},style:function(T){var U=T.children[0];U&&U.value&&(U.value=e.trim(U.value));if(!T.attributes.type)T.attributes.type='text/css';},title:function(T){var U=T.children[0];U&&(U.value=T.attributes._cke_title||'');}},attributes:{'class':function(T,U){return e.ltrim(T.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}},comment:function(T){if(T.substr(0,n.length)==n){if(T.substr(n.length,3)=='{C}')T=T.substr(n.length+3);else T=T.substr(n.length);return new a.htmlParser.cdata(decodeURIComponent(T));}return T;}},z={elements:{}};for(v in u)z.elements[v]=s;if(c)y.attributes.style=function(T,U){return T.toLowerCase();};function A(T){T.attributes.contenteditable='false';};function B(T){delete T.attributes.contenteditable;};for(v in {input:1,textarea:1}){w.elements[v]=A;y.elements[v]=B;}var C=/<((?:a|area|img|input)[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi,D=/\s_cke_saved_src\s*=/,E=/(?:<style(?=[ >])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,F=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,G=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,H=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,I=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;function J(T){return T.replace(C,function(U,V,W,X,Y){if(X=='src'&&D.test(U))return U;else return '<'+V+W+' _cke_saved_'+W+Y+'>';});};function K(T){return T.replace(E,function(U){return '<cke:encoded>'+encodeURIComponent(U)+'</cke:encoded>';});};function L(T){return T.replace(F,function(U,V){return decodeURIComponent(V);});};function M(T){return T.replace(G,'$1cke:$2');};function N(T){return T.replace(H,'$1$2');};function O(T){return T.replace(I,'<cke:$1$2></cke:$1>');};function P(T){return T.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,'$1$2$2');};function Q(T){return T.replace(/<!--(?!{cke_protected})[\s\S]+?-->/g,function(U){return '<!--'+n+'{C}'+encodeURIComponent(U).replace(/--/g,'%2D%2D')+'-->';});};function R(T){return T.replace(/<!--\{cke_protected\}\{C\}([\s\S]+?)-->/g,function(U,V){return decodeURIComponent(V);});};function S(T,U){var V=[],W=/<\!--\{cke_temp(comment)?\}(\d*?)-->/g,X=[/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(U);T=T.replace(/<!--[\s\S]*?-->/g,function(Z){return '<!--{cke_tempcomment}'+(V.push(Z)-1)+'-->';});for(var Y=0;Y<X.length;Y++)T=T.replace(X[Y],function(Z){Z=Z.replace(W,function(aa,ab,ac){return V[ac];});return '<!--{cke_temp}'+(V.push(Z)-1)+'-->';});T=T.replace(W,function(Z,aa,ab){return '<!--'+n+(aa?'{C}':'')+encodeURIComponent(V[ab]).replace(/--/g,'%2D%2D')+'-->';
|
||||
});return T;};j.add('htmldataprocessor',{requires:['htmlwriter'],init:function(T){var U=T.dataProcessor=new a.htmlDataProcessor(T);U.writer.forceSimpleAmpersand=T.config.forceSimpleAmpersand;U.dataFilter.addRules(w);U.dataFilter.addRules(x);U.htmlFilter.addRules(y);U.htmlFilter.addRules(z);}});a.htmlDataProcessor=function(T){var U=this;U.editor=T;U.writer=new a.htmlWriter();U.dataFilter=new a.htmlParser.filter();U.htmlFilter=new a.htmlParser.filter();};a.htmlDataProcessor.prototype={toHtml:function(T,U){T=S(T,this.editor.config.protectedSource);T=J(T);T=K(T);T=M(T);T=O(T);T=P(T);var V=new h('div');V.setHtml('a'+T);T=V.getHtml().substr(1);T=N(T);T=L(T);T=R(T);var W=a.htmlParser.fragment.fromHtml(T,U),X=new a.htmlParser.basicWriter();W.writeHtml(X,this.dataFilter);T=X.getHtml(true);T=Q(T);return T;},toDataFormat:function(T,U){var V=this.writer,W=a.htmlParser.fragment.fromHtml(T,U);V.reset();W.writeHtml(V,this.htmlFilter);return V.getHtml(true);}};})();j.add('image',{init:function(m){var n='image';a.dialog.add(n,this.path+'dialogs/image.js');m.addCommand(n,new a.dialogCommand(n));m.ui.addButton('Image',{label:m.lang.common.image,command:n});m.on('doubleclick',function(o){var p=o.data.element;if(p.is('img')&&!p.getAttribute('_cke_realelement'))o.data.dialog='image';});if(m.addMenuItems)m.addMenuItems({image:{label:m.lang.image.menu,command:'image',group:'image'}});if(m.contextMenu)m.contextMenu.addListener(function(o,p){if(!o||!o.is('img')||o.getAttribute('_cke_realelement')||o.isReadOnly())return null;return{image:2};});}});i.image_removeLinkByEmptyURL=true;(function(){var m={ol:1,ul:1},n=d.walker.whitespaces(true),o=d.walker.bookmark(false,true);function p(u,v){u.getCommand(this.name).setState(v);};function q(u){var D=this;var v=u.editor,w=u.data.path,x=w&&w.contains(m);if(x)return p.call(D,v,2);if(!D.useIndentClasses&&D.name=='indent')return p.call(D,v,2);var y=u.data.path,z=y.block||y.blockLimit;if(!z)return p.call(D,v,0);if(D.useIndentClasses){var A=z.$.className.match(D.classNameRegex),B=0;if(A){A=A[1];B=D.indentClassMap[A];}if(D.name=='outdent'&&!B||D.name=='indent'&&B==v.config.indentClasses.length)return p.call(D,v,0);return p.call(D,v,2);}else{var C=parseInt(z.getStyle(s(z)),10);if(isNaN(C))C=0;if(C<=0)return p.call(D,v,0);return p.call(D,v,2);}};function r(u,v){var x=this;x.name=v;x.useIndentClasses=u.config.indentClasses&&u.config.indentClasses.length>0;if(x.useIndentClasses){x.classNameRegex=new RegExp('(?:^|\\s+)('+u.config.indentClasses.join('|')+')(?=$|\\s)');
|
||||
x.indentClassMap={};for(var w=0;w<u.config.indentClasses.length;w++)x.indentClassMap[u.config.indentClasses[w]]=w+1;}x.startDisabled=v=='outdent';};function s(u){return u.getComputedStyle('direction')=='ltr'?'margin-left':'margin-right';};function t(u){return u.type=1&&u.is('li');};r.prototype={exec:function(u){var v=this,w={};function x(M){var N=D.startContainer,O=D.endContainer;while(N&&!N.getParent().equals(M))N=N.getParent();while(O&&!O.getParent().equals(M))O=O.getParent();if(!N||!O)return;var P=N,Q=[],R=false;while(!R){if(P.equals(O))R=true;Q.push(P);P=P.getNext();}if(Q.length<1)return;var S=M.getParents(true);for(var T=0;T<S.length;T++){if(S[T].getName&&m[S[T].getName()]){M=S[T];break;}}var U=v.name=='indent'?1:-1,V=Q[0],W=Q[Q.length-1],X=j.list.listToArray(M,w),Y=X[W.getCustomData('listarray_index')].indent;for(T=V.getCustomData('listarray_index');T<=W.getCustomData('listarray_index');T++){X[T].indent+=U;var Z=X[T].parent;X[T].parent=new h(Z.getName(),Z.getDocument());}for(T=W.getCustomData('listarray_index')+1;T<X.length&&X[T].indent>Y;T++)X[T].indent+=U;var aa=M.getAttribute('dir')||M.getStyle('direction'),ab=j.list.arrayToList(X,w,null,u.config.enterMode,aa);if(v.name=='outdent'){var ac;if((ac=M.getParent())&&ac.is('li')){var ad=ab.listNode.getChildren(),ae=[],af=ad.count(),ag;for(T=af-1;T>=0;T--){if((ag=ad.getItem(T))&&ag.is&&ag.is('li'))ae.push(ag);}}}if(ab)ab.listNode.replace(M);if(ae&&ae.length)for(T=0;T<ae.length;T++){var ah=ae[T],ai=ah;while((ai=ai.getNext())&&ai.is&&ai.getName() in m){if(c&&!ah.getFirst(function(aj){return n(aj)&&o(aj);}))ah.append(D.document.createText('\xa0'));ah.append(ai);}ah.insertAfter(ac);}};function y(){var M=D.createIterator(),N=u.config.enterMode;M.enforceRealBlocks=true;M.enlargeBr=N!=2;var O;while(O=M.getNextParagraph())z(O);};function z(M){if(M.getCustomData('indent_processed'))return false;if(v.useIndentClasses){var N=M.$.className.match(v.classNameRegex),O=0;if(N){N=N[1];O=v.indentClassMap[N];}if(v.name=='outdent')O--;else O++;if(O<0)return false;O=Math.min(O,u.config.indentClasses.length);O=Math.max(O,0);var P=e.ltrim(M.$.className.replace(v.classNameRegex,''));if(O<1)M.$.className=P;else M.addClass(u.config.indentClasses[O-1]);}else{var Q=s(M),R=parseInt(M.getStyle(Q),10);if(isNaN(R))R=0;var S=u.config.indentOffset||40;R+=(v.name=='indent'?1:-1)*S;if(R<0)return false;R=Math.max(R,0);R=Math.ceil(R/S)*S;M.setStyle(Q,R?R+(u.config.indentUnit||'px'):'');if(M.getAttribute('style')==='')M.removeAttribute('style');
|
||||
}h.setMarker(w,M,'indent_processed',1);return true;};var A=u.getSelection(),B=A.createBookmarks(1),C=A&&A.getRanges(1),D,E=C.createIterator();while(D=E.getNextRange()){var F=D.getCommonAncestor(),G=F;while(G&&!(G.type==1&&m[G.getName()]))G=G.getParent();if(!G){var H=D.getEnclosedNode();if(H&&H.type==1&&H.getName() in m){D.setStartAt(H,1);D.setEndAt(H,2);G=H;}}if(G&&D.startContainer.type==1&&D.startContainer.getName() in m){var I=new d.walker(D);I.evaluator=t;D.startContainer=I.next();}if(G&&D.endContainer.type==1&&D.endContainer.getName() in m){I=new d.walker(D);I.evaluator=t;D.endContainer=I.previous();}if(G){var J=G.getFirst(function(M){return M.type==1&&M.is('li');}),K=D.startContainer,L=J.equals(K)||J.contains(K);if(!(L&&(v.name=='indent'||v.useIndentClasses||parseInt(G.getStyle(s(G)),10))&&z(G)))x(G);}else y();}h.clearAllMarkers(w);u.forceNextSelectionCheck();A.selectBookmarks(B);}};j.add('indent',{init:function(u){var v=new r(u,'indent'),w=new r(u,'outdent');u.addCommand('indent',v);u.addCommand('outdent',w);u.ui.addButton('Indent',{label:u.lang.indent,command:'indent'});u.ui.addButton('Outdent',{label:u.lang.outdent,command:'outdent'});u.on('selectionChange',e.bind(q,v));u.on('selectionChange',e.bind(q,w));if(b.ie6Compat||b.ie7Compat)u.addCss('ul,ol{\tmargin-left: 0px;\tpadding-left: 40px;}');u.on('dirChanged',function(x){var y=new d.range(u.document);y.setStartBefore(x.data);y.setEndAfter(x.data);var z=new d.walker(y),A;while(A=z.next()){if(A.type==1){if(!A.equals(x.data)&&A.getDirection()){y.setStartAfter(A);z=new d.walker(y);continue;}var B=A.getStyle('margin-right'),C=A.getStyle('margin-left');B?A.setStyle('margin-left',B):A.removeStyle('margin-left');C?A.setStyle('margin-right',C):A.removeStyle('margin-right');}}});},requires:['domiterator','list']});})();(function(){function m(r,s){var t=s.block||s.blockLimit;if(!t||t.getName()=='body')return 2;return n(t,r.config.useComputedState)==this.value?1:2;};function n(r,s){s=s===undefined||s;var t;if(s)t=r.getComputedStyle('text-align');else{while(!r.hasAttribute||!(r.hasAttribute('align')||r.getStyle('text-align'))){var u=r.getParent();if(!u)break;r=u;}t=r.getStyle('text-align')||r.getAttribute('align')||'';}t&&(t=t.replace(/-moz-|-webkit-|start|auto/i,''));!t&&s&&(t=r.getComputedStyle('direction')=='rtl'?'right':'left');return t;};function o(r){var s=r.editor.getCommand(this.name);s.state=m.call(this,r.editor,r.data.path);s.fire('state');};function p(r,s,t){var v=this;v.name=s;v.value=t;var u=r.config.justifyClasses;
|
||||
if(u){switch(t){case 'left':v.cssClassName=u[0];break;case 'center':v.cssClassName=u[1];break;case 'right':v.cssClassName=u[2];break;case 'justify':v.cssClassName=u[3];break;}v.cssClassRegex=new RegExp('(?:^|\\s+)(?:'+u.join('|')+')(?=$|\\s)');}};function q(r){var s=r.editor,t=new d.range(s.document);t.setStartBefore(r.data);t.setEndAfter(r.data);var u=new d.walker(t),v;while(v=u.next()){if(v.type==1){if(!v.equals(r.data)&&v.getDirection()){t.setStartAfter(v);u=new d.walker(t);continue;}var w='text-align',x=v.getStyle(w);if(x=='left')v.setStyle(w,'right');else if(x=='right')v.setStyle(w,'left');}}};p.prototype={exec:function(r){var D=this;var s=r.getSelection(),t=r.config.enterMode;if(!s)return;var u=s.createBookmarks(),v=s.getRanges(true),w=D.cssClassName,x,y,z=r.config.useComputedState;z=z===undefined||z;for(var A=v.length-1;A>=0;A--){x=v[A].createIterator();x.enlargeBr=t!=2;while(y=x.getNextParagraph()){y.removeAttribute('align');y.removeStyle('text-align');var B=w&&(y.$.className=e.ltrim(y.$.className.replace(D.cssClassRegex,''))),C=D.state==2&&(!z||n(y,true)!=D.value);if(w){if(C)y.addClass(w);else if(!B)y.removeAttribute('class');}else if(C)y.setStyle('text-align',D.value);}}r.focus();r.forceNextSelectionCheck();s.selectBookmarks(u);}};j.add('justify',{init:function(r){var s=new p(r,'justifyleft','left'),t=new p(r,'justifycenter','center'),u=new p(r,'justifyright','right'),v=new p(r,'justifyblock','justify');r.addCommand('justifyleft',s);r.addCommand('justifycenter',t);r.addCommand('justifyright',u);r.addCommand('justifyblock',v);r.ui.addButton('JustifyLeft',{label:r.lang.justify.left,command:'justifyleft'});r.ui.addButton('JustifyCenter',{label:r.lang.justify.center,command:'justifycenter'});r.ui.addButton('JustifyRight',{label:r.lang.justify.right,command:'justifyright'});r.ui.addButton('JustifyBlock',{label:r.lang.justify.block,command:'justifyblock'});r.on('selectionChange',e.bind(o,s));r.on('selectionChange',e.bind(o,u));r.on('selectionChange',e.bind(o,t));r.on('selectionChange',e.bind(o,v));r.on('dirChanged',q);},requires:['domiterator']});})();j.add('keystrokes',{beforeInit:function(m){m.keystrokeHandler=new a.keystrokeHandler(m);m.specialKeys={};},init:function(m){var n=m.config.keystrokes,o=m.config.blockedKeystrokes,p=m.keystrokeHandler.keystrokes,q=m.keystrokeHandler.blockedKeystrokes;for(var r=0;r<n.length;r++)p[n[r][0]]=n[r][1];for(r=0;r<o.length;r++)q[o[r]]=1;}});a.keystrokeHandler=function(m){var n=this;if(m.keystrokeHandler)return m.keystrokeHandler;
|
||||
n.keystrokes={};n.blockedKeystrokes={};n._={editor:m};return n;};(function(){var m,n=function(p){p=p.data;var q=p.getKeystroke(),r=this.keystrokes[q],s=this._.editor;m=s.fire('key',{keyCode:q})===true;if(!m){if(r){var t={from:'keystrokeHandler'};m=s.execCommand(r,t)!==false;}if(!m){var u=s.specialKeys[q];m=u&&u(s)===true;if(!m)m=!!this.blockedKeystrokes[q];}}if(m)p.preventDefault(true);return!m;},o=function(p){if(m){m=false;p.data.preventDefault(true);}};a.keystrokeHandler.prototype={attach:function(p){p.on('keydown',n,this);if(b.opera||b.gecko&&b.mac)p.on('keypress',o,this);}};})();i.blockedKeystrokes=[1000+66,1000+73,1000+85];i.keystrokes=[[4000+121,'toolbarFocus'],[4000+122,'elementsPathFocus'],[2000+121,'contextMenu'],[1000+2000+121,'contextMenu'],[1000+90,'undo'],[1000+89,'redo'],[1000+2000+90,'redo'],[1000+76,'link'],[1000+66,'bold'],[1000+73,'italic'],[1000+85,'underline'],[4000+109,'toolbarCollapse'],[4000+48,'a11yHelp']];j.add('link',{init:function(m){m.addCommand('link',new a.dialogCommand('link'));m.addCommand('anchor',new a.dialogCommand('anchor'));m.addCommand('unlink',new a.unlinkCommand());m.ui.addButton('Link',{label:m.lang.link.toolbar,command:'link'});m.ui.addButton('Unlink',{label:m.lang.unlink,command:'unlink'});m.ui.addButton('Anchor',{label:m.lang.anchor.toolbar,command:'anchor'});a.dialog.add('link',this.path+'dialogs/link.js');a.dialog.add('anchor',this.path+'dialogs/anchor.js');m.addCss('img.cke_anchor{background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 18px !important;'+'height: 18px !important;'+'}\n'+'a.cke_anchor'+'{'+'background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: 0 center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'padding-left: 18px;'+'}');m.on('selectionChange',function(n){var o=m.getCommand('unlink'),p=n.data.path.lastElement&&n.data.path.lastElement.getAscendant('a',true);if(p&&p.getName()=='a'&&p.getAttribute('href'))o.setState(2);else o.setState(0);});m.on('doubleclick',function(n){var o=j.link.getSelectedLink(m)||n.data.element;if(o.is('a'))n.data.dialog=o.getAttribute('name')&&!o.getAttribute('href')?'anchor':'link';else if(o.is('img')&&o.getAttribute('_cke_real_element_type')=='anchor')n.data.dialog='anchor';});if(m.addMenuItems)m.addMenuItems({anchor:{label:m.lang.anchor.menu,command:'anchor',group:'anchor'},link:{label:m.lang.link.menu,command:'link',group:'link',order:1},unlink:{label:m.lang.unlink,command:'unlink',group:'link',order:5}});
|
||||
if(m.contextMenu)m.contextMenu.addListener(function(n,o){if(!n||n.isReadOnly())return null;var p=n.is('img')&&n.getAttribute('_cke_real_element_type')=='anchor';if(!p){if(!(n=j.link.getSelectedLink(m)))return null;p=n.getAttribute('name')&&!n.getAttribute('href');}return p?{anchor:2}:{link:2,unlink:2};});},afterInit:function(m){var n=m.dataProcessor,o=n&&n.dataFilter;if(o)o.addRules({elements:{a:function(p){var q=p.attributes;if(q.name&&!q.href)return m.createFakeParserElement(p,'cke_anchor','anchor');}}});},requires:['fakeobjects']});j.link={getSelectedLink:function(m){try{var n=m.getSelection();if(n.getType()==3){var o=n.getSelectedElement();if(o.is('a'))return o;}var p=n.getRanges(true)[0];p.shrink(2);var q=p.getCommonAncestor();return q.getAscendant('a',true);}catch(r){return null;}}};a.unlinkCommand=function(){};a.unlinkCommand.prototype={exec:function(m){var n=m.getSelection(),o=n.createBookmarks(),p=n.getRanges(),q,r;for(var s=0;s<p.length;s++){q=p[s].getCommonAncestor(true);r=q.getAscendant('a',true);if(!r)continue;p[s].selectNodeContents(r);}n.selectRanges(p);m.document.$.execCommand('unlink',false,null);n.selectBookmarks(o);},startDisabled:true};e.extend(i,{linkShowAdvancedTab:true,linkShowTargetTab:true});(function(){var m={ol:1,ul:1},n=/^[\n\r\t ]*$/;j.list={listToArray:function(C,D,E,F,G){if(!m[C.getName()])return[];if(!F)F=0;if(!E)E=[];for(var H=0,I=C.getChildCount();H<I;H++){var J=C.getChild(H);if(J.$.nodeName.toLowerCase()!='li')continue;var K={parent:C,indent:F,element:J,contents:[]};if(!G){K.grandparent=C.getParent();if(K.grandparent&&K.grandparent.$.nodeName.toLowerCase()=='li')K.grandparent=K.grandparent.getParent();}else K.grandparent=G;if(D)h.setMarker(D,J,'listarray_index',E.length);E.push(K);for(var L=0,M=J.getChildCount(),N;L<M;L++){N=J.getChild(L);if(N.type==1&&m[N.getName()])j.list.listToArray(N,D,E,F+1,K.grandparent);else K.contents.push(N);}}return E;},arrayToList:function(C,D,E,F,G){if(!E)E=0;if(!C||C.length<E+1)return null;var H=C[E].parent.getDocument(),I=new d.documentFragment(H),J=null,K=E,L=Math.max(C[E].indent,0),M=null,N=F==1?'p':'div';while(1){var O=C[K];if(O.indent==L){if(!J||C[K].parent.getName()!=J.getName()){J=C[K].parent.clone(false,1);I.append(J);}M=J.append(O.element.clone(0,1));for(var P=0;P<O.contents.length;P++)M.append(O.contents[P].clone(1,1));K++;}else if(O.indent==Math.max(L,0)+1){var Q=j.list.arrayToList(C,null,K,F);M.append(Q.listNode);K=Q.nextIndex;}else if(O.indent==-1&&!E&&O.grandparent){M;if(m[O.grandparent.getName()])M=O.element.clone(false,true);
|
||||
else if(G||O.element.hasAttributes()||F!=2&&O.grandparent.getName()!='td'){M=H.createElement(N);O.element.copyAttributes(M,{type:1,value:1});G&&M.setAttribute('dir',G);if(!G&&F==2&&!M.hasAttributes())M=new d.documentFragment(H);}else M=new d.documentFragment(H);for(P=0;P<O.contents.length;P++)M.append(O.contents[P].clone(1,1));if(M.type==11&&K!=C.length-1){if(M.getLast()&&M.getLast().type==1&&M.getLast().getAttribute('type')=='_moz')M.getLast().remove();M.appendBogus();}if(M.type==1&&M.getName()==N&&M.$.firstChild){M.trim();var R=M.getFirst();if(R.type==1&&R.isBlockBoundary()){var S=new d.documentFragment(H);M.moveChildren(S);M=S;}}var T=M.$.nodeName.toLowerCase();if(!c&&(T=='div'||T=='p'))M.appendBogus();I.append(M);J=null;K++;}else return null;if(C.length<=K||Math.max(C[K].indent,0)<L)break;}if(D){var U=I.getFirst();while(U){if(U.type==1)h.clearMarkers(D,U);U=U.getNextSourceNode();}}return{listNode:I,nextIndex:K};}};function o(C,D){C.getCommand(this.name).setState(D);};function p(C){var D=C.data.path,E=D.blockLimit,F=D.elements,G;for(var H=0;H<F.length&&(G=F[H])&&!G.equals(E);H++){if(m[F[H].getName()])return o.call(this,C.editor,this.type==F[H].getName()?1:2);}return o.call(this,C.editor,2);};function q(C,D,E,F){var G=j.list.listToArray(D.root,E),H=[];for(var I=0;I<D.contents.length;I++){var J=D.contents[I];J=J.getAscendant('li',true);if(!J||J.getCustomData('list_item_processed'))continue;H.push(J);h.setMarker(E,J,'list_item_processed',true);}var K=D.root,L=K.getDocument().createElement(this.type);K.copyAttributes(L,{start:1,type:1});L.removeStyle('list-style-type');for(I=0;I<H.length;I++){var M=H[I].getCustomData('listarray_index');G[M].parent=L;}var N=j.list.arrayToList(G,E,null,C.config.enterMode),O,P=N.listNode.getChildCount();for(I=0;I<P&&(O=N.listNode.getChild(I));I++){if(O.getName()==this.type)F.push(O);}N.listNode.replace(D.root);};var r=/^h[1-6]$/;function s(C,D,E){var F=D.contents,G=D.root.getDocument(),H=[];if(F.length==1&&F[0].equals(D.root)){var I=G.createElement('div');F[0].moveChildren&&F[0].moveChildren(I);F[0].append(I);F[0]=I;}var J=D.contents[0].getParent();for(var K=0;K<F.length;K++)J=J.getCommonAncestor(F[K].getParent());var L=C.config.useComputedState,M,N;L=L===undefined||L;for(K=0;K<F.length;K++){var O=F[K],P;while(P=O.getParent()){if(P.equals(J)){H.push(O);if(!N&&O.getDirection())N=1;var Q=O.getDirection(L);if(M!==null)if(M&&M!=Q)M=null;else M=Q;break;}O=P;}}if(H.length<1)return;var R=H[H.length-1].getNext(),S=G.createElement(this.type);
|
||||
E.push(S);var T,U;while(H.length){T=H.shift();U=G.createElement('li');if(T.is('pre')||r.test(T.getName()))T.appendTo(U);else{if(M&&T.getDirection()){T.removeStyle('direction');T.removeAttribute('dir');}T.copyAttributes(U);T.moveChildren(U);T.remove();}U.appendTo(S);}if(M&&N)S.setAttribute('dir',M);if(R)S.insertBefore(R);else S.appendTo(J);};function t(C,D,E){var F=j.list.listToArray(D.root,E),G=[];for(var H=0;H<D.contents.length;H++){var I=D.contents[H];I=I.getAscendant('li',true);if(!I||I.getCustomData('list_item_processed'))continue;G.push(I);h.setMarker(E,I,'list_item_processed',true);}var J=null;for(H=0;H<G.length;H++){var K=G[H].getCustomData('listarray_index');F[K].indent=-1;J=K;}for(H=J+1;H<F.length;H++){if(F[H].indent>F[H-1].indent+1){var L=F[H-1].indent+1-F[H].indent,M=F[H].indent;while(F[H]&&F[H].indent>=M){F[H].indent+=L;H++;}H--;}}var N=j.list.arrayToList(F,E,null,C.config.enterMode,D.root.getAttribute('dir')),O=N.listNode,P,Q;function R(S){if((P=O[S?'getFirst':'getLast']())&&!(P.is&&P.isBlockBoundary())&&(Q=D.root[S?'getPrevious':'getNext'](d.walker.whitespaces(true)))&&!(Q.is&&Q.isBlockBoundary({br:1})))C.document.createElement('br')[S?'insertBefore':'insertAfter'](P);};R(true);R();O.replace(D.root);};function u(C,D){this.name=C;this.type=D;};u.prototype={exec:function(C){C.focus();var D=C.document,E=C.getSelection(),F=E&&E.getRanges(true);if(!F||F.length<1)return;if(this.state==2){var G=D.getBody();G.trim();if(!G.getFirst()){var H=D.createElement(C.config.enterMode==1?'p':C.config.enterMode==3?'div':'br');H.appendTo(G);F=new d.rangeList([new d.range(D)]);if(H.is('br')){F[0].setStartBefore(H);F[0].setEndAfter(H);}else F[0].selectNodeContents(H);E.selectRanges(F);}else{var I=F.length==1&&F[0],J=I&&I.getEnclosedNode();if(J&&J.is&&this.type==J.getName())o.call(this,C,1);}}var K=E.createBookmarks(true),L=[],M={},N=F.createIterator(),O=0;while((I=N.getNextRange())&&++O){var P=I.getBoundaryNodes(),Q=P.startNode,R=P.endNode;if(Q.type==1&&Q.getName()=='td')I.setStartAt(P.startNode,1);if(R.type==1&&R.getName()=='td')I.setEndAt(P.endNode,2);var S=I.createIterator(),T;S.forceBrBreak=this.state==2;while(T=S.getNextParagraph()){if(T.getCustomData('list_block'))continue;else h.setMarker(M,T,'list_block',1);var U=new d.elementPath(T),V=U.elements,W=V.length,X=null,Y=0,Z=U.blockLimit,aa;for(var ab=W-1;ab>=0&&(aa=V[ab]);ab--){if(m[aa.getName()]&&Z.contains(aa)){Z.removeCustomData('list_group_object_'+O);var ac=aa.getCustomData('list_group_object');if(ac)ac.contents.push(T);
|
||||
else{ac={root:aa,contents:[T]};L.push(ac);h.setMarker(M,aa,'list_group_object',ac);}Y=1;break;}}if(Y)continue;var ad=Z;if(ad.getCustomData('list_group_object_'+O))ad.getCustomData('list_group_object_'+O).contents.push(T);else{ac={root:ad,contents:[T]};h.setMarker(M,ad,'list_group_object_'+O,ac);L.push(ac);}}}var ae=[];while(L.length>0){ac=L.shift();if(this.state==2){if(m[ac.root.getName()])q.call(this,C,ac,M,ae);else s.call(this,C,ac,ae);}else if(this.state==1&&m[ac.root.getName()])t.call(this,C,ac,M);}for(ab=0;ab<ae.length;ab++){X=ae[ab];var af,ag=this;(af=function(ah){var ai=X[ah?'getPrevious':'getNext'](d.walker.whitespaces(true));if(ai&&ai.getName&&ai.getName()==ag.type){ai.remove();ai.moveChildren(X,ah);}})();af(1);}h.clearAllMarkers(M);E.selectBookmarks(K);C.focus();}};var v=f,w=/[\t\r\n ]*(?: |\xa0)$/;function x(C,D){var E,F=C.children,G=F.length;for(var H=0;H<G;H++){E=F[H];if(E.name&&E.name in D)return H;}return G;};function y(C){return function(D){var E=D.children,F=x(D,v.$list),G=E[F],H=G&&G.previous,I;if(H&&(H.name&&H.name=='br'||H.value&&(I=H.value.match(w)))){var J=H;if(!(I&&I.index)&&J==E[0])E[0]=C||c?new a.htmlParser.text('\xa0'):new a.htmlParser.element('br',{});else if(J.name=='br')E.splice(F-1,1);else J.value=J.value.replace(w,'');}};};var z={elements:{}};for(var A in v.$listItem)z.elements[A]=y();var B={elements:{}};for(A in v.$listItem)B.elements[A]=y(true);j.add('list',{init:function(C){var D=new u('numberedlist','ol'),E=new u('bulletedlist','ul');C.addCommand('numberedlist',D);C.addCommand('bulletedlist',E);C.ui.addButton('NumberedList',{label:C.lang.numberedlist,command:'numberedlist'});C.ui.addButton('BulletedList',{label:C.lang.bulletedlist,command:'bulletedlist'});C.on('selectionChange',e.bind(p,D));C.on('selectionChange',e.bind(p,E));},afterInit:function(C){var D=C.dataProcessor;if(D){D.dataFilter.addRules(z);D.htmlFilter.addRules(B);}},requires:['domiterator']});})();(function(){j.liststyle={requires:['dialog'],init:function(m){m.addCommand('numberedListStyle',new a.dialogCommand('numberedListStyle'));a.dialog.add('numberedListStyle',this.path+'dialogs/liststyle.js');m.addCommand('bulletedListStyle',new a.dialogCommand('bulletedListStyle'));a.dialog.add('bulletedListStyle',this.path+'dialogs/liststyle.js');if(m.addMenuItems){m.addMenuGroup('list',108);m.addMenuItems({numberedlist:{label:m.lang.list.numberedTitle,group:'list',command:'numberedListStyle'},bulletedlist:{label:m.lang.list.bulletedTitle,group:'list',command:'bulletedListStyle'}});
|
||||
}if(m.contextMenu)m.contextMenu.addListener(function(n,o){if(!n||n.isReadOnly())return null;while(n){var p=n.getName();if(p=='ol')return{numberedlist:2};else if(p=='ul')return{bulletedlist:2};n=n.getParent();}return null;});}};j.add('liststyle',j.liststyle);})();(function(){function m(s){if(!s||s.type!=1||s.getName()!='form')return[];var t=[],u=['style','className'];for(var v=0;v<u.length;v++){var w=u[v],x=s.$.elements.namedItem(w);if(x){var y=new h(x);t.push([y,y.nextSibling]);y.remove();}}return t;};function n(s,t){if(!s||s.type!=1||s.getName()!='form')return;if(t.length>0)for(var u=t.length-1;u>=0;u--){var v=t[u][0],w=t[u][1];if(w)v.insertBefore(w);else v.appendTo(s);}};function o(s,t){var u=m(s),v={},w=s.$;if(!t){v['class']=w.className||'';w.className='';}v.inline=w.style.cssText||'';if(!t)w.style.cssText='position: static; overflow: visible';n(u);return v;};function p(s,t){var u=m(s),v=s.$;if('class' in t)v.className=t['class'];if('inline' in t)v.style.cssText=t.inline;n(u);};function q(s){var t=a.instances;for(var u in t){var v=t[u];if(v.mode=='wysiwyg'){var w=v.document.getBody();w.setAttribute('contentEditable',false);w.setAttribute('contentEditable',true);}}if(s.focusManager.hasFocus){s.toolbox.focus();s.focus();}};function r(s){if(!c||b.version>6)return null;var t=h.createFromHtml('<iframe frameborder="0" tabindex="-1" src="javascript:void((function(){document.open();'+(b.isCustomDomain()?"document.domain='"+this.getDocument().$.domain+"';":'')+'document.close();'+'})())"'+' style="display:block;position:absolute;z-index:-1;'+'progid:DXImageTransform.Microsoft.Alpha(opacity=0);'+'"></iframe>');return s.append(t,true);};j.add('maximize',{init:function(s){var t=s.lang,u=a.document,v=u.getWindow(),w,x,y,z;function A(){var C=v.getViewPaneSize();z&&z.setStyles({width:C.width+'px',height:C.height+'px'});s.resize(C.width,C.height,null,true);};var B=2;s.addCommand('maximize',{modes:{wysiwyg:1,source:1},editorFocus:false,exec:function(){var C=s.container.getChild(1),D=s.getThemeSpace('contents');if(s.mode=='wysiwyg'){var E=s.getSelection();w=E&&E.getRanges();x=v.getScrollPosition();}else{var F=s.textarea.$;w=!c&&[F.selectionStart,F.selectionEnd];x=[F.scrollLeft,F.scrollTop];}if(this.state==2){v.on('resize',A);y=v.getScrollPosition();var G=s.container;while(G=G.getParent()){G.setCustomData('maximize_saved_styles',o(G));G.setStyle('z-index',s.config.baseFloatZIndex-1);}D.setCustomData('maximize_saved_styles',o(D,true));C.setCustomData('maximize_saved_styles',o(C,true));
|
||||
var H=v.getViewPaneSize(),I={overflow:'hidden',width:(b.opera?H.width:0)+'px',height:(b.opera?H.height-16:0)+'px'};if(c)u.$.documentElement.style.overflow=u.getBody().$.style.overflow='hidden';else u.getBody().setStyles(I);if(b.opera)u.getBody().getParent().setStyles(I);c?setTimeout(function(){v.$.scrollTo(0,0);},0):v.$.scrollTo(0,0);C.setStyle('position','absolute');C.$.offsetLeft;C.setStyles({'z-index':s.config.baseFloatZIndex-1,left:'0px',top:'0px'});z=r(C);C.addClass('cke_maximized');A();var J=C.getDocumentPosition();C.setStyles({left:-1*J.x+'px',top:-1*J.y+'px'});b.gecko&&q(s);}else if(this.state==1){v.removeListener('resize',A);var K=[D,C];for(var L=0;L<K.length;L++){p(K[L],K[L].getCustomData('maximize_saved_styles'));K[L].removeCustomData('maximize_saved_styles');}G=s.container;while(G=G.getParent()){p(G,G.getCustomData('maximize_saved_styles'));G.removeCustomData('maximize_saved_styles');}c?setTimeout(function(){v.$.scrollTo(y.x,y.y);},0):v.$.scrollTo(y.x,y.y);C.removeClass('cke_maximized');if(z){z.remove();z=null;}s.fire('resize');}this.toggleState();var M=this.uiItems[0],N=this.state==2?t.maximize:t.minimize,O=s.element.getDocument().getById(M._.id);O.getChild(1).setHtml(N);O.setAttribute('title',N);O.setAttribute('href','javascript:void("'+N+'");');if(s.mode=='wysiwyg'){if(w){b.gecko&&q(s);s.getSelection().selectRanges(w);var P=s.getSelection().getStartElement();P&&P.scrollIntoView(true);}else v.$.scrollTo(x.x,x.y);}else{if(w){F.selectionStart=w[0];F.selectionEnd=w[1];}F.scrollLeft=x[0];F.scrollTop=x[1];}w=x=null;B=this.state;},canUndo:false});s.ui.addButton('Maximize',{label:t.maximize,command:'maximize'});s.on('mode',function(){var C=s.getCommand('maximize');C.setState(C.state==0?0:B);},null,null,100);}});})();j.add('newpage',{init:function(m){m.addCommand('newpage',{modes:{wysiwyg:1,source:1},exec:function(n){var o=this;n.setData(n.config.newpage_html||'',function(){setTimeout(function(){n.fire('afterCommandExec',{name:o.name,command:o});},200);});n.focus();},async:true});m.ui.addButton('NewPage',{label:m.lang.newPage,command:'newpage'});}});j.add('pagebreak',{init:function(m){m.addCommand('pagebreak',j.pagebreakCmd);m.ui.addButton('PageBreak',{label:m.lang.pagebreak,command:'pagebreak'});m.addCss('img.cke_pagebreak{background-image: url('+a.getUrl(this.path+'images/pagebreak.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'clear: both;'+'display: block;'+'float: none;'+'width:100% !important; _width:99.9% !important;'+'border-top: #999999 1px dotted;'+'border-bottom: #999999 1px dotted;'+'height: 5px !important;'+'page-break-after: always;'+'}');
|
||||
},afterInit:function(m){var n=m.dataProcessor,o=n&&n.dataFilter;if(o)o.addRules({elements:{div:function(p){var q=p.attributes,r=q&&q.style,s=r&&p.children.length==1&&p.children[0],t=s&&s.name=='span'&&s.attributes.style;if(t&&/page-break-after\s*:\s*always/i.test(r)&&/display\s*:\s*none/i.test(t)){var u=m.createFakeParserElement(p,'cke_pagebreak','div'),v=m.lang.pagebreakAlt;u.attributes.alt=v;u.attributes['aria-label']=v;return u;}}}});},requires:['fakeobjects']});j.pagebreakCmd={exec:function(m){var n=m.lang.pagebreakAlt,o=h.createFromHtml('<div style="page-break-after: always;"><span style="display: none;"> </span></div>');o=m.createFakeElement(o,'cke_pagebreak','div');o.setAttribute('alt',n);o.setAttribute('aria-label',n);var p=m.getSelection().getRanges(true);m.fire('saveSnapshot');for(var q,r=p.length-1;r>=0;r--){q=p[r];if(r<p.length-1)o=o.clone(true);q.splitBlock('p');q.insertNode(o);if(r==p.length-1){q.moveToPosition(o,4);q.select();}var s=o.getPrevious();if(s&&f[s.getName()].div)o.move(s);}m.fire('saveSnapshot');}};(function(){j.add('pastefromword',{init:function(m){var n=0,o=function(){setTimeout(function(){n=0;},0);};m.addCommand('pastefromword',{canUndo:false,exec:function(){n=1;if(m.execCommand('paste')===false)m.on('dialogHide',function(p){p.removeListener();o();});else o();}});m.ui.addButton('PasteFromWord',{label:m.lang.pastefromword.toolbar,command:'pastefromword'});m.on('paste',function(p){var q=p.data,r;if((r=q.html)&&(n||/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(r))){var s=this.loadFilterRules(function(){if(s)m.fire('paste',q);else if(!m.config.pasteFromWordPromptCleanup||n||confirm(m.lang.pastefromword.confirmCleanup))q.html=a.cleanWord(r,m);});s&&p.cancel();}},this);},loadFilterRules:function(m){var n=a.cleanWord;if(n)m();else{var o=a.getUrl(i.pasteFromWordCleanupFile||this.path+'filter/default.js');a.scriptLoader.load(o,m,null,false,true);}return!n;}});})();(function(){var m={exec:function(p){var q=e.tryThese(function(){var r=window.clipboardData.getData('Text');if(!r)throw 0;return r;});if(!q){p.openDialog('pastetext');return false;}else p.fire('paste',{text:q});return true;}};function n(p,q){if(c){var r=p.selection;if(r.type=='Control')r.clear();r.createRange().pasteHTML(q);}else p.execCommand('inserthtml',false,q);};j.add('pastetext',{init:function(p){var q='pastetext',r=p.addCommand(q,m);p.ui.addButton('PasteText',{label:p.lang.pasteText.button,command:q});a.dialog.add(q,a.getUrl(this.path+'dialogs/pastetext.js'));
|
||||
if(p.config.forcePasteAsPlainText)p.on('beforeCommandExec',function(s){if(s.data.name=='paste'){p.execCommand('pastetext');s.cancel();}},null,null,0);},requires:['clipboard']});function o(p,q,r,s){while(r--)j.enterkey[q==2?'enterBr':'enterBlock'](p,q,null,s);};a.editor.prototype.insertText=function(p){this.focus();this.fire('saveSnapshot');var q=this.getSelection().getStartElement().hasAscendant('pre',true)?2:this.config.enterMode,r=q==2,s=this.document.$,t=this,u;p=e.htmlEncode(p.replace(/\r\n|\r/g,'\n'));var v=0;p.replace(/\n+/g,function(w,x){u=p.substring(v,x);v=x+w.length;u.length&&n(s,u);var y=w.length,z=r?0:Math.floor(y/2),A=r?y:y%2;o(t,q,z);o(t,2,A,r?false:true);});u=p.substring(v,p.length);u.length&&n(s,u);this.fire('saveSnapshot');};})();j.add('popup');e.extend(a.editor.prototype,{popup:function(m,n,o,p){n=n||'80%';o=o||'70%';if(typeof n=='string'&&n.length>1&&n.substr(n.length-1,1)=='%')n=parseInt(window.screen.width*parseInt(n,10)/100,10);if(typeof o=='string'&&o.length>1&&o.substr(o.length-1,1)=='%')o=parseInt(window.screen.height*parseInt(o,10)/100,10);if(n<640)n=640;if(o<420)o=420;var q=parseInt((window.screen.height-o)/2,10),r=parseInt((window.screen.width-n)/2,10);p=(p||'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes')+',width='+n+',height='+o+',top='+q+',left='+r;var s=window.open('',null,p,true);if(!s)return false;try{s.moveTo(r,q);s.resizeTo(n,o);s.focus();s.location.href=m;}catch(t){s=window.open(m,null,p,true);}return true;}});(function(){var m={modes:{wysiwyg:1,source:1},canUndo:false,exec:function(o){var p,q=o.config,r=q.baseHref?'<base href="'+q.baseHref+'"/>':'',s=b.isCustomDomain();if(q.fullPage)p=o.getData().replace(/<head>/,'$&'+r).replace(/[^>]*(?=<\/title>)/,o.lang.preview);else{var t='<body ',u=o.document&&o.document.getBody();if(u){if(u.getAttribute('id'))t+='id="'+u.getAttribute('id')+'" ';if(u.getAttribute('class'))t+='class="'+u.getAttribute('class')+'" ';}t+='>';p=o.config.docType+'<html dir="'+o.config.contentsLangDirection+'">'+'<head>'+r+'<title>'+o.lang.preview+'</title>'+e.buildStyleHtml(o.config.contentsCss)+'</head>'+t+o.getData()+'</body></html>';}var v=640,w=420,x=80;try{var y=window.screen;v=Math.round(y.width*0.8);w=Math.round(y.height*0.7);x=Math.round(y.width*0.1);}catch(B){}var z='';if(s){window._cke_htmlToLoad=p;z='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';
|
||||
}var A=window.open(z,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+v+',height='+w+',left='+x);if(!s){A.document.open();A.document.write(p);A.document.close();}}},n='preview';j.add(n,{init:function(o){o.addCommand(n,m);o.ui.addButton('Preview',{label:o.lang.preview,command:n});}});})();j.add('print',{init:function(m){var n='print',o=m.addCommand(n,j.print);m.ui.addButton('Print',{label:m.lang.print,command:n});}});j.print={exec:function(m){if(b.opera)return;else if(b.gecko)m.window.$.print();else m.document.$.execCommand('Print');},canUndo:false,modes:{wysiwyg:!b.opera}};j.add('removeformat',{requires:['selection'],init:function(m){m.addCommand('removeFormat',j.removeformat.commands.removeformat);m.ui.addButton('RemoveFormat',{label:m.lang.removeFormat,command:'removeFormat'});m._.removeFormat={filters:[]};}});j.removeformat={commands:{removeformat:{exec:function(m){var n=m._.removeFormatRegex||(m._.removeFormatRegex=new RegExp('^(?:'+m.config.removeFormatTags.replace(/,/g,'|')+')$','i')),o=m._.removeAttributes||(m._.removeAttributes=m.config.removeFormatAttributes.split(',')),p=j.removeformat.filter,q=m.getSelection().getRanges(1),r=q.createIterator(),s;while(s=r.getNextRange()){if(s.collapsed)continue;s.enlarge(1);var t=s.createBookmark(),u=t.startNode,v=t.endNode,w=function(z){var A=new d.elementPath(z),B=A.elements;for(var C=1,D;D=B[C];C++){if(D.equals(A.block)||D.equals(A.blockLimit))break;if(n.test(D.getName())&&p(m,D))z.breakParent(D);}};w(u);w(v);var x=u.getNextSourceNode(true,1);while(x){if(x.equals(v))break;var y=x.getNextSourceNode(false,1);if(!(x.getName()=='img'&&x.getAttribute('_cke_realelement'))&&p(m,x))if(n.test(x.getName()))x.remove(1);else{x.removeAttributes(o);m.fire('removeFormatCleanup',x);}x=y;}s.moveToBookmark(t);}m.getSelection().selectRanges(q);}}},filter:function(m,n){var o=m._.removeFormat.filters;for(var p=0;p<o.length;p++){if(o[p](n)===false)return false;}return true;}};a.editor.prototype.addRemoveFormatFilter=function(m){this._.removeFormat.filters.push(m);};i.removeFormatTags='b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';i.removeFormatAttributes='class,style,lang,width,height,align,hspace,valign';j.add('resize',{init:function(m){var n=m.config;!n.resize_dir&&(n.resize_dir='both');n.resize_maxWidth==undefined&&(n.resize_maxWidth=3000);n.resize_maxHeight==undefined&&(n.resize_maxHeight=3000);n.resize_minWidth==undefined&&(n.resize_minWidth=750);
|
||||
n.resize_minHeight==undefined&&(n.resize_minHeight=250);if(n.resize_enabled!==false){var o=null,p,q,r=(n.resize_dir=='both'||n.resize_dir=='horizontal')&&n.resize_minWidth!=n.resize_maxWidth,s=(n.resize_dir=='both'||n.resize_dir=='vertical')&&n.resize_minHeight!=n.resize_maxHeight;function t(w){var x=w.data.$.screenX-p.x,y=w.data.$.screenY-p.y,z=q.width,A=q.height,B=z+x*(m.lang.dir=='rtl'?-1:1),C=A+y;if(r)z=Math.max(n.resize_minWidth,Math.min(B,n.resize_maxWidth));if(s)A=Math.max(n.resize_minHeight,Math.min(C,n.resize_maxHeight));m.resize(z,A);};function u(w){a.document.removeListener('mousemove',t);a.document.removeListener('mouseup',u);if(m.document){m.document.removeListener('mousemove',t);m.document.removeListener('mouseup',u);}};var v=e.addFunction(function(w){if(!o)o=m.getResizable();q={width:o.$.offsetWidth||0,height:o.$.offsetHeight||0};p={x:w.screenX,y:w.screenY};n.resize_minWidth>q.width&&(n.resize_minWidth=q.width);n.resize_minHeight>q.height&&(n.resize_minHeight=q.height);a.document.on('mousemove',t);a.document.on('mouseup',u);if(m.document){m.document.on('mousemove',t);m.document.on('mouseup',u);}});m.on('destroy',function(){e.removeFunction(v);});m.on('themeSpace',function(w){if(w.data.space=='bottom'){var x='';if(r&&!s)x=' cke_resizer_horizontal';if(!r&&s)x=' cke_resizer_vertical';w.data.html+='<div class="cke_resizer'+x+'"'+' title="'+e.htmlEncode(m.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+v+', event)"'+'></div>';}},m,null,100);}}});(function(){var m={modes:{wysiwyg:1,source:1},exec:function(o){var p=o.element.$.form;if(p)try{p.submit();}catch(q){if(p.submit.click)p.submit.click();}}},n='save';j.add(n,{init:function(o){var p=o.addCommand(n,m);p.modes={wysiwyg:!!o.element.$.form};o.ui.addButton('Save',{label:o.lang.save,command:n});}});})();(function(){var m='scaytcheck',n='';function o(t,u){var v=0,w;for(w in u){if(u[w]==t){v=1;break;}}return v;};var p=function(){var t=this,u=function(){var y=t.config,z={};z.srcNodeRef=t.document.getWindow().$.frameElement;z.assocApp='CKEDITOR.'+a.version+'@'+a.revision;z.customerid=y.scayt_customerid||'1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2';z.customDictionaryIds=y.scayt_customDictionaryIds||'';z.userDictionaryName=y.scayt_userDictionaryName||'';z.sLang=y.scayt_sLang||'en_US';z.onLoad=function(){if(!(c&&b.version<8))this.addStyle(this.selectorCss(),'padding-bottom: 2px !important;');if(t.focusManager.hasFocus&&!q.isControlRestored(t))this.focus();};z.onBeforeChange=function(){if(q.getScayt(t)&&!t.checkDirty())setTimeout(function(){t.resetDirty();
|
||||
},0);};var A=window.scayt_custom_params;if(typeof A=='object')for(var B in A)z[B]=A[B];if(q.getControlId(t))z.id=q.getControlId(t);var C=new window.scayt(z);C.afterMarkupRemove.push(function(J){new h(J,C.document).mergeSiblings();});var D=q.instances[t.name];if(D){C.sLang=D.sLang;C.option(D.option());C.paused=D.paused;}q.instances[t.name]=C;var E='scaytButton',F=window.scayt.uiTags,G=[];for(var H=0,I=4;H<I;H++)G.push(F[H]&&q.uiTabs[H]);q.uiTabs=G;try{C.setDisabled(q.isPaused(t)===false);}catch(J){}t.fire('showScaytState');};t.on('contentDom',u);t.on('contentDomUnload',function(){var y=a.document.getElementsByTag('script'),z=/^dojoIoScript(\d+)$/i,A=/^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;for(var B=0;B<y.count();B++){var C=y.getItem(B),D=C.getId(),E=C.getAttribute('src');if(D&&E&&D.match(z)&&E.match(A))C.remove();}});t.on('beforeCommandExec',function(y){if((y.data.name=='source'||y.data.name=='newpage')&&t.mode=='wysiwyg'){var z=q.getScayt(t);if(z){q.setPaused(t,!z.disabled);q.setControlId(t,z.id);z.destroy(true);delete q.instances[t.name];}}else if(y.data.name=='source'&&t.mode=='source')q.markControlRestore(t);});t.on('afterCommandExec',function(y){if(!q.isScaytEnabled(t))return;if(t.mode=='wysiwyg'&&(y.data.name=='undo'||y.data.name=='redo'))window.setTimeout(function(){q.getScayt(t).refresh();},10);});t.on('destroy',function(y){var z=y.editor,A=q.getScayt(z);if(!A)return;delete q.instances[z.name];q.setControlId(z,A.id);A.destroy(true);});t.on('afterSetData',function(){if(q.isScaytEnabled(t))window.setTimeout(function(){var y=q.getScayt(t);y&&y.refresh();},10);});t.on('insertElement',function(){var y=q.getScayt(t);if(q.isScaytEnabled(t)){if(c)t.getSelection().unlock(true);window.setTimeout(function(){y.focus();y.refresh();},10);}},this,null,50);t.on('insertHtml',function(){var y=q.getScayt(t);if(q.isScaytEnabled(t)){if(c)t.getSelection().unlock(true);window.setTimeout(function(){y.focus();y.refresh();},10);}},this,null,50);t.on('scaytDialog',function(y){y.data.djConfig=window.djConfig;y.data.scayt_control=q.getScayt(t);y.data.tab=n;y.data.scayt=window.scayt;});var v=t.dataProcessor,w=v&&v.htmlFilter;if(w)w.addRules({elements:{span:function(y){if(y.attributes.scayt_word&&y.attributes.scaytid){delete y.name;return y;}}}});var x=j.undo.Image.prototype;x.equals=e.override(x.equals,function(y){return function(z){var E=this;var A=E.contents,B=z.contents,C=q.getScayt(E.editor);if(C&&q.isScaytReady(E.editor)){E.contents=C.reset(A)||'';
|
||||
z.contents=C.reset(B)||'';}var D=y.apply(E,arguments);E.contents=A;z.contents=B;return D;};});if(t.document)u();};j.scayt={engineLoaded:false,instances:{},controlInfo:{},setControlInfo:function(t,u){if(t&&t.name&&typeof this.controlInfo[t.name]!='object')this.controlInfo[t.name]={};for(var v in u)this.controlInfo[t.name][v]=u[v];},isControlRestored:function(t){if(t&&t.name&&this.controlInfo[t.name])return this.controlInfo[t.name].restored;return false;},markControlRestore:function(t){this.setControlInfo(t,{restored:true});},setControlId:function(t,u){this.setControlInfo(t,{id:u});},getControlId:function(t){if(t&&t.name&&this.controlInfo[t.name]&&this.controlInfo[t.name].id)return this.controlInfo[t.name].id;return null;},setPaused:function(t,u){this.setControlInfo(t,{paused:u});},isPaused:function(t){if(t&&t.name&&this.controlInfo[t.name])return this.controlInfo[t.name].paused;return undefined;},getScayt:function(t){return this.instances[t.name];},isScaytReady:function(t){return this.engineLoaded===true&&'undefined'!==typeof window.scayt&&this.getScayt(t);},isScaytEnabled:function(t){var u=this.getScayt(t);return u?u.disabled===false:false;},loadEngine:function(t){if(b.gecko&&b.version<10900||b.opera)return t.fire('showScaytState');if(this.engineLoaded===true)return p.apply(t);else if(this.engineLoaded==-1)return a.on('scaytReady',function(){p.apply(t);});a.on('scaytReady',p,t);a.on('scaytReady',function(){this.engineLoaded=true;},this,null,0);this.engineLoaded=-1;var u=document.location.protocol;u=u.search(/https?:/)!=-1?u:'http:';var v='svc.spellchecker.net/scayt25/loader__base.js',w=t.config.scayt_srcUrl||u+'//'+v,x=q.parseUrl(w).path+'/';if(window.scayt==undefined){a._djScaytConfig={baseUrl:x,addOnLoad:[function(){a.fireOnce('scaytReady');}],isDebug:false};a.document.getHead().append(a.document.createElement('script',{attributes:{type:'text/javascript',async:'true',src:w}}));}else a.fireOnce('scaytReady');return null;},parseUrl:function(t){var u;if(t.match&&(u=t.match(/(.*)[\/\\](.*?\.\w+)$/)))return{path:u[1],file:u[2]};else return t;}};var q=j.scayt,r=function(t,u,v,w,x,y,z){t.addCommand(w,x);t.addMenuItem(w,{label:v,command:w,group:y,order:z});},s={preserveState:true,editorFocus:false,canUndo:false,exec:function(t){if(q.isScaytReady(t)){var u=q.isScaytEnabled(t);this.setState(u?2:1);var v=q.getScayt(t);v.focus();v.setDisabled(u);}else if(!t.config.scayt_autoStartup&&q.engineLoaded>=0){this.setState(0);q.loadEngine(t);}}};j.add('scayt',{requires:['menubutton'],beforeInit:function(t){var u=t.config.scayt_contextMenuItemsOrder||'suggest|moresuggest|control',v='';
|
||||
u=u.split('|');if(u&&u.length)for(var w=0;w<u.length;w++)v+='scayt_'+u[w]+(u.length!=parseInt(w,10)+1?',':'');t.config.menu_groups=v+','+t.config.menu_groups;},init:function(t){var u={},v={},w=t.addCommand(m,s);a.dialog.add(m,a.getUrl(this.path+'dialogs/options.js'));var x=t.config.scayt_uiTabs||'1,1,1',y=[];x=x.split(',');for(var z=0,A=3;z<A;z++){var B=parseInt(x[z]||'1',10);y.push(B);}var C='scaytButton';t.addMenuGroup(C);var D={},E=t.lang.scayt;D.scaytToggle={label:E.enable,command:m,group:C};if(y[0]==1)D.scaytOptions={label:E.options,group:C,onClick:function(){n='options';t.openDialog(m);}};if(y[1]==1)D.scaytLangs={label:E.langs,group:C,onClick:function(){n='langs';t.openDialog(m);}};if(y[2]==1)D.scaytDict={label:E.dictionariesTab,group:C,onClick:function(){n='dictionaries';t.openDialog(m);}};D.scaytAbout={label:t.lang.scayt.about,group:C,onClick:function(){n='about';t.openDialog(m);}};y[3]=1;q.uiTabs=y;t.addMenuItems(D);t.ui.add('Scayt',5,{label:E.title,title:b.opera?E.opera_title:E.title,className:'cke_button_scayt',onRender:function(){w.on('state',function(){this.setState(w.state);},this);},onMenu:function(){var G=q.isScaytEnabled(t);t.getMenuItem('scaytToggle').label=E[G?'disable':'enable'];return{scaytToggle:2,scaytOptions:G&&q.uiTabs[0]?2:0,scaytLangs:G&&q.uiTabs[1]?2:0,scaytDict:G&&q.uiTabs[2]?2:0,scaytAbout:G&&q.uiTabs[3]?2:0};}});if(t.contextMenu&&t.addMenuItems)t.contextMenu.addListener(function(G,H){if(!q.isScaytEnabled(t)||H.getCommonAncestor().isReadOnly())return null;var I=q.getScayt(t),J=I.getScaytNode();if(!J)return null;var K=I.getWord(J);if(!K)return null;var L=I.getLang(),M={},N=window.scayt.getSuggestion(K,L);if(!N||!N.length)return null;for(z in u){delete t._.menuItems[z];delete t._.commands[z];}for(z in v){delete t._.menuItems[z];delete t._.commands[z];}u={};v={};var O=t.config.scayt_moreSuggestions||'on',P=false,Q=t.config.scayt_maxSuggestions;typeof Q!='number'&&(Q=5);!Q&&(Q=N.length);var R=t.config.scayt_contextCommands||'all';R=R.split('|');for(var S=0,T=N.length;S<T;S+=1){var U='scayt_suggestion_'+N[S].replace(' ','_'),V=(function(Z,aa){return{exec:function(){I.replace(Z,aa);}};})(J,N[S]);if(S<Q){r(t,'button_'+U,N[S],U,V,'scayt_suggest',S+1);M[U]=2;v[U]=2;}else if(O=='on'){r(t,'button_'+U,N[S],U,V,'scayt_moresuggest',S+1);u[U]=2;P=true;}}if(P){t.addMenuItem('scayt_moresuggest',{label:E.moreSuggestions,group:'scayt_moresuggest',order:10,getItems:function(){return u;}});v.scayt_moresuggest=2;}if(o('all',R)||o('ignore',R)){var W={exec:function(){I.ignore(J);
|
||||
}};r(t,'ignore',E.ignore,'scayt_ignore',W,'scayt_control',1);v.scayt_ignore=2;}if(o('all',R)||o('ignoreall',R)){var X={exec:function(){I.ignoreAll(J);}};r(t,'ignore_all',E.ignoreAll,'scayt_ignore_all',X,'scayt_control',2);v.scayt_ignore_all=2;}if(o('all',R)||o('add',R)){var Y={exec:function(){window.scayt.addWordToUserDictionary(J);}};r(t,'add_word',E.addWord,'scayt_add_word',Y,'scayt_control',3);v.scayt_add_word=2;}if(I.fireOnContextMenu)I.fireOnContextMenu(t);return v;});var F=function(){t.removeListener('showScaytState',F);if(!b.opera)w.setState(q.isScaytEnabled(t)?1:2);else w.setState(0);};t.on('showScaytState',F);if(b.opera)t.on('instanceReady',function(){F();});if(t.config.scayt_autoStartup)t.on('instanceReady',function(){q.loadEngine(t);});},afterInit:function(t){var u,v=function(w){if(w.hasAttribute('scaytid'))return false;};if(t._.elementsPath&&(u=t._.elementsPath.filters))u.push(v);t.addRemoveFormatFilter&&t.addRemoveFormatFilter(v);}});})();j.add('smiley',{requires:['dialog'],init:function(m){m.config.smiley_path=m.config.smiley_path||this.path+'images/';m.addCommand('smiley',new a.dialogCommand('smiley'));m.ui.addButton('Smiley',{label:m.lang.smiley.toolbar,command:'smiley'});a.dialog.add('smiley',this.path+'dialogs/smiley.js');}});i.smiley_images=['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'];i.smiley_descriptions=['smiley','sad','wink','laugh','frown','cheeky','blush','surprise','indecision','angry','angel','cool','devil','crying','enlightened','no','yes','heart','broken heart','kiss','mail'];(function(){var m='.%2 p,.%2 div,.%2 pre,.%2 address,.%2 blockquote,.%2 h1,.%2 h2,.%2 h3,.%2 h4,.%2 h5,.%2 h6{background-repeat: no-repeat;background-position: top %3;border: 1px dotted gray;padding-top: 8px;padding-%3: 8px;}.%2 p{%1p.png);}.%2 div{%1div.png);}.%2 pre{%1pre.png);}.%2 address{%1address.png);}.%2 blockquote{%1blockquote.png);}.%2 h1{%1h1.png);}.%2 h2{%1h2.png);}.%2 h3{%1h3.png);}.%2 h4{%1h4.png);}.%2 h5{%1h5.png);}.%2 h6{%1h6.png);}',n=/%1/g,o=/%2/g,p=/%3/g,q={preserveState:true,editorFocus:false,exec:function(r){this.toggleState();this.refresh(r);},refresh:function(r){var s=this.state==1?'addClass':'removeClass';
|
||||
r.document.getBody()[s]('cke_show_blocks');}};j.add('showblocks',{requires:['wysiwygarea'],init:function(r){var s=r.addCommand('showblocks',q);s.canUndo=false;if(r.config.startupOutlineBlocks)s.setState(1);r.addCss(m.replace(n,'background-image: url('+a.getUrl(this.path)+'images/block_').replace(o,'cke_show_blocks ').replace(p,r.lang.dir=='rtl'?'right':'left'));r.ui.addButton('ShowBlocks',{label:r.lang.showBlocks,command:'showblocks'});r.on('mode',function(){if(s.state!=0)s.refresh(r);});r.on('contentDom',function(){if(s.state!=0)s.refresh(r);});}});})();(function(){var m='cke_show_border',n,o=(b.ie6Compat?['.%1 table.%2,','.%1 table.%2 td, .%1 table.%2 th,','{','border : #d3d3d3 1px dotted','}']:['.%1 table.%2,','.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,','.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,','.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,','.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th','{','border : #d3d3d3 1px dotted','}']).join('');n=o.replace(/%2/g,m).replace(/%1/g,'cke_show_borders ');var p={preserveState:true,editorFocus:false,exec:function(q){this.toggleState();this.refresh(q);},refresh:function(q){var r=this.state==1?'addClass':'removeClass';q.document.getBody()[r]('cke_show_borders');}};j.add('showborders',{requires:['wysiwygarea'],modes:{wysiwyg:1},init:function(q){var r=q.addCommand('showborders',p);r.canUndo=false;if(q.config.startupShowBorders!==false)r.setState(1);q.addCss(n);q.on('mode',function(){if(r.state!=0)r.refresh(q);},null,null,100);q.on('contentDom',function(){if(r.state!=0)r.refresh(q);});q.on('removeFormatCleanup',function(s){var t=s.data;if(q.getCommand('showborders').state==1&&t.is('table')&&(!t.hasAttribute('border')||parseInt(t.getAttribute('border'),10)<=0))t.addClass(m);});},afterInit:function(q){var r=q.dataProcessor,s=r&&r.dataFilter,t=r&&r.htmlFilter;if(s)s.addRules({elements:{table:function(u){var v=u.attributes,w=v['class'],x=parseInt(v.border,10);if(!x||x<=0)v['class']=(w||'')+' '+m;}}});if(t)t.addRules({elements:{table:function(u){var v=u.attributes,w=v['class'];w&&(v['class']=w.replace(m,'').replace(/\s{2}/,' ').replace(/^\s+|\s+$/,''));}}});}});a.on('dialogDefinition',function(q){var r=q.data.name;if(r=='table'||r=='tableProperties'){var s=q.data.definition,t=s.getContents('info'),u=t.get('txtBorder'),v=u.commit;u.commit=e.override(v,function(y){return function(z,A){y.apply(this,arguments);var B=parseInt(this.getValue(),10);A[!B||B<=0?'addClass':'removeClass'](m);
|
||||
};});var w=s.getContents('advanced'),x=w&&w.get('advCSSClasses');if(x){x.setup=e.override(x.setup,function(y){return function(){y.apply(this,arguments);this.setValue(this.getValue().replace(/cke_show_border/,''));};});x.commit=e.override(x.commit,function(y){return function(z,A){y.apply(this,arguments);if(!parseInt(A.getAttribute('border'),10))A.addClass('cke_show_border');};});}}});})();j.add('sourcearea',{requires:['editingblock'],init:function(m){var n=j.sourcearea,o=a.document.getWindow();m.on('editingBlockReady',function(){var p,q;m.addMode('source',{load:function(r,s){if(c&&b.version<8)r.setStyle('position','relative');m.textarea=p=new h('textarea');p.setAttributes({dir:'ltr',tabIndex:b.webkit?-1:m.tabIndex,role:'textbox','aria-label':m.lang.editorTitle.replace('%1',m.name)});p.addClass('cke_source');p.addClass('cke_enable_context_menu');var t={width:b.ie7Compat?'99%':'100%',height:'100%',resize:'none',outline:'none','text-align':'left'};if(c){q=function(){p.hide();p.setStyle('height',r.$.clientHeight+'px');p.setStyle('width',r.$.clientWidth+'px');p.show();};m.on('resize',q);o.on('resize',q);setTimeout(q,0);}if(document.addEventListener)p.on('mousedown',function(v){v.data.stopPropagation();});r.setHtml('');r.append(p);p.setStyles(t);m.fire('ariaWidget',p);p.on('blur',function(){m.focusManager.blur();});p.on('focus',function(){m.focusManager.focus();});m.mayBeDirty=true;this.loadData(s);var u=m.keystrokeHandler;if(u)u.attach(p);setTimeout(function(){m.mode='source';m.fire('mode');},b.gecko||b.webkit?100:0);},loadData:function(r){p.setValue(r);m.fire('dataReady');},getData:function(){return p.getValue();},getSnapshotData:function(){return p.getValue();},unload:function(r){p.clearCustomData();m.textarea=p=null;if(q){m.removeListener('resize',q);o.removeListener('resize',q);}if(c&&b.version<8)r.removeStyle('position');},focus:function(){p.focus();}});});m.addCommand('source',n.commands.source);if(m.ui.addButton)m.ui.addButton('Source',{label:m.lang.source,command:'source'});m.on('mode',function(){m.getCommand('source').setState(m.mode=='source'?1:2);});}});j.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:false,exec:function(m){if(m.mode=='wysiwyg')m.fire('saveSnapshot');m.getCommand('source').setState(0);m.setMode(m.mode=='source'?'wysiwyg':'source');},canUndo:false}}};(function(){j.add('stylescombo',{requires:['richcombo','styles'],init:function(n){var o=n.config,p=n.lang.stylesCombo,q={},r=[];function s(t){n.getStylesSet(function(u){if(!r.length){var v,w;
|
||||
for(var x=0,y=u.length;x<y;x++){var z=u[x];w=z.name;v=q[w]=new a.style(z);v._name=w;v._.enterMode=o.enterMode;r.push(v);}r.sort(m);}t&&t();});};n.ui.addRichCombo('Styles',{label:p.label,title:p.panelTitle,className:'cke_styles',panel:{css:n.skin.editor.css.concat(o.contentsCss),multiSelect:true,attributes:{'aria-label':p.panelTitle}},init:function(){var t=this;s(function(){var u,v,w;for(var x=0,y=r.length;x<y;x++){u=r[x];v=u._name;var z=u.type;if(z!=w){t.startGroup(p['panelTitle'+String(z)]);w=z;}t.add(v,u.type==3?v:u.buildPreview(),v);}t.commit();t.onOpen();});},onClick:function(t){n.focus();n.fire('saveSnapshot');var u=q[t],v=n.getSelection(),w=new d.elementPath(v.getStartElement());if(u.type==2&&u.checkActive(w))u.remove(n.document);else if(u.type==3&&u.checkActive(w))u.remove(n.document);else u.apply(n.document);n.fire('saveSnapshot');},onRender:function(){n.on('selectionChange',function(t){var u=this.getValue(),v=t.data.path,w=v.elements;for(var x=0,y=w.length,z;x<y;x++){z=w[x];for(var A in q){if(q[A].checkElementRemovable(z,true)){if(A!=u)this.setValue(A);return;}}}this.setValue('');},this);},onOpen:function(){var A=this;if(c||b.webkit)n.focus();var t=n.getSelection(),u=t.getSelectedElement(),v=new d.elementPath(u||t.getStartElement()),w=[0,0,0,0];A.showAll();A.unmarkAll();for(var x in q){var y=q[x],z=y.type;if(y.checkActive(v))A.mark(x);else if(z==3&&!y.checkApplicable(v)){A.hideItem(x);w[z]--;}w[z]++;}if(!w[1])A.hideGroup(p['panelTitle'+String(1)]);if(!w[2])A.hideGroup(p['panelTitle'+String(2)]);if(!w[3])A.hideGroup(p['panelTitle'+String(3)]);}});n.on('instanceReady',function(){s();});}});function m(n,o){var p=n.type,q=o.type;return p==q?0:p==3?-1:q==3?1:q==1?1:-1;};})();j.add('table',{init:function(m){var n=j.table,o=m.lang.table;m.addCommand('table',new a.dialogCommand('table'));m.addCommand('tableProperties',new a.dialogCommand('tableProperties'));m.ui.addButton('Table',{label:o.toolbar,command:'table'});a.dialog.add('table',this.path+'dialogs/table.js');a.dialog.add('tableProperties',this.path+'dialogs/table.js');if(m.addMenuItems)m.addMenuItems({table:{label:o.menu,command:'tableProperties',group:'table',order:5},tabledelete:{label:o.deleteTable,command:'tableDelete',group:'table',order:1}});m.on('doubleclick',function(p){var q=p.data.element;if(q.is('table'))p.data.dialog='tableProperties';});if(m.contextMenu)m.contextMenu.addListener(function(p,q){if(!p||p.isReadOnly())return null;var r=p.hasAscendant('table',1);if(r)return{tabledelete:2,table:2};
|
||||
return null;});}});(function(){function m(G,H){if(c)G.removeAttribute(H);else delete G[H];};var n=/^(?:td|th)$/;function o(G){var H=G.createBookmarks(),I=G.getRanges(),J=[],K={};function L(T){if(J.length>0)return;if(T.type==1&&n.test(T.getName())&&!T.getCustomData('selected_cell')){h.setMarker(K,T,'selected_cell',true);J.push(T);}};for(var M=0;M<I.length;M++){var N=I[M];if(N.collapsed){var O=N.getCommonAncestor(),P=O.getAscendant('td',true)||O.getAscendant('th',true);if(P)J.push(P);}else{var Q=new d.walker(N),R;Q.guard=L;while(R=Q.next()){var S=R.getParent();if(S&&n.test(S.getName())&&!S.getCustomData('selected_cell')){h.setMarker(K,S,'selected_cell',true);J.push(S);}}}}h.clearAllMarkers(K);G.selectBookmarks(H);return J;};function p(G){var H=0,I=G.length-1,J={},K,L,M;while(K=G[H++])h.setMarker(J,K,'delete_cell',true);H=0;while(K=G[H++]){if((L=K.getPrevious())&&!L.getCustomData('delete_cell')||(L=K.getNext())&&!L.getCustomData('delete_cell')){h.clearAllMarkers(J);return L;}}h.clearAllMarkers(J);M=G[0].getParent();if(M=M.getPrevious())return M.getLast();M=G[I].getParent();if(M=M.getNext())return M.getChild(0);return null;};function q(G){var H=G.cells;for(var I=0;I<H.length;I++){H[I].innerHTML='';if(!c)new h(H[I]).appendBogus();}};function r(G,H){var I=G.getStartElement().getAscendant('tr');if(!I)return;var J=I.clone(1);H?J.insertBefore(I):J.insertAfter(I);q(J.$);};function s(G){if(G instanceof d.selection){var H=o(G),I=H.length,J=[],K,L,M;for(var N=0;N<I;N++){var O=H[N].getParent(),P=O.$.rowIndex;!N&&(L=P-1);J[P]=O;N==I-1&&(M=P+1);}var Q=O.getAscendant('table'),R=Q.$.rows,S=R.length;K=new h(M<S&&Q.$.rows[M]||L>0&&Q.$.rows[L]||Q.$.parentNode);for(N=J.length;N>=0;N--){if(J[N])s(J[N]);}return K;}else if(G instanceof h){Q=G.getAscendant('table');if(Q.$.rows.length==1)Q.remove();else G.remove();}return 0;};function t(G,H){var I=G.getStartElement(),J=I.getAscendant('td',1)||I.getAscendant('th',1);if(!J)return;var K=J.getAscendant('table'),L=J.$.cellIndex;for(var M=0;M<K.$.rows.length;M++){var N=K.$.rows[M];if(N.cells.length<L+1)continue;J=new h(N.cells[L]).clone(0);if(!c)J.appendBogus();var O=new h(N.cells[L]);if(H)J.insertBefore(O);else J.insertAfter(O);}};function u(G){var H=[],I=G[0]&&G[0].getAscendant('table'),J,K,L,M;for(J=0,K=G.length;J<K;J++)H.push(G[J].$.cellIndex);H.sort();for(J=1,K=H.length;J<K;J++){if(H[J]-H[J-1]>1){L=H[J-1]+1;break;}}if(!L)L=H[0]>0?H[0]-1:H[H.length-1]+1;var N=I.$.rows;for(J=0,K=N.length;J<K;J++){M=N[J].cells[L];if(M)break;}return M?new h(M):I.getPrevious();
|
||||
};function v(G){if(G instanceof d.selection){var H=o(G),I=u(H);for(var J=H.length-1;J>=0;J--){if(H[J])v(H[J]);}return I;}else if(G instanceof h){var K=G.getAscendant('table');if(!K)return null;var L=G.$.cellIndex;for(J=K.$.rows.length-1;J>=0;J--){var M=new h(K.$.rows[J]);if(!L&&M.$.cells.length==1){s(M);continue;}if(M.$.cells[L])M.$.removeChild(M.$.cells[L]);}}return null;};function w(G,H){var I=G.getStartElement(),J=I.getAscendant('td',1)||I.getAscendant('th',1);if(!J)return;var K=J.clone();if(!c)K.appendBogus();if(H)K.insertBefore(J);else K.insertAfter(J);};function x(G){if(G instanceof d.selection){var H=o(G),I=H[0]&&H[0].getAscendant('table'),J=p(H);for(var K=H.length-1;K>=0;K--)x(H[K]);if(J)z(J,true);else if(I)I.remove();}else if(G instanceof h){var L=G.getParent();if(L.getChildCount()==1)L.remove();else G.remove();}};function y(G){var H=G.getBogus();H&&H.remove();G.trim();};function z(G,H){var I=new d.range(G.getDocument());if(!I['moveToElementEdit'+(H?'End':'Start')](G)){I.selectNodeContents(G);I.collapse(H?false:true);}I.select(true);};function A(G,H,I){var J=G[H];if(typeof I=='undefined')return J;for(var K=0;J&&K<J.length;K++){if(I.is&&J[K]==I.$)return K;else if(K==I)return new h(J[K]);}return I.is?-1:null;};function B(G,H,I){var J=[];for(var K=0;K<G.length;K++){var L=G[K];if(typeof I=='undefined')J.push(L[H]);else if(I.is&&L[H]==I.$)return K;else if(K==I)return new h(L[H]);}return typeof I=='undefined'?J:I.is?-1:null;};function C(G,H,I){var J=o(G),K;if((H?J.length!=1:J.length<2)||(K=G.getCommonAncestor())&&K.type==1&&K.is('table'))return false;var L,M=J[0],N=M.getAscendant('table'),O=e.buildTableMap(N),P=O.length,Q=O[0].length,R=M.getParent().$.rowIndex,S=A(O,R,M);if(H){var T;try{T=O[H=='up'?R-1:H=='down'?R+1:R][H=='left'?S-1:H=='right'?S+1:S];}catch(al){return false;}if(!T||M.$==T)return false;J[H=='up'||H=='left'?'unshift':'push'](new h(T));}var U=M.getDocument(),V=R,W=0,X=0,Y=!I&&new d.documentFragment(U),Z=0;for(var aa=0;aa<J.length;aa++){L=J[aa];var ab=L.getParent(),ac=L.getFirst(),ad=L.$.colSpan,ae=L.$.rowSpan,af=ab.$.rowIndex,ag=A(O,af,L);Z+=ad*ae;X=Math.max(X,ag-S+ad);W=Math.max(W,af-R+ae);if(!I){if(y(L),L.getChildren().count()){if(af!=V&&ac&&!(ac.isBlockBoundary&&ac.isBlockBoundary({br:1}))){var ah=Y.getLast(d.walker.whitespaces(true));if(ah&&!(ah.is&&ah.is('br')))Y.append(new h('br'));}L.moveChildren(Y);}aa?L.remove():L.setHtml('');}V=af;}if(!I){Y.moveChildren(M);if(!c)M.appendBogus();if(X>=Q)M.removeAttribute('rowSpan');else M.$.rowSpan=W;
|
||||
if(W>=P)M.removeAttribute('colSpan');else M.$.colSpan=X;var ai=new d.nodeList(N.$.rows),aj=ai.count();for(aa=aj-1;aa>=0;aa--){var ak=ai.getItem(aa);if(!ak.$.cells.length){ak.remove();aj++;continue;}}return M;}else return W*X==Z;};function D(G,H){var I=o(G);if(I.length>1)return false;else if(H)return true;var J=I[0],K=J.getParent(),L=K.getAscendant('table'),M=e.buildTableMap(L),N=K.$.rowIndex,O=A(M,N,J),P=J.$.rowSpan,Q,R,S,T;if(P>1){R=Math.ceil(P/2);S=Math.floor(P/2);T=N+R;var U=new h(L.$.rows[T]),V=A(M,T),W;Q=J.clone();for(var X=0;X<V.length;X++){W=V[X];if(W.parentNode==U.$&&X>O){Q.insertBefore(new h(W));break;}else W=null;}if(!W)U.append(Q,true);}else{S=R=1;U=K.clone();U.insertAfter(K);U.append(Q=J.clone());var Y=A(M,N);for(var Z=0;Z<Y.length;Z++)Y[Z].rowSpan++;}if(!c)Q.appendBogus();J.$.rowSpan=R;Q.$.rowSpan=S;if(R==1)J.removeAttribute('rowSpan');if(S==1)Q.removeAttribute('rowSpan');return Q;};function E(G,H){var I=o(G);if(I.length>1)return false;else if(H)return true;var J=I[0],K=J.getParent(),L=K.getAscendant('table'),M=e.buildTableMap(L),N=K.$.rowIndex,O=A(M,N,J),P=J.$.colSpan,Q,R,S;if(P>1){R=Math.ceil(P/2);S=Math.floor(P/2);}else{S=R=1;var T=B(M,O);for(var U=0;U<T.length;U++)T[U].colSpan++;}Q=J.clone();Q.insertAfter(J);if(!c)Q.appendBogus();J.$.colSpan=R;Q.$.colSpan=S;if(R==1)J.removeAttribute('colSpan');if(S==1)Q.removeAttribute('colSpan');return Q;};var F={thead:1,tbody:1,tfoot:1,td:1,tr:1,th:1};j.tabletools={init:function(G){var H=G.lang.table;G.addCommand('cellProperties',new a.dialogCommand('cellProperties'));a.dialog.add('cellProperties',this.path+'dialogs/tableCell.js');G.addCommand('tableDelete',{exec:function(I){var J=I.getSelection(),K=J&&J.getStartElement(),L=K&&K.getAscendant('table',1);if(!L)return;J.selectElement(L);var M=J.getRanges()[0];M.collapse();J.selectRanges([M]);var N=L.getParent();if(N.getChildCount()==1&&!N.is('body','td','th'))N.remove();else L.remove();}});G.addCommand('rowDelete',{exec:function(I){var J=I.getSelection();z(s(J));}});G.addCommand('rowInsertBefore',{exec:function(I){var J=I.getSelection();r(J,true);}});G.addCommand('rowInsertAfter',{exec:function(I){var J=I.getSelection();r(J);}});G.addCommand('columnDelete',{exec:function(I){var J=I.getSelection(),K=v(J);K&&z(K,true);}});G.addCommand('columnInsertBefore',{exec:function(I){var J=I.getSelection();t(J,true);}});G.addCommand('columnInsertAfter',{exec:function(I){var J=I.getSelection();t(J);}});G.addCommand('cellDelete',{exec:function(I){var J=I.getSelection();x(J);
|
||||
}});G.addCommand('cellMerge',{exec:function(I){z(C(I.getSelection()),true);}});G.addCommand('cellMergeRight',{exec:function(I){z(C(I.getSelection(),'right'),true);}});G.addCommand('cellMergeDown',{exec:function(I){z(C(I.getSelection(),'down'),true);}});G.addCommand('cellVerticalSplit',{exec:function(I){z(D(I.getSelection()));}});G.addCommand('cellHorizontalSplit',{exec:function(I){z(E(I.getSelection()));}});G.addCommand('cellInsertBefore',{exec:function(I){var J=I.getSelection();w(J,true);}});G.addCommand('cellInsertAfter',{exec:function(I){var J=I.getSelection();w(J);}});if(G.addMenuItems)G.addMenuItems({tablecell:{label:H.cell.menu,group:'tablecell',order:1,getItems:function(){var I=G.getSelection(),J=o(I);return{tablecell_insertBefore:2,tablecell_insertAfter:2,tablecell_delete:2,tablecell_merge:C(I,null,true)?2:0,tablecell_merge_right:C(I,'right',true)?2:0,tablecell_merge_down:C(I,'down',true)?2:0,tablecell_split_vertical:D(I,true)?2:0,tablecell_split_horizontal:E(I,true)?2:0,tablecell_properties:J.length>0?2:0};}},tablecell_insertBefore:{label:H.cell.insertBefore,group:'tablecell',command:'cellInsertBefore',order:5},tablecell_insertAfter:{label:H.cell.insertAfter,group:'tablecell',command:'cellInsertAfter',order:10},tablecell_delete:{label:H.cell.deleteCell,group:'tablecell',command:'cellDelete',order:15},tablecell_merge:{label:H.cell.merge,group:'tablecell',command:'cellMerge',order:16},tablecell_merge_right:{label:H.cell.mergeRight,group:'tablecell',command:'cellMergeRight',order:17},tablecell_merge_down:{label:H.cell.mergeDown,group:'tablecell',command:'cellMergeDown',order:18},tablecell_split_horizontal:{label:H.cell.splitHorizontal,group:'tablecell',command:'cellHorizontalSplit',order:19},tablecell_split_vertical:{label:H.cell.splitVertical,group:'tablecell',command:'cellVerticalSplit',order:20},tablecell_properties:{label:H.cell.title,group:'tablecellproperties',command:'cellProperties',order:21},tablerow:{label:H.row.menu,group:'tablerow',order:1,getItems:function(){return{tablerow_insertBefore:2,tablerow_insertAfter:2,tablerow_delete:2};}},tablerow_insertBefore:{label:H.row.insertBefore,group:'tablerow',command:'rowInsertBefore',order:5},tablerow_insertAfter:{label:H.row.insertAfter,group:'tablerow',command:'rowInsertAfter',order:10},tablerow_delete:{label:H.row.deleteRow,group:'tablerow',command:'rowDelete',order:15},tablecolumn:{label:H.column.menu,group:'tablecolumn',order:1,getItems:function(){return{tablecolumn_insertBefore:2,tablecolumn_insertAfter:2,tablecolumn_delete:2};
|
||||
}},tablecolumn_insertBefore:{label:H.column.insertBefore,group:'tablecolumn',command:'columnInsertBefore',order:5},tablecolumn_insertAfter:{label:H.column.insertAfter,group:'tablecolumn',command:'columnInsertAfter',order:10},tablecolumn_delete:{label:H.column.deleteColumn,group:'tablecolumn',command:'columnDelete',order:15}});if(G.contextMenu)G.contextMenu.addListener(function(I,J){if(!I||I.isReadOnly())return null;while(I){if(I.getName() in F)return{tablecell:2,tablerow:2,tablecolumn:2};I=I.getParent();}return null;});},getSelectedCells:o};j.add('tabletools',j.tabletools);})();e.buildTableMap=function(m){var n=m.$.rows,o=-1,p=[];for(var q=0;q<n.length;q++){o++;!p[o]&&(p[o]=[]);var r=-1;for(var s=0;s<n[q].cells.length;s++){var t=n[q].cells[s];r++;while(p[o][r])r++;var u=isNaN(t.colSpan)?1:t.colSpan,v=isNaN(t.rowSpan)?1:t.rowSpan;for(var w=0;w<v;w++){if(!p[o+w])p[o+w]=[];for(var x=0;x<u;x++)p[o+w][r+x]=n[q].cells[s];}r+=u-1;}}return p;};j.add('specialchar',{init:function(m){var n='specialchar';a.dialog.add(n,this.path+'dialogs/specialchar.js');m.addCommand(n,new a.dialogCommand(n));m.ui.addButton('SpecialChar',{label:m.lang.specialChar.toolbar,command:n});}});(function(){var m={editorFocus:false,modes:{wysiwyg:1,source:1}},n={exec:function(q){q.container.focusNext(true,q.tabIndex);}},o={exec:function(q){q.container.focusPrevious(true,q.tabIndex);}};function p(q){return{editorFocus:false,canUndo:false,modes:{wysiwyg:1},exec:function(r){if(r.focusManager.hasFocus){var s=r.getSelection(),t=s.getCommonAncestor(),u;if(u=t.getAscendant('td',true)||t.getAscendant('th',true)){var v=new d.range(r.document),w=e.tryThese(function(){var D=u.getParent(),E=D.$.cells[u.$.cellIndex+(q?-1:1)];E.parentNode.parentNode;return E;},function(){var D=u.getParent(),E=D.getAscendant('table'),F=E.$.rows[D.$.rowIndex+(q?-1:1)];return F.cells[q?F.cells.length-1:0];});if(!(w||q)){var x=u.getAscendant('table').$,y=u.getParent().$.cells,z=new h(x.insertRow(-1),r.document);for(var A=0,B=y.length;A<B;A++){var C=z.append(new h(y[A],r.document).clone(false,false));!c&&C.appendBogus();}v.moveToElementEditStart(z);}else if(w){w=new h(w);v.moveToElementEditStart(w);if(!(v.checkStartOfBlock()&&v.checkEndOfBlock()))v.selectNodeContents(w);}else return true;v.select(true);return true;}}return false;}};};j.add('tab',{requires:['keystrokes'],init:function(q){var r=q.config.enableTabKeyTools!==false,s=q.config.tabSpaces||0,t='';while(s--)t+='\xa0';if(t)q.on('key',function(u){if(u.data.keyCode==9){q.insertHtml(t);
|
||||
u.cancel();}});if(r)q.on('key',function(u){if(u.data.keyCode==9&&q.execCommand('selectNextCell')||u.data.keyCode==2000+9&&q.execCommand('selectPreviousCell'))u.cancel();});if(b.webkit||b.gecko)q.on('key',function(u){var v=u.data.keyCode;if(v==9&&!t){u.cancel();q.execCommand('blur');}if(v==2000+9){q.execCommand('blurBack');u.cancel();}});q.addCommand('blur',e.extend(n,m));q.addCommand('blurBack',e.extend(o,m));q.addCommand('selectNextCell',p());q.addCommand('selectPreviousCell',p(true));}});})();h.prototype.focusNext=function(m,n){var w=this;var o=w.$,p=n===undefined?w.getTabIndex():n,q,r,s,t,u,v;if(p<=0){u=w.getNextSourceNode(m,1);while(u){if(u.isVisible()&&u.getTabIndex()===0){s=u;break;}u=u.getNextSourceNode(false,1);}}else{u=w.getDocument().getBody().getFirst();while(u=u.getNextSourceNode(false,1)){if(!q)if(!r&&u.equals(w)){r=true;if(m){if(!(u=u.getNextSourceNode(true,1)))break;q=1;}}else if(r&&!w.contains(u))q=1;if(!u.isVisible()||(v=u.getTabIndex())<0)continue;if(q&&v==p){s=u;break;}if(v>p&&(!s||!t||v<t)){s=u;t=v;}else if(!s&&v===0){s=u;t=v;}}}if(s)s.focus();};h.prototype.focusPrevious=function(m,n){var w=this;var o=w.$,p=n===undefined?w.getTabIndex():n,q,r,s,t=0,u,v=w.getDocument().getBody().getLast();while(v=v.getPreviousSourceNode(false,1)){if(!q)if(!r&&v.equals(w)){r=true;if(m){if(!(v=v.getPreviousSourceNode(true,1)))break;q=1;}}else if(r&&!w.contains(v))q=1;if(!v.isVisible()||(u=v.getTabIndex())<0)continue;if(p<=0){if(q&&u===0){s=v;break;}if(u>t){s=v;t=u;}}else{if(q&&u==p){s=v;break;}if(u<p&&(!s||u>t)){s=v;t=u;}}}if(s)s.focus();};(function(){j.add('templates',{requires:['dialog'],init:function(o){a.dialog.add('templates',a.getUrl(this.path+'dialogs/templates.js'));o.addCommand('templates',new a.dialogCommand('templates'));o.ui.addButton('Templates',{label:o.lang.templates.button,command:'templates'});}});var m={},n={};a.addTemplates=function(o,p){m[o]=p;};a.getTemplates=function(o){return m[o];};a.loadTemplates=function(o,p){var q=[];for(var r=0,s=o.length;r<s;r++){if(!n[o[r]]){q.push(o[r]);n[o[r]]=1;}}if(q.length)a.scriptLoader.load(q,p);else setTimeout(p,0);};})();i.templates_files=[a.getUrl('plugins/templates/templates/default.js')];i.templates_replaceContent=true;(function(){var m=function(){this.toolbars=[];this.focusCommandExecuted=false;};m.prototype.focus=function(){for(var o=0,p;p=this.toolbars[o++];)for(var q=0,r;r=p.items[q++];){if(r.focus){r.focus();return;}}};var n={toolbarFocus:{modes:{wysiwyg:1,source:1},exec:function(o){if(o.toolbox){o.toolbox.focusCommandExecuted=true;
|
||||
if(c)setTimeout(function(){o.toolbox.focus();},100);else o.toolbox.focus();}}}};j.add('toolbar',{init:function(o){var p=function(q,r){var s,t,u,v=o.lang.dir=='rtl';switch(r){case v?37:39:case 9:do{s=q.next;if(!s){t=q.toolbar.next;u=t&&t.items.length;while(u===0){t=t.next;u=t&&t.items.length;}if(t)s=t.items[0];}q=s;}while(q&&!q.focus)if(q)q.focus();else o.toolbox.focus();return false;case v?39:37:case 2000+9:do{s=q.previous;if(!s){t=q.toolbar.previous;u=t&&t.items.length;while(u===0){t=t.previous;u=t&&t.items.length;}if(t)s=t.items[u-1];}q=s;}while(q&&!q.focus)if(q)q.focus();else{var w=o.toolbox.toolbars[o.toolbox.toolbars.length-1].items;w[w.length-1].focus();}return false;case 27:o.focus();return false;case 13:case 32:q.execute();return false;}return true;};o.on('themeSpace',function(q){if(q.data.space==o.config.toolbarLocation){o.toolbox=new m();var r=e.getNextId(),s=['<div class="cke_toolbox" role="toolbar" aria-labelledby="',r,'"'],t=o.config.toolbarStartupExpanded!==false,u;s.push(t?'>':' style="display:none">');s.push('<span id="',r,'" class="cke_voice_label">',o.lang.toolbar,'</span>');var v=o.toolbox.toolbars,w=o.config.toolbar instanceof Array?o.config.toolbar:o.config['toolbar_'+o.config.toolbar];for(var x=0;x<w.length;x++){var y=w[x];if(!y)continue;var z=e.getNextId(),A={id:z,items:[]};if(u){s.push('</div>');u=0;}if(y==='/'){s.push('<div class="cke_break"></div>');continue;}s.push('<span id="',z,'" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>');var B=v.push(A)-1;if(B>0){A.previous=v[B-1];A.previous.next=A;}for(var C=0;C<y.length;C++){var D,E=y[C];if(E=='-')D=k.separator;else D=o.ui.create(E);if(D){if(D.canGroup){if(!u){s.push('<span class="cke_toolgroup" role="presentation">');u=1;}}else if(u){s.push('</span>');u=0;}var F=D.render(o,s);B=A.items.push(F)-1;if(B>0){F.previous=A.items[B-1];F.previous.next=F;}F.toolbar=A;F.onkey=p;F.onfocus=function(){if(!o.toolbox.focusCommandExecuted)o.focus();};}}if(u){s.push('</span>');u=0;}s.push('<span class="cke_toolbar_end"></span></span>');}s.push('</div>');if(o.config.toolbarCanCollapse){var G=e.addFunction(function(){o.execCommand('toolbarCollapse');});o.on('destroy',function(){e.removeFunction(G);});var H=e.getNextId();o.addCommand('toolbarCollapse',{exec:function(I){var J=a.document.getById(H),K=J.getPrevious(),L=I.getThemeSpace('contents'),M=K.getParent(),N=parseInt(L.$.style.height,10),O=M.$.offsetHeight,P=!K.isVisible();if(!P){K.hide();J.addClass('cke_toolbox_collapser_min');
|
||||
J.setAttribute('title',I.lang.toolbarExpand);}else{K.show();J.removeClass('cke_toolbox_collapser_min');J.setAttribute('title',I.lang.toolbarCollapse);}J.getFirst().setText(P?'▲':'◀');var Q=M.$.offsetHeight-O;L.setStyle('height',N-Q+'px');I.fire('resize');},modes:{wysiwyg:1,source:1}});s.push('<a title="'+(t?o.lang.toolbarCollapse:o.lang.toolbarExpand)+'" id="'+H+'" tabIndex="-1" class="cke_toolbox_collapser');if(!t)s.push(' cke_toolbox_collapser_min');s.push('" onclick="CKEDITOR.tools.callFunction('+G+')">','<span>▲</span>','</a>');}q.data.html+=s.join('');}});o.addCommand('toolbarFocus',n.toolbarFocus);}});})();k.separator={render:function(m,n){n.push('<span class="cke_separator" role="separator"></span>');return{};}};i.toolbarLocation='top';i.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];i.toolbar_Full=[['Source','-','Save','NewPage','Preview','-','Templates'],['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],'/',['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['BidiLtr','BidiRtl'],['Link','Unlink','Anchor'],['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],'/',['Styles','Format','Font','FontSize'],['TextColor','BGColor'],['Maximize','ShowBlocks','-','About']];i.toolbar='Full';i.toolbarCanCollapse=true;(function(){j.add('undo',{requires:['selection','wysiwygarea'],init:function(s){var t=new o(s),u=s.addCommand('undo',{exec:function(){if(t.undo()){s.selectionChange();this.fire('afterUndo');}},state:0,canUndo:false}),v=s.addCommand('redo',{exec:function(){if(t.redo()){s.selectionChange();this.fire('afterRedo');}},state:0,canUndo:false});t.onChange=function(){u.setState(t.undoable()?2:0);v.setState(t.redoable()?2:0);};function w(x){if(t.enabled&&x.data.command.canUndo!==false)t.save();};s.on('beforeCommandExec',w);s.on('afterCommandExec',w);s.on('saveSnapshot',function(){t.save();});s.on('contentDom',function(){s.document.on('keydown',function(x){if(!x.data.$.ctrlKey&&!x.data.$.metaKey)t.type(x);});});s.on('beforeModeUnload',function(){s.mode=='wysiwyg'&&t.save(true);});s.on('mode',function(){t.enabled=s.mode=='wysiwyg';
|
||||
t.onChange();});s.ui.addButton('Undo',{label:s.lang.undo,command:'undo'});s.ui.addButton('Redo',{label:s.lang.redo,command:'redo'});s.resetUndo=function(){t.reset();s.fire('saveSnapshot');};s.on('updateSnapshot',function(){if(t.currentImage&&new m(s).equals(t.currentImage))setTimeout(function(){t.update();},0);});}});j.undo={};var m=j.undo.Image=function(s){this.editor=s;var t=s.getSnapshot(),u=t&&s.getSelection();c&&t&&(t=t.replace(/\s+_cke_expando=".*?"/g,''));this.contents=t;this.bookmarks=u&&u.createBookmarks2(true);},n=/\b(?:href|src|name)="[^"]*?"/gi;m.prototype={equals:function(s,t){var u=this.contents,v=s.contents;if(c&&(b.ie7Compat||b.ie6Compat)){u=u.replace(n,'');v=v.replace(n,'');}if(u!=v)return false;if(t)return true;var w=this.bookmarks,x=s.bookmarks;if(w||x){if(!w||!x||w.length!=x.length)return false;for(var y=0;y<w.length;y++){var z=w[y],A=x[y];if(z.startOffset!=A.startOffset||z.endOffset!=A.endOffset||!e.arrayCompare(z.start,A.start)||!e.arrayCompare(z.end,A.end))return false;}}return true;}};function o(s){this.editor=s;this.reset();};var p={8:1,46:1},q={16:1,17:1,18:1},r={37:1,38:1,39:1,40:1};o.prototype={type:function(s){var t=s&&s.data.getKey(),u=t in q,v=t in p,w=this.lastKeystroke in p,x=v&&t==this.lastKeystroke,y=t in r,z=this.lastKeystroke in r,A=!v&&!y,B=v&&!x,C=!(u||this.typing)||A&&(w||z);if(C||B){var D=new m(this.editor);e.setTimeout(function(){var F=this;var E=F.editor.getSnapshot();if(c)E=E.replace(/\s+_cke_expando=".*?"/g,'');if(D.contents!=E){F.typing=true;if(!F.save(false,D,false))F.snapshots.splice(F.index+1,F.snapshots.length-F.index-1);F.hasUndo=true;F.hasRedo=false;F.typesCount=1;F.modifiersCount=1;F.onChange();}},0,this);}this.lastKeystroke=t;if(v){this.typesCount=0;this.modifiersCount++;if(this.modifiersCount>25){this.save(false,null,false);this.modifiersCount=1;}}else if(!y){this.modifiersCount=0;this.typesCount++;if(this.typesCount>25){this.save(false,null,false);this.typesCount=1;}}},reset:function(){var s=this;s.lastKeystroke=0;s.snapshots=[];s.index=-1;s.limit=s.editor.config.undoStackSize||20;s.currentImage=null;s.hasUndo=false;s.hasRedo=false;s.resetType();},resetType:function(){var s=this;s.typing=false;delete s.lastKeystroke;s.typesCount=0;s.modifiersCount=0;},fireChange:function(){var s=this;s.hasUndo=!!s.getNextImage(true);s.hasRedo=!!s.getNextImage(false);s.resetType();s.onChange();},save:function(s,t,u){var w=this;var v=w.snapshots;if(!t)t=new m(w.editor);if(t.contents===false)return false;if(w.currentImage&&t.equals(w.currentImage,s))return false;
|
||||
v.splice(w.index+1,v.length-w.index-1);if(v.length==w.limit)v.shift();w.index=v.push(t)-1;w.currentImage=t;if(u!==false)w.fireChange();return true;},restoreImage:function(s){var u=this;u.editor.loadSnapshot(s.contents);if(s.bookmarks)u.editor.getSelection().selectBookmarks(s.bookmarks);else if(c){var t=u.editor.document.getBody().$.createTextRange();t.collapse(true);t.select();}u.index=s.index;u.update();u.fireChange();},getNextImage:function(s){var x=this;var t=x.snapshots,u=x.currentImage,v,w;if(u)if(s)for(w=x.index-1;w>=0;w--){v=t[w];if(!u.equals(v,true)){v.index=w;return v;}}else for(w=x.index+1;w<t.length;w++){v=t[w];if(!u.equals(v,true)){v.index=w;return v;}}return null;},redoable:function(){return this.enabled&&this.hasRedo;},undoable:function(){return this.enabled&&this.hasUndo;},undo:function(){var t=this;if(t.undoable()){t.save(true);var s=t.getNextImage(true);if(s)return t.restoreImage(s),true;}return false;},redo:function(){var t=this;if(t.redoable()){t.save(true);if(t.redoable()){var s=t.getNextImage(false);if(s)return t.restoreImage(s),true;}}return false;},update:function(){var s=this;s.snapshots.splice(s.index,1,s.currentImage=new m(s.editor));}};})();(function(){var m={table:1,pre:1},n=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,o=d.walker.whitespaces(true);function p(B){if(B.getType()==3)return B.getSelectedElement().isReadOnly();else return B.getCommonAncestor().isReadOnly();};function q(B){if(this.mode=='wysiwyg'){this.focus();var C=this.getSelection();if(p(C))return;var D=B.data;this.fire('saveSnapshot');if(this.dataProcessor)D=this.dataProcessor.toHtml(D);if(c){var E=C.isLocked;if(E)C.unlock();var F=C.getNative();if(F.type=='Control')F.clear();else if(C.getType()==2){var G=C.getRanges()[0],H=G&&G.endContainer;if(H&&H.type==1&&H.getAttribute('contenteditable')=='false'&&G.checkBoundaryOfElement(H,2)){G.setEndAfter(G.endContainer);G.deleteContents();}}try{F.createRange().pasteHTML(D);}catch(J){}if(E)this.getSelection().lock();}else this.document.$.execCommand('inserthtml',false,D);if(b.webkit){this.document.$.execCommand('inserthtml',false,'<span id="cke_paste_marker" cke_temp="1"></span>');var I=this.document.getById('cke_paste_marker');I.scrollIntoView();I.remove();I=null;}e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};function r(B){if(this.mode=='wysiwyg'){this.focus();var C=this.getSelection();if(p(C))return;this.fire('saveSnapshot');var D=C.getRanges(),E=B.data,F=E.getName(),G=f.$block[F],H=C.isLocked;
|
||||
if(H)C.unlock();var I,J,K,L;for(var M=D.length-1;M>=0;M--){I=D[M];I.deleteContents();J=!M&&E||E.clone(1);var N,O;if(G)while((N=I.getCommonAncestor(0,1))&&(O=f[N.getName()])&&!(O&&O[F])){if(N.getName() in f.span)I.splitElement(N);else if(I.checkStartOfBlock()&&I.checkEndOfBlock()){I.setStartBefore(N);I.collapse(true);N.remove();}else I.splitBlock();}I.insertNode(J);if(!K)K=J;}I.moveToPosition(K,4);if(G){var P=K.getNext(o),Q=P&&P.type==1&&P.getName();if(Q&&f.$block[Q]&&f[Q]['#'])I.moveToElementEditStart(P);}C.selectRanges([I]);if(H)this.getSelection().lock();e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};function s(B){if(!B.checkDirty())setTimeout(function(){B.resetDirty();},0);};var t=d.walker.whitespaces(true),u=d.walker.bookmark(false,true);function v(B){return t(B)&&u(B);};function w(B){return B.type==3&&e.trim(B.getText()).match(/^(?: |\xa0)$/);};function x(B){if(B.isLocked){B.unlock();setTimeout(function(){B.lock();},0);}};function y(B){return B.getOuterHtml().match(n);};t=d.walker.whitespaces(true);function z(B){var C=B.window,D=B.document,E=B.document.getBody(),F=E.getChildren().count();if(!F||F==1&&E.getFirst().hasAttribute('_moz_editor_bogus_node')){s(B);var G=B.element.getDocument(),H=G.getDocumentElement(),I=H.$.scrollTop,J=H.$.scrollLeft,K=D.$.createEvent('KeyEvents');K.initKeyEvent('keypress',true,true,C.$,false,false,false,false,0,32);D.$.dispatchEvent(K);if(I!=H.$.scrollTop||J!=H.$.scrollLeft)G.getWindow().$.scrollTo(J,I);F&&E.getFirst().remove();D.getBody().appendBogus();var L=new d.range(D);L.setStartAt(E,1);L.select();}};function A(B){var C=B.editor,D=B.data.path,E=D.blockLimit,F=B.data.selection,G=F.getRanges()[0],H=C.document.getBody(),I=C.config.enterMode;b.gecko&&z(C);if(I!=2&&G.collapsed&&E.getName()=='body'&&!D.block){C.fire('updateSnapshot');s(C);c&&x(F);var J=G.fixBlock(true,C.config.enterMode==3?'div':'p');if(c){var K=J.getFirst(v);K&&w(K)&&K.remove();}if(y(J)){var L=J.getNext(t);if(L&&L.type==1&&!m[L.getName()]){G.moveToElementEditStart(L);J.remove();}else{L=J.getPrevious(t);if(L&&L.type==1&&!m[L.getName()]){G.moveToElementEditEnd(L);J.remove();}}}G.select();if(!c)C.selectionChange();}var M=new d.range(C.document),N=new d.walker(M);M.selectNodeContents(H);N.evaluator=function(P){return P.type==1&&P.getName() in m;};N.guard=function(P,Q){return!(P.type==3&&t(P)||Q);};if(N.previous()){C.fire('updateSnapshot');s(C);c&&x(F);var O;if(I!=2)O=H.append(new h(I==1?'p':'div'));else O=H;if(!c)O.appendBogus();}};j.add('wysiwygarea',{requires:['editingblock'],init:function(B){var C=B.config.enterMode!=2?B.config.enterMode==3?'div':'p':false,D=B.lang.editorTitle.replace('%1',B.name),E;
|
||||
B.on('editingBlockReady',function(){var K,L,M,N,O,P,Q=b.isCustomDomain(),R=function(U){if(L)L.remove();var V='document.open();'+(Q?'document.domain="'+document.domain+'";':'')+'document.close();';L=h.createFromHtml('<iframe style="width:100%;height:100%" frameBorder="0" title="'+D+'"'+' src="'+(c?'javascript:void(function(){'+encodeURIComponent(V)+'}())':'')+'"'+' tabIndex="'+(b.webkit?-1:B.tabIndex)+'"'+' allowTransparency="true"'+'></iframe>');if(document.location.protocol=='chrome:')a.event.useCapture=true;L.on('load',function(Z){O=1;Z.removeListener();var aa=L.getFrameDocument().$;aa.open('text/html','replace');aa.write(U);aa.close();});if(document.location.protocol=='chrome:')a.event.useCapture=false;var W=B.element,X=b.gecko&&!W.isVisible(),Y={};if(X){W.show();Y={position:W.getStyle('position'),top:W.getStyle('top')};W.setStyles({position:'absolute',top:'-3000px'});}K.append(L);if(X)setTimeout(function(){W.hide();W.setStyles(Y);},1000);};E=e.addFunction(T);var S='<script id="cke_actscrpt" type="text/javascript" cke_temp="1">'+(Q?'document.domain="'+document.domain+'";':'')+'window.parent.CKEDITOR.tools.callFunction( '+E+', window );'+'</script>';function T(U){if(!O)return;O=0;B.fire('ariaWidget',L);var V=U.document,W=V.body,X=V.getElementById('cke_actscrpt');X.parentNode.removeChild(X);W.spellcheck=!B.config.disableNativeSpellChecker;if(c){W.hideFocus=true;W.disabled=true;W.contentEditable=true;W.removeAttribute('disabled');}else setTimeout(function(){if(b.gecko&&b.version>=10900||b.opera)V.$.body.contentEditable=true;else if(b.webkit)V.$.body.parentNode.contentEditable=true;else V.$.designMode='on';},0);b.gecko&&e.setTimeout(z,0,null,B);U=B.window=new d.window(U);V=B.document=new g(V);V.on('dblclick',function(ac){var ad=ac.data.getTarget(),ae={element:ad,dialog:''};B.fire('doubleclick',ae);ae.dialog&&B.openDialog(ae.dialog);});if(!(c||b.opera))V.on('mousedown',function(ac){var ad=ac.data.getTarget();if(ad.is('img','hr','input','textarea','select'))B.getSelection().selectElement(ad);});if(b.gecko)V.on('mouseup',function(ac){if(ac.data.$.button==2){var ad=ac.data.getTarget();if(!ad.getOuterHtml().replace(n,'')){var ae=new d.range(V);ae.moveToElementEditStart(ad);ae.select(true);}}});V.on('click',function(ac){ac=ac.data;if(ac.getTarget().is('a')&&ac.$.button!=2)ac.preventDefault();});if(b.webkit){V.on('click',function(ac){if(ac.data.getTarget().is('input','select'))ac.data.preventDefault();});V.on('mouseup',function(ac){if(ac.data.getTarget().is('input','textarea'))ac.data.preventDefault();
|
||||
});}if(c&&V.$.compatMode=='CSS1Compat'||b.gecko||b.opera){var Y=V.getDocumentElement();Y.on('mousedown',function(ac){if(ac.data.getTarget().equals(Y)){if(b.gecko&&b.version>=10900)I();J.focus();}});}U.on('blur',function(){B.focusManager.blur();});var Z;U.on('focus',function(){var ac=B.document;if(b.gecko&&b.version>=10900)I();else if(b.opera)ac.getBody().focus();else if(b.webkit)if(!Z){B.document.getDocumentElement().focus();Z=1;}B.focusManager.focus();});var aa=B.keystrokeHandler;if(aa)aa.attach(V);if(c){V.getDocumentElement().addClass(V.$.compatMode);V.on('keydown',function(ac){var ad=ac.data.getKeystroke();if(ad in {8:1,46:1}){var ae=B.getSelection(),af=ae.getSelectedElement();if(af){B.fire('saveSnapshot');var ag=ae.getRanges()[0].createBookmark();af.remove();ae.selectBookmarks([ag]);B.fire('saveSnapshot');ac.data.preventDefault();}}});if(V.$.compatMode=='CSS1Compat'){var ab={33:1,34:1};V.on('keydown',function(ac){if(ac.data.getKeystroke() in ab)setTimeout(function(){B.getSelection().scrollIntoView();},0);});}}if(B.contextMenu)B.contextMenu.addTarget(V,B.config.browserContextMenuOnCtrl!==false);setTimeout(function(){B.fire('contentDom');if(P){B.mode='wysiwyg';B.fire('mode');P=false;}M=false;if(N){B.focus();N=false;}setTimeout(function(){B.fire('dataReady');},0);try{B.document.$.execCommand('enableObjectResizing',false,!B.config.disableObjectResizing);}catch(ac){}try{B.document.$.execCommand('enableInlineTableEditing',false,!B.config.disableNativeTableHandles);}catch(ad){}if(c)setTimeout(function(){if(B.document){var ae=B.document.$.body;ae.runtimeStyle.marginBottom='0px';ae.runtimeStyle.marginBottom='';}},1000);},0);};B.addMode('wysiwyg',{load:function(U,V,W){K=U;if(c&&b.quirks)U.setStyle('position','relative');B.mayBeDirty=true;P=true;if(W)this.loadSnapshotData(V);else this.loadData(V);},loadData:function(U){M=true;var V=B.config,W=V.fullPage,X=V.docType,Y='<style type="text/css" cke_temp="1">'+B._.styles.join('\n')+'</style>';!W&&(Y=e.buildStyleHtml(B.config.contentsCss)+Y);var Z=V.baseHref?'<base href="'+V.baseHref+'" cke_temp="1" />':'';if(W)U=U.replace(/<!DOCTYPE[^>]*>/i,function(aa){B.docType=X=aa;return '';});if(B.dataProcessor)U=B.dataProcessor.toHtml(U,C);if(W){if(!/<body[\s|>]/.test(U))U='<body>'+U;if(!/<html[\s|>]/.test(U))U='<html>'+U+'</html>';if(!/<head[\s|>]/.test(U))U=U.replace(/<html[^>]*>/,'$&<head><title></title></head>');else if(!/<title[\s|>]/.test(U))U=U.replace(/<head[^>]*>/,'$&<title></title>');Z&&(U=U.replace(/<head>/,'$&'+Z));U=U.replace(/<\/head\s*>/,Y+'$&');
|
||||
U=X+U;}else U=V.docType+'<html dir="'+V.contentsLangDirection+'"'+' lang="'+(V.contentsLanguage||B.langCode)+'">'+'<head>'+'<title>'+D+'</title>'+Z+Y+'</head>'+'<body'+(V.bodyId?' id="'+V.bodyId+'"':'')+(V.bodyClass?' class="'+V.bodyClass+'"':'')+'>'+U+'</html>';U+=S;this.onDispose();R(U);},getData:function(){var U=B.config,V=U.fullPage,W=V&&B.docType,X=L.getFrameDocument(),Y=V?X.getDocumentElement().getOuterHtml():X.getBody().getHtml();if(B.dataProcessor)Y=B.dataProcessor.toDataFormat(Y,C);if(U.ignoreEmptyParagraph)Y=Y.replace(n,function(Z,aa){return aa;});if(W)Y=W+'\n'+Y;return Y;},getSnapshotData:function(){return L.getFrameDocument().getBody().getHtml();},loadSnapshotData:function(U){L.getFrameDocument().getBody().setHtml(U);},onDispose:function(){if(!B.document)return;B.document.getDocumentElement().clearCustomData();B.document.getBody().clearCustomData();B.window.clearCustomData();B.document.clearCustomData();L.clearCustomData();L.remove();},unload:function(U){this.onDispose();B.window=B.document=L=K=N=null;B.fire('contentDomUnload');},focus:function(){if(M)N=true;else if(b.opera&&B.document){var U=B.window.$.frameElement;U.blur(),U.focus();B.document.getBody().focus();B.selectionChange();}else if(!b.opera&&B.window){B.window.focus();B.selectionChange();}}});B.on('insertHtml',q,null,null,20);B.on('insertElement',r,null,null,20);B.on('selectionChange',A,null,null,1);});var F;B.on('contentDom',function(){var K=B.document.getElementsByTag('title').getItem(0);K.setAttribute('_cke_title',B.document.$.title);B.document.$.title=D;});if(b.ie8Compat){B.addCss('html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}');var G=[];for(var H in f.$removeEmpty)G.push('html.CSS1Compat '+H+'[contenteditable=false]');B.addCss(G.join(',')+'{ display:inline-block;}');}else if(b.gecko)B.addCss('html { height: 100% !important; }');function I(K){e.tryThese(function(){B.document.$.designMode='on';setTimeout(function(){B.document.$.designMode='off';if(a.currentInstance==B)B.document.getBody().focus();},50);},function(){B.document.$.designMode='off';var L=B.document.getBody();L.setAttribute('contentEditable',false);L.setAttribute('contentEditable',true);!K&&I(1);});};if(b.gecko||c||b.opera){var J;B.on('uiReady',function(){J=B.container.append(h.createFromHtml('<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>'));J.on('focus',function(){B.focus();});});B.on('destroy',function(){e.removeFunction(E);J.clearCustomData();});}B.on('insertElement',function(K){var L=K.data;
|
||||
if(L.type==1&&(L.is('input')||L.is('textarea')))if(!L.isReadOnly()){L.setAttribute('contentEditable',false);L.setCustomData('_cke_notReadOnly',1);}});}});if(b.gecko)(function(){var B=document.body;if(!B)window.addEventListener('load',arguments.callee,false);else{var C=B.getAttribute('onpageshow');B.setAttribute('onpageshow',(C?C+';':'')+'event.persisted && (function(){'+'var allInstances = CKEDITOR.instances, editor, doc;'+'for ( var i in allInstances )'+'{'+'\teditor = allInstances[ i ];'+'\tdoc = editor.document;'+'\tif ( doc )'+'\t{'+'\t\tdoc.$.designMode = "off";'+'\t\tdoc.$.designMode = "on";'+'\t}'+'}'+'})();');}})();})();i.disableObjectResizing=false;i.disableNativeTableHandles=true;i.disableNativeSpellChecker=true;i.ignoreEmptyParagraph=true;j.add('wsc',{requires:['dialog'],init:function(m){var n='checkspell',o=m.addCommand(n,new a.dialogCommand(n));o.modes={wysiwyg:!b.opera&&document.domain==window.location.hostname};m.ui.addButton('SpellChecker',{label:m.lang.spellCheck.toolbar,command:n});a.dialog.add(n,this.path+'dialogs/wsc.js');}});i.wsc_customerId=i.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';i.wsc_customLoaderScript=i.wsc_customLoaderScript||null;a.DIALOG_RESIZE_NONE=0;a.DIALOG_RESIZE_WIDTH=1;a.DIALOG_RESIZE_HEIGHT=2;a.DIALOG_RESIZE_BOTH=3;(function(){var m=e.cssLength;function n(P){return!!this._.tabs[P][0].$.offsetHeight;};function o(){var T=this;var P=T._.currentTabId,Q=T._.tabIdList.length,R=e.indexOf(T._.tabIdList,P)+Q;for(var S=R-1;S>R-Q;S--){if(n.call(T,T._.tabIdList[S%Q]))return T._.tabIdList[S%Q];}return null;};function p(){var T=this;var P=T._.currentTabId,Q=T._.tabIdList.length,R=e.indexOf(T._.tabIdList,P);for(var S=R+1;S<R+Q;S++){if(n.call(T,T._.tabIdList[S%Q]))return T._.tabIdList[S%Q];}return null;};function q(P,Q){var R=P.$.getElementsByTagName('input');for(var S=0,T=R.length;S<T;S++){var U=new h(R[S]);if(U.getAttribute('type').toLowerCase()=='text')if(Q){U.setAttribute('value',U.getCustomData('fake_value')||'');U.removeCustomData('fake_value');}else{U.setCustomData('fake_value',U.getAttribute('value'));U.setAttribute('value','');}}};a.dialog=function(P,Q){var R=a.dialog._.dialogDefinitions[Q];R=e.extend(R(P),s);R=e.clone(R);R=new w(this,R);var S=a.document,T=P.theme.buildDialog(P);this._={editor:P,element:T.element,name:Q,contentSize:{width:0,height:0},size:{width:0,height:0},updateSize:false,contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:false,focusList:[],currentFocusIndex:0,hasFocus:false};
|
||||
this.parts=T.parts;e.setTimeout(function(){P.fire('ariaWidget',this.parts.contents);},0,this);this.parts.dialog.setStyles({position:b.ie6Compat?'absolute':'fixed',top:0,left:0,visibility:'hidden'});a.event.call(this);this.definition=R=a.fire('dialogDefinition',{name:Q,definition:R},P).definition;if(R.onLoad)this.on('load',R.onLoad);if(R.onShow)this.on('show',R.onShow);if(R.onHide)this.on('hide',R.onHide);if(R.onOk)this.on('ok',function(ag){P.fire('saveSnapshot');setTimeout(function(){P.fire('saveSnapshot');},0);if(R.onOk.call(this,ag)===false)ag.data.hide=false;});if(R.onCancel)this.on('cancel',function(ag){if(R.onCancel.call(this,ag)===false)ag.data.hide=false;});var U=this,V=function(ag){var ah=U._.contents,ai=false;for(var aj in ah)for(var ak in ah[aj]){ai=ag.call(this,ah[aj][ak]);if(ai)return;}};this.on('ok',function(ag){V(function(ah){if(ah.validate){var ai=ah.validate(this);if(typeof ai=='string'){alert(ai);ai=false;}if(ai===false){if(ah.select)ah.select();else ah.focus();ag.data.hide=false;ag.stop();return true;}}});},this,null,0);this.on('cancel',function(ag){V(function(ah){if(ah.isChanged()){if(!confirm(P.lang.common.confirmCancel))ag.data.hide=false;return true;}});},this,null,0);this.parts.close.on('click',function(ag){if(this.fire('cancel',{hide:true}).hide!==false)this.hide();ag.data.preventDefault();},this);function W(){var ag=U._.focusList;ag.sort(function(aj,ak){if(aj.tabIndex!=ak.tabIndex)return ak.tabIndex-aj.tabIndex;else return aj.focusIndex-ak.focusIndex;});var ah=ag.length;for(var ai=0;ai<ah;ai++)ag[ai].focusIndex=ai;};function X(ag){var ah=U._.focusList,ai=ag?1:-1;if(ah.length<1)return;var aj=U._.currentFocusIndex;try{ah[aj].getInputElement().$.blur();}catch(am){}var ak=(aj+ai+ah.length)%ah.length,al=ak;while(!ah[al].isFocusable()){al=(al+ai+ah.length)%ah.length;if(al==ak)break;}ah[al].focus();if(ah[al].type=='text')ah[al].select();};this.changeFocus=X;var Y;function Z(ag){var al=this;if(U!=a.dialog._.currentTop)return;var ah=ag.data.getKeystroke(),ai=P.lang.dir=='rtl';Y=0;if(ah==9||ah==2000+9){var aj=ah==2000+9;if(U._.tabBarMode){var ak=aj?o.call(U):p.call(U);U.selectPage(ak);U._.tabs[ak][0].focus();}else X(!aj);Y=1;}else if(ah==4000+121&&!U._.tabBarMode&&U.getPageCount()>1){U._.tabBarMode=true;U._.tabs[U._.currentTabId][0].focus();Y=1;}else if((ah==37||ah==39)&&U._.tabBarMode){ak=ah==(ai?39:37)?o.call(U):p.call(U);U.selectPage(ak);U._.tabs[ak][0].focus();Y=1;}else if((ah==13||ah==32)&&U._.tabBarMode){al.selectPage(al._.currentTabId);
|
||||
al._.tabBarMode=false;al._.currentFocusIndex=-1;X(true);Y=1;}if(Y){ag.stop();ag.data.preventDefault();}};function aa(ag){Y&&ag.data.preventDefault();};var ab=this._.element;this.on('show',function(){ab.on('keydown',Z,this,null,0);if(b.opera||b.gecko&&b.mac)ab.on('keypress',aa,this);});this.on('hide',function(){ab.removeListener('keydown',Z);if(b.opera||b.gecko&&b.mac)ab.removeListener('keypress',aa);});this.on('iframeAdded',function(ag){var ah=new g(ag.data.iframe.$.contentWindow.document);ah.on('keydown',Z,this,null,0);});this.on('show',function(){var ak=this;W();if(P.config.dialog_startupFocusTab&&U._.pageCount>1){U._.tabBarMode=true;U._.tabs[U._.currentTabId][0].focus();}else if(!ak._.hasFocus){ak._.currentFocusIndex=-1;if(R.onFocus){var ag=R.onFocus.call(ak);ag&&ag.focus();}else X(true);if(ak._.editor.mode=='wysiwyg'&&c){var ah=P.document.$.selection,ai=ah.createRange();if(ai)if(ai.parentElement&&ai.parentElement().ownerDocument==P.document.$||ai.item&&ai.item(0).ownerDocument==P.document.$){var aj=document.body.createTextRange();aj.moveToElementText(ak.getElement().getFirst().$);aj.collapse(true);aj.select();}}}},this,null,4294967295);if(b.ie6Compat)this.on('load',function(ag){var ah=this.getElement(),ai=ah.getFirst();ai.remove();ai.appendTo(ah);},this);y(this);z(this);new d.text(R.title,a.document).appendTo(this.parts.title);for(var ac=0;ac<R.contents.length;ac++){var ad=R.contents[ac];ad&&this.addPage(ad);}this.parts.tabs.on('click',function(ag){var aj=this;var ah=ag.data.getTarget();if(ah.hasClass('cke_dialog_tab')){var ai=ah.$.id;aj.selectPage(ai.substring(4,ai.lastIndexOf('_')));if(aj._.tabBarMode){aj._.tabBarMode=false;aj._.currentFocusIndex=-1;X(true);}ag.data.preventDefault();}},this);var ae=[],af=a.dialog._.uiElementBuilders.hbox.build(this,{type:'hbox',className:'cke_dialog_footer_buttons',widths:[],children:R.buttons},ae).getChild();this.parts.footer.setHtml(ae.join(''));for(ac=0;ac<af.length;ac++)this._.buttons[af[ac].id]=af[ac];};function r(P,Q,R){this.element=Q;this.focusIndex=R;this.tabIndex=0;this.isFocusable=function(){return!Q.getAttribute('disabled')&&Q.isVisible();};this.focus=function(){P._.currentFocusIndex=this.focusIndex;this.element.focus();};Q.on('keydown',function(S){if(S.data.getKeystroke() in {32:1,13:1})this.fire('click');});Q.on('focus',function(){this.fire('mouseover');});Q.on('blur',function(){this.fire('mouseout');});};a.dialog.prototype={destroy:function(){this.hide();this._.element.remove();},resize:(function(){return function(P,Q){var R=this;
|
||||
if(R._.contentSize&&R._.contentSize.width==P&&R._.contentSize.height==Q)return;a.dialog.fire('resize',{dialog:R,skin:R._.editor.skinName,width:P,height:Q},R._.editor);R._.contentSize={width:P,height:Q};R._.updateSize=true;};})(),getSize:function(){var R=this;if(!R._.updateSize)return R._.size;var P=R._.element.getFirst(),Q=R._.size={width:P.$.offsetWidth||0,height:P.$.offsetHeight||0};R._.updateSize=!Q.width||!Q.height;return Q;},move:(function(){var P;return function(Q,R){var U=this;var S=U._.element.getFirst();if(P===undefined)P=S.getComputedStyle('position')=='fixed';if(P&&U._.position&&U._.position.x==Q&&U._.position.y==R)return;U._.position={x:Q,y:R};if(!P){var T=a.document.getWindow().getScrollPosition();Q+=T.x;R+=T.y;}S.setStyles({left:(Q>0?Q:0)+'px',top:(R>0?R:0)+'px'});};})(),getPosition:function(){return e.extend({},this._.position);},show:function(){var P=this._.editor;if(P.mode=='wysiwyg'&&c){var Q=P.getSelection();Q&&Q.lock();}var R=this._.element,S=this.definition;if(!(R.getParent()&&R.getParent().equals(a.document.getBody())))R.appendTo(a.document.getBody());else R.setStyle('display','block');if(b.gecko&&b.version<10900){var T=this.parts.dialog;T.setStyle('position','absolute');setTimeout(function(){T.setStyle('position','fixed');},0);}this.resize(S.minWidth,S.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);if(a.dialog._.currentZIndex===null)a.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;this._.element.getFirst().setStyle('z-index',a.dialog._.currentZIndex+=10);if(a.dialog._.currentTop===null){a.dialog._.currentTop=this;this._.parentDialog=null;D(this._.editor);R.on('keydown',H);R.on(b.opera?'keypress':'keyup',I);for(var U in {keyup:1,keydown:1,keypress:1})R.on(U,O);}else{this._.parentDialog=a.dialog._.currentTop;var V=this._.parentDialog.getElement().getFirst();V.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);a.dialog._.currentTop=this;}J(this,this,'\x1b',null,function(){this.getButton('cancel')&&this.getButton('cancel').click();});this._.hasFocus=false;e.setTimeout(function(){var W=a.document.getWindow().getViewPaneSize(),X=this.getSize();this.move((W.width-S.minWidth)/2,(W.height-X.height)/2);this.parts.dialog.setStyle('visibility','');this.fireOnce('load',{});this.fire('show',{});this._.editor.fire('dialogShow',this);this.foreach(function(Y){Y.setInitValue&&Y.setInitValue();});},100,this);},foreach:function(P){var S=this;for(var Q in S._.contents)for(var R in S._.contents[Q])P(S._.contents[Q][R]);
|
||||
return S;},reset:(function(){var P=function(Q){if(Q.reset)Q.reset(1);};return function(){this.foreach(P);return this;};})(),setupContent:function(){var P=arguments;this.foreach(function(Q){if(Q.setup)Q.setup.apply(Q,P);});},commitContent:function(){var P=arguments;this.foreach(function(Q){if(Q.commit)Q.commit.apply(Q,P);});},hide:function(){if(!this.parts.dialog.isVisible())return;this.fire('hide',{});this._.editor.fire('dialogHide',this);var P=this._.element;P.setStyle('display','none');this.parts.dialog.setStyle('visibility','hidden');K(this);while(a.dialog._.currentTop!=this)a.dialog._.currentTop.hide();if(!this._.parentDialog)E();else{var Q=this._.parentDialog.getElement().getFirst();Q.setStyle('z-index',parseInt(Q.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));}a.dialog._.currentTop=this._.parentDialog;if(!this._.parentDialog){a.dialog._.currentZIndex=null;P.removeListener('keydown',H);P.removeListener(b.opera?'keypress':'keyup',I);for(var R in {keyup:1,keydown:1,keypress:1})P.removeListener(R,O);var S=this._.editor;S.focus();if(S.mode=='wysiwyg'&&c){var T=S.getSelection();T&&T.unlock(true);}}else a.dialog._.currentZIndex-=10;delete this._.parentDialog;this.foreach(function(U){U.resetInitValue&&U.resetInitValue();});},addPage:function(P){var ab=this;var Q=[],R=P.label?' title="'+e.htmlEncode(P.label)+'"':'',S=P.elements,T=a.dialog._.uiElementBuilders.vbox.build(ab,{type:'vbox',className:'cke_dialog_page_contents',children:P.elements,expand:!!P.expand,padding:P.padding,style:P.style||'width: 100%; height: 100%;'},Q),U=h.createFromHtml(Q.join(''));U.setAttribute('role','tabpanel');var V=b,W='cke_'+P.id+'_'+e.getNextNumber(),X=h.createFromHtml(['<a class="cke_dialog_tab"',ab._.pageCount>0?' cke_last':'cke_first',R,!!P.hidden?' style="display:none"':'',' id="',W,'"',V.gecko&&V.version>=10900&&!V.hc?'':' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',P.label,'</a>'].join(''));U.setAttribute('aria-labelledby',W);ab._.tabs[P.id]=[X,U];ab._.tabIdList.push(P.id);!P.hidden&&ab._.pageCount++;ab._.lastTab=X;ab.updateStyle();var Y=ab._.contents[P.id]={},Z,aa=T.getChild();while(Z=aa.shift()){Y[Z.id]=Z;if(typeof Z.getChild=='function')aa.push.apply(aa,Z.getChild());}U.setAttribute('name',P.id);U.appendTo(ab.parts.contents);X.unselectable();ab.parts.tabs.append(X);if(P.accessKey){J(ab,ab,'CTRL+'+P.accessKey,M,L);ab._.accessKeyMap['CTRL+'+P.accessKey]=P.id;}},selectPage:function(P){if(this._.currentTabId==P)return;
|
||||
if(this.fire('selectPage',{page:P,currentPage:this._.currentTabId})===true)return;for(var Q in this._.tabs){var R=this._.tabs[Q][0],S=this._.tabs[Q][1];if(Q!=P){R.removeClass('cke_dialog_tab_selected');S.hide();}S.setAttribute('aria-hidden',Q!=P);}var T=this._.tabs[P];T[0].addClass('cke_dialog_tab_selected');if(b.ie6Compat||b.ie7Compat){q(T[1]);T[1].show();setTimeout(function(){q(T[1],1);},0);}else T[1].show();this._.currentTabId=P;this._.currentTabIndex=e.indexOf(this._.tabIdList,P);},updateStyle:function(){this.parts.dialog[(this._.pageCount===1?'add':'remove')+'Class']('cke_single_page');},hidePage:function(P){var R=this;var Q=R._.tabs[P]&&R._.tabs[P][0];if(!Q||R._.pageCount==1)return;else if(P==R._.currentTabId)R.selectPage(o.call(R));Q.hide();R._.pageCount--;R.updateStyle();},showPage:function(P){var R=this;var Q=R._.tabs[P]&&R._.tabs[P][0];if(!Q)return;Q.show();R._.pageCount++;R.updateStyle();},getElement:function(){return this._.element;},getName:function(){return this._.name;},getContentElement:function(P,Q){var R=this._.contents[P];return R&&R[Q];},getValueOf:function(P,Q){return this.getContentElement(P,Q).getValue();},setValueOf:function(P,Q,R){return this.getContentElement(P,Q).setValue(R);},getButton:function(P){return this._.buttons[P];},click:function(P){return this._.buttons[P].click();},disableButton:function(P){return this._.buttons[P].disable();},enableButton:function(P){return this._.buttons[P].enable();},getPageCount:function(){return this._.pageCount;},getParentEditor:function(){return this._.editor;},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement();},addFocusable:function(P,Q){var S=this;if(typeof Q=='undefined'){Q=S._.focusList.length;S._.focusList.push(new r(S,P,Q));}else{S._.focusList.splice(Q,0,new r(S,P,Q));for(var R=Q+1;R<S._.focusList.length;R++)S._.focusList[R].focusIndex++;}}};e.extend(a.dialog,{add:function(P,Q){if(!this._.dialogDefinitions[P]||typeof Q=='function')this._.dialogDefinitions[P]=Q;},exists:function(P){return!!this._.dialogDefinitions[P];},getCurrent:function(){return a.dialog._.currentTop;},okButton:(function(){var P=function(Q,R){R=R||{};return e.extend({id:'ok',type:'button',label:Q.lang.common.ok,'class':'cke_dialog_ui_button_ok',onClick:function(S){var T=S.data.dialog;if(T.fire('ok',{hide:true}).hide!==false)T.hide();}},R,true);};P.type='button';P.override=function(Q){return e.extend(function(R){return P(R,Q);},{type:'button'},true);};return P;})(),cancelButton:(function(){var P=function(Q,R){R=R||{};
|
||||
return e.extend({id:'cancel',type:'button',label:Q.lang.common.cancel,'class':'cke_dialog_ui_button_cancel',onClick:function(S){var T=S.data.dialog;if(T.fire('cancel',{hide:true}).hide!==false)T.hide();}},R,true);};P.type='button';P.override=function(Q){return e.extend(function(R){return P(R,Q);},{type:'button'},true);};return P;})(),addUIElement:function(P,Q){this._.uiElementBuilders[P]=Q;}});a.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};a.event.implementOn(a.dialog);a.event.implementOn(a.dialog.prototype,true);var s={resizable:3,minWidth:600,minHeight:400,buttons:[a.dialog.okButton,a.dialog.cancelButton]};b.mac&&s.buttons.reverse();var t=function(P,Q,R){for(var S=0,T;T=P[S];S++){if(T.id==Q)return T;if(R&&T[R]){var U=t(T[R],Q,R);if(U)return U;}}return null;},u=function(P,Q,R,S,T){if(R){for(var U=0,V;V=P[U];U++){if(V.id==R){P.splice(U,0,Q);return Q;}if(S&&V[S]){var W=u(V[S],Q,R,S,true);if(W)return W;}}if(T)return null;}P.push(Q);return Q;},v=function(P,Q,R){for(var S=0,T;T=P[S];S++){if(T.id==Q)return P.splice(S,1);if(R&&T[R]){var U=v(T[R],Q,R);if(U)return U;}}return null;},w=function(P,Q){this.dialog=P;var R=Q.contents;for(var S=0,T;T=R[S];S++)R[S]=T&&new x(P,T);e.extend(this,Q);};w.prototype={getContents:function(P){return t(this.contents,P);},getButton:function(P){return t(this.buttons,P);},addContents:function(P,Q){return u(this.contents,P,Q);},addButton:function(P,Q){return u(this.buttons,P,Q);},removeContents:function(P){v(this.contents,P);},removeButton:function(P){v(this.buttons,P);}};function x(P,Q){this._={dialog:P};e.extend(this,Q);};x.prototype={get:function(P){return t(this.elements,P,'children');},add:function(P,Q){return u(this.elements,P,Q,'children');},remove:function(P){v(this.elements,P,'children');}};function y(P){var Q=null,R=null,S=P.getElement().getFirst(),T=P.getParentEditor(),U=T.config.dialog_magnetDistance,V=T.skin.margins||[0,0,0,0];if(typeof U=='undefined')U=20;function W(Y){var Z=P.getSize(),aa=a.document.getWindow().getViewPaneSize(),ab=Y.data.$.screenX,ac=Y.data.$.screenY,ad=ab-Q.x,ae=ac-Q.y,af,ag;Q={x:ab,y:ac};R.x+=ad;R.y+=ae;if(R.x+V[3]<U)af=-V[3];else if(R.x-V[1]>aa.width-Z.width-U)af=aa.width-Z.width+V[1];else af=R.x;if(R.y+V[0]<U)ag=-V[0];else if(R.y-V[2]>aa.height-Z.height-U)ag=aa.height-Z.height+V[2];else ag=R.y;P.move(af,ag);Y.data.preventDefault();};function X(Y){a.document.removeListener('mousemove',W);a.document.removeListener('mouseup',X);if(b.ie6Compat){var Z=C.getChild(0).getFrameDocument();
|
||||
Z.removeListener('mousemove',W);Z.removeListener('mouseup',X);}};P.parts.title.on('mousedown',function(Y){P._.updateSize=true;Q={x:Y.data.$.screenX,y:Y.data.$.screenY};a.document.on('mousemove',W);a.document.on('mouseup',X);R=P.getPosition();if(b.ie6Compat){var Z=C.getChild(0).getFrameDocument();Z.on('mousemove',W);Z.on('mouseup',X);}Y.data.preventDefault();},P);};function z(P){var Q=P.definition,R=Q.minWidth||0,S=Q.minHeight||0,T=Q.resizable,U=P.getParentEditor().skin.margins||[0,0,0,0];function V(ag,ah){ag.y+=ah;};function W(ag,ah){ag.x2+=ah;};function X(ag,ah){ag.y2+=ah;};function Y(ag,ah){ag.x+=ah;};var Z=null,aa=null,ab=P._.editor.config.magnetDistance,ac=['tl','t','tr','l','r','bl','b','br'];function ad(ag){var ah=ag.listenerData.part,ai=P.getSize();aa=P.getPosition();e.extend(aa,{x2:aa.x+ai.width,y2:aa.y+ai.height});Z={x:ag.data.$.screenX,y:ag.data.$.screenY};a.document.on('mousemove',ae,P,{part:ah});a.document.on('mouseup',af,P,{part:ah});if(b.ie6Compat){var aj=C.getChild(0).getFrameDocument();aj.on('mousemove',ae,P,{part:ah});aj.on('mouseup',af,P,{part:ah});}ag.data.preventDefault();};function ae(ag){var ah=ag.data.$.screenX,ai=ag.data.$.screenY,aj=ah-Z.x,ak=ai-Z.y,al=a.document.getWindow().getViewPaneSize(),am=ag.listenerData.part;if(am.search('t')!=-1)V(aa,ak);if(am.search('l')!=-1)Y(aa,aj);if(am.search('b')!=-1)X(aa,ak);if(am.search('r')!=-1)W(aa,aj);Z={x:ah,y:ai};var an,ao,ap,aq;if(aa.x+U[3]<ab)an=-U[3];else if(am.search('l')!=-1&&aa.x2-aa.x<R+ab)an=aa.x2-R;else an=aa.x;if(aa.y+U[0]<ab)ao=-U[0];else if(am.search('t')!=-1&&aa.y2-aa.y<S+ab)ao=aa.y2-S;else ao=aa.y;if(aa.x2-U[1]>al.width-ab)ap=al.width+U[1];else if(am.search('r')!=-1&&aa.x2-aa.x<R+ab)ap=aa.x+R;else ap=aa.x2;if(aa.y2-U[2]>al.height-ab)aq=al.height+U[2];else if(am.search('b')!=-1&&aa.y2-aa.y<S+ab)aq=aa.y+S;else aq=aa.y2;P.move(an,ao);P.resize(ap-an,aq-ao);ag.data.preventDefault();};function af(ag){a.document.removeListener('mouseup',af);a.document.removeListener('mousemove',ae);if(b.ie6Compat){var ah=C.getChild(0).getFrameDocument();ah.removeListener('mouseup',af);ah.removeListener('mousemove',ae);}};};var A,B={},C;function D(P){var Q=a.document.getWindow(),R=P.config,S=R.dialog_backgroundCoverColor||'white',T=R.dialog_backgroundCoverOpacity,U=R.baseFloatZIndex,V=e.genKey(S,T,U),W=B[V];if(!W){var X=['<div style="position: ',b.ie6Compat?'absolute':'fixed','; z-index: ',U,'; top: 0px; left: 0px; ',!b.ie6Compat?'background-color: '+S:'','" class="cke_dialog_background_cover">'];if(b.ie6Compat){var Y=b.isCustomDomain(),Z="<html><body style=\\'background-color:"+S+";\\'></body></html>";
|
||||
X.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');X.push('void((function(){document.open();'+(Y?"document.domain='"+document.domain+"';":'')+"document.write( '"+Z+"' );"+'document.close();'+'})())');X.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');}X.push('</div>');W=h.createFromHtml(X.join(''));W.setOpacity(T!=undefined?T:0.5);W.appendTo(a.document.getBody());B[V]=W;}else W.show();C=W;var aa=function(){var ad=Q.getViewPaneSize();W.setStyles({width:ad.width+'px',height:ad.height+'px'});},ab=function(){var ad=Q.getScrollPosition(),ae=a.dialog._.currentTop;W.setStyles({left:ad.x+'px',top:ad.y+'px'});do{var af=ae.getPosition();ae.move(af.x,af.y);}while(ae=ae._.parentDialog)};A=aa;Q.on('resize',aa);aa();if(b.ie6Compat){var ac=function(){ab();arguments.callee.prevScrollHandler.apply(this,arguments);};Q.$.setTimeout(function(){ac.prevScrollHandler=window.onscroll||(function(){});window.onscroll=ac;},0);ab();}};function E(){if(!C)return;var P=a.document.getWindow();C.hide();P.removeListener('resize',A);if(b.ie6Compat)P.$.setTimeout(function(){var Q=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=Q||null;},0);A=null;};function F(){for(var P in B)B[P].remove();B={};};var G={},H=function(P){var Q=P.data.$.ctrlKey||P.data.$.metaKey,R=P.data.$.altKey,S=P.data.$.shiftKey,T=String.fromCharCode(P.data.$.keyCode),U=G[(Q?'CTRL+':'')+(R?'ALT+':'')+(S?'SHIFT+':'')+T];if(!U||!U.length)return;U=U[U.length-1];U.keydown&&U.keydown.call(U.uiElement,U.dialog,U.key);P.data.preventDefault();},I=function(P){var Q=P.data.$.ctrlKey||P.data.$.metaKey,R=P.data.$.altKey,S=P.data.$.shiftKey,T=String.fromCharCode(P.data.$.keyCode),U=G[(Q?'CTRL+':'')+(R?'ALT+':'')+(S?'SHIFT+':'')+T];if(!U||!U.length)return;U=U[U.length-1];if(U.keyup){U.keyup.call(U.uiElement,U.dialog,U.key);P.data.preventDefault();}},J=function(P,Q,R,S,T){var U=G[R]||(G[R]=[]);U.push({uiElement:P,dialog:Q,key:R,keyup:T||P.accessKeyUp,keydown:S||P.accessKeyDown});},K=function(P){for(var Q in G){var R=G[Q];for(var S=R.length-1;S>=0;S--){if(R[S].dialog==P||R[S].uiElement==P)R.splice(S,1);}if(R.length===0)delete G[Q];}},L=function(P,Q){if(P._.accessKeyMap[Q])P.selectPage(P._.accessKeyMap[Q]);},M=function(P,Q){},N={27:1,13:1},O=function(P){if(P.data.getKeystroke() in N)P.data.stopPropagation();};(function(){k.dialog={uiElement:function(P,Q,R,S,T,U,V){if(arguments.length<4)return;
|
||||
var W=(S.call?S(Q):S)||'div',X=['<',W,' '],Y=(T&&T.call?T(Q):T)||{},Z=(U&&U.call?U(Q):U)||{},aa=(V&&V.call?V.call(this,P,Q):V)||'',ab=this.domId=Z.id||e.getNextId()+'_uiElement',ac=this.id=Q.id,ad;Z.id=ab;var ae={};if(Q.type)ae['cke_dialog_ui_'+Q.type]=1;if(Q.className)ae[Q.className]=1;var af=Z['class']&&Z['class'].split?Z['class'].split(' '):[];for(ad=0;ad<af.length;ad++){if(af[ad])ae[af[ad]]=1;}var ag=[];for(ad in ae)ag.push(ad);Z['class']=ag.join(' ');if(Q.title)Z.title=Q.title;var ah=(Q.style||'').split(';');for(ad in Y)ah.push(ad+':'+Y[ad]);if(Q.hidden)ah.push('display:none');for(ad=ah.length-1;ad>=0;ad--){if(ah[ad]==='')ah.splice(ad,1);}if(ah.length>0)Z.style=(Z.style?Z.style+'; ':'')+ah.join('; ');for(ad in Z)X.push(ad+'="'+e.htmlEncode(Z[ad])+'" ');X.push('>',aa,'</',W,'>');R.push(X.join(''));(this._||(this._={})).dialog=P;if(typeof Q.isChanged=='boolean')this.isChanged=function(){return Q.isChanged;};if(typeof Q.isChanged=='function')this.isChanged=Q.isChanged;a.event.implementOn(this);this.registerEvents(Q);if(this.accessKeyUp&&this.accessKeyDown&&Q.accessKey)J(this,P,'CTRL+'+Q.accessKey);var ai=this;P.on('load',function(){if(ai.getInputElement())ai.getInputElement().on('focus',function(){P._.tabBarMode=false;P._.hasFocus=true;ai.fire('focus');},ai);});if(this.keyboardFocusable){this.tabIndex=Q.tabIndex||0;this.focusIndex=P._.focusList.push(this)-1;this.on('focus',function(){P._.currentFocusIndex=ai.focusIndex;});}e.extend(this,Q);},hbox:function(P,Q,R,S,T){if(arguments.length<4)return;this._||(this._={});var U=this._.children=Q,V=T&&T.widths||null,W=T&&T.height||null,X={},Y,Z=function(){var ab=['<tbody><tr class="cke_dialog_ui_hbox">'];for(Y=0;Y<R.length;Y++){var ac='cke_dialog_ui_hbox_child',ad=[];if(Y===0)ac='cke_dialog_ui_hbox_first';if(Y==R.length-1)ac='cke_dialog_ui_hbox_last';ab.push('<td class="',ac,'" role="presentation" ');if(V){if(V[Y])ad.push('width:'+m(V[Y]));}else ad.push('width:'+Math.floor(100/R.length)+'%');if(W)ad.push('height:'+m(W));if(T&&T.padding!=undefined)ad.push('padding:'+m(T.padding));if(ad.length>0)ab.push('style="'+ad.join('; ')+'" ');ab.push('>',R[Y],'</td>');}ab.push('</tr></tbody>');return ab.join('');},aa={role:'presentation'};T&&T.align&&(aa.align=T.align);k.dialog.uiElement.call(this,P,T||{type:'hbox'},S,'table',X,aa,Z);},vbox:function(P,Q,R,S,T){if(arguments.length<3)return;this._||(this._={});var U=this._.children=Q,V=T&&T.width||null,W=T&&T.heights||null,X=function(){var Y=['<table role="presentation" cellspacing="0" border="0" '];
|
||||
Y.push('style="');if(T&&T.expand)Y.push('height:100%;');Y.push('width:'+m(V||'100%'),';');Y.push('"');Y.push('align="',e.htmlEncode(T&&T.align||(P.getParentEditor().lang.dir=='ltr'?'left':'right')),'" ');Y.push('><tbody>');for(var Z=0;Z<R.length;Z++){var aa=[];Y.push('<tr><td role="presentation" ');if(V)aa.push('width:'+m(V||'100%'));if(W)aa.push('height:'+m(W[Z]));else if(T&&T.expand)aa.push('height:'+Math.floor(100/R.length)+'%');if(T&&T.padding!=undefined)aa.push('padding:'+m(T.padding));if(aa.length>0)Y.push('style="',aa.join('; '),'" ');Y.push(' class="cke_dialog_ui_vbox_child">',R[Z],'</td></tr>');}Y.push('</tbody></table>');return Y.join('');};k.dialog.uiElement.call(this,P,T||{type:'vbox'},S,'div',null,{role:'presentation'},X);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(P,Q){this.getInputElement().setValue(P);!Q&&this.fire('change',{value:P});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var S=this;var P=S.getInputElement(),Q=P,R;while((Q=Q.getParent())&&Q.$.className.search('cke_dialog_page_contents')==-1){}if(!Q)return S;R=Q.getAttribute('name');if(S._.dialog._.currentTabId!=R)S._.dialog.selectPage(R);return S;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(P){var Q=/^on([A-Z]\w+)/,R,S=function(U,V,W,X){V.on('load',function(){U.getInputElement().on(W,X,U);});};for(var T in P){if(!(R=T.match(Q)))continue;if(this.eventProcessors[T])this.eventProcessors[T].call(this,this._.dialog,P[T]);else S(this,this._.dialog,R[1].toLowerCase(),P[T]);}return this;},eventProcessors:{onLoad:function(P,Q){P.on('load',Q,this);},onShow:function(P,Q){P.on('show',Q,this);},onHide:function(P,Q){P.on('hide',Q,this);}},accessKeyDown:function(P,Q){this.focus();},accessKeyUp:function(P,Q){},disable:function(){var P=this.getInputElement();P.setAttribute('disabled','true');P.addClass('cke_disabled');},enable:function(){var P=this.getInputElement();P.removeAttribute('disabled');P.removeClass('cke_disabled');},isEnabled:function(){return!this.getInputElement().getAttribute('disabled');},isVisible:function(){return this.getInputElement().isVisible();},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(P){var Q=this;
|
||||
if(arguments.length<1)return Q._.children.concat();if(!P.splice)P=[P];if(P.length<2)return Q._.children[P[0]];else return Q._.children[P[0]]&&Q._.children[P[0]].getChild?Q._.children[P[0]].getChild(P.slice(1,P.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var P={build:function(Q,R,S){var T=R.children,U,V=[],W=[];for(var X=0;X<T.length&&(U=T[X]);X++){var Y=[];V.push(Y);W.push(a.dialog._.uiElementBuilders[U.type].build(Q,U,Y));}return new k.dialog[R.type](Q,W,V,S,R);}};a.dialog.addUIElement('hbox',P);a.dialog.addUIElement('vbox',P);})();a.dialogCommand=function(P){this.dialogName=P;};a.dialogCommand.prototype={exec:function(P){P.openDialog(this.dialogName);},canUndo:false,editorFocus:c||b.webkit};(function(){var P=/^([a]|[^a])+$/,Q=/^\d*$/,R=/^\d*(?:\.\d+)?$/;a.VALIDATE_OR=1;a.VALIDATE_AND=2;a.dialog.validate={functions:function(){return function(){var Y=this;var S=Y&&Y.getValue?Y.getValue():arguments[0],T=undefined,U=2,V=[],W;for(W=0;W<arguments.length;W++){if(typeof arguments[W]=='function')V.push(arguments[W]);else break;}if(W<arguments.length&&typeof arguments[W]=='string'){T=arguments[W];W++;}if(W<arguments.length&&typeof arguments[W]=='number')U=arguments[W];var X=U==2?true:false;for(W=0;W<V.length;W++){if(U==2)X=X&&V[W](S);else X=X||V[W](S);}if(!X){if(T!==undefined)alert(T);if(Y&&(Y.select||Y.focus))Y.select||Y.focus();return false;}return true;};},regex:function(S,T){return function(){var V=this;var U=V&&V.getValue?V.getValue():arguments[0];if(!S.test(U)){if(T!==undefined)alert(T);if(V&&(V.select||V.focus))if(V.select)V.select();else V.focus();return false;}return true;};},notEmpty:function(S){return this.regex(P,S);},integer:function(S){return this.regex(Q,S);},number:function(S){return this.regex(R,S);},equals:function(S,T){return this.functions(function(U){return U==S;},T);},notEqual:function(S,T){return this.functions(function(U){return U!=S;},T);}};a.on('instanceDestroyed',function(S){if(e.isEmpty(a.instances)){var T;while(T=a.dialog._.currentTop)T.hide();F();}var U=S.editor._.storedDialogs;for(var V in U)U[V].destroy();});})();})();e.extend(a.editor.prototype,{openDialog:function(m,n){var o=a.dialog._.dialogDefinitions[m],p=this.skin.dialog;if(typeof o=='function'&&p._isLoaded){var q=this._.storedDialogs||(this._.storedDialogs={}),r=q[m]||(q[m]=new a.dialog(this,m));n&&n.call(r,r);r.show();return r;}else if(o=='failed')throw new Error('[CKEDITOR.dialog.openDialog] Dialog "'+m+'" failed when loading definition.');
|
||||
var s=a.document.getBody(),t=s.$.style.cursor,u=this;s.setStyle('cursor','wait');function v(x){var y=a.dialog._.dialogDefinitions[m],z=u.skin.dialog;if(!z._isLoaded||w&&typeof x=='undefined')return;if(typeof y!='function')a.dialog._.dialogDefinitions[m]='failed';u.openDialog(m,n);s.setStyle('cursor',t);};if(typeof o=='string'){var w=1;a.scriptLoader.load(a.getUrl(o),v);}a.skins.load(this,'dialog',v);return null;}});j.add('dialog',{requires:['dialogui']});j.add('styles',{requires:['selection']});a.editor.prototype.attachStyleStateChange=function(m,n){var o=this._.styleStateChangeCallbacks;if(!o){o=this._.styleStateChangeCallbacks=[];this.on('selectionChange',function(p){for(var q=0;q<o.length;q++){var r=o[q],s=r.style.checkActive(p.data.path)?1:2;if(r.state!==s){r.fn.call(this,s);r.state=s;}}});}o.push({style:m,fn:n});};a.STYLE_BLOCK=1;a.STYLE_INLINE=2;a.STYLE_OBJECT=3;(function(){var m={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1},n={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1},o=/\s*(?:;\s*|$)/;a.style=function(Q,R){if(R){Q=e.clone(Q);I(Q.attributes,R);I(Q.styles,R);}var S=this.element=(Q.element||'*').toLowerCase();this.type=S=='#'||m[S]?1:n[S]?3:2;this._={definition:Q};};a.style.prototype={apply:function(Q){P.call(this,Q,false);},remove:function(Q){P.call(this,Q,true);},applyToRange:function(Q){var R=this;return(R.applyToRange=R.type==2?p:R.type==1?t:R.type==3?r:null).call(R,Q);},removeFromRange:function(Q){var R=this;return(R.removeFromRange=R.type==2?q:R.type==3?s:null).call(R,Q);},applyToObject:function(Q){G(Q,this);},checkActive:function(Q){var U=this;switch(U.type){case 1:return U.checkElementRemovable(Q.block||Q.blockLimit,true);case 3:case 2:var R=Q.elements;for(var S=0,T;S<R.length;S++){T=R[S];if(U.type==2&&(T==Q.block||T==Q.blockLimit))continue;if(U.type==3&&!(T.getName() in n))continue;if(U.checkElementRemovable(T,true))return true;}}return false;},checkApplicable:function(Q){switch(this.type){case 2:case 1:break;case 3:return Q.lastElement.getAscendant(this.element,true);}return true;},checkElementRemovable:function(Q,R){if(!Q)return false;var S=this._.definition,T;if(Q.getName()==this.element){if(!R&&!Q.hasAttributes())return true;T=J(S);if(T._length){for(var U in T){if(U=='_length')continue;var V=Q.getAttribute(U)||'';if(U=='style'?O(T[U],M(V,false)):T[U]==V){if(!R)return true;}else if(R)return false;}if(R)return true;}else return true;}var W=K(this)[Q.getName()];if(W){if(!(T=W.attributes))return true;
|
||||
for(var X=0;X<T.length;X++){U=T[X][0];var Y=Q.getAttribute(U);if(Y){var Z=T[X][1];if(Z===null||typeof Z=='string'&&Y==Z||Z.test(Y))return true;}}}return false;},buildPreview:function(){var Q=this._.definition,R=[],S=Q.element;if(S=='bdo')S='span';R=['<',S];var T=Q.attributes;if(T)for(var U in T)R.push(' ',U,'="',T[U],'"');var V=a.style.getStyleText(Q);if(V)R.push(' style="',V,'"');R.push('>',Q.name,'</',S,'>');return R.join('');}};a.style.getStyleText=function(Q){var R=Q._ST;if(R)return R;R=Q.styles;var S=Q.attributes&&Q.attributes.style||'',T='';if(S.length)S=S.replace(o,';');for(var U in R){var V=R[U],W=(U+':'+V).replace(o,';');if(V=='inherit')T+=W;else S+=W;}if(S.length)S=M(S);S+=T;return Q._ST=S;};function p(Q){var ap=this;var R=Q.document;if(Q.collapsed){var S=F(ap,R);Q.insertNode(S);Q.moveToPosition(S,2);return;}var T=ap.element,U=ap._.definition,V,W=f[T]||(V=true,f.span);Q.enlarge(1);Q.trim();var X=Q.createBookmark(),Y=X.startNode,Z=X.endNode,aa=Y,ab;while(aa){var ac=false;if(aa.equals(Z)){aa=null;ac=true;}else{var ad=aa.type,ae=ad==1?aa.getName():null;if(ae&&aa.getAttribute('_cke_bookmark')){aa=aa.getNextSourceNode(true);continue;}if(!ae||W[ae]&&(aa.getPosition(Z)|4|0|8)==4+0+8&&(!U.childRule||U.childRule(aa))){var af=aa.getParent();if(af&&((af.getDtd()||f.span)[T]||V)&&(!U.parentRule||U.parentRule(af))){if(!ab&&(!ae||!f.$removeEmpty[ae]||(aa.getPosition(Z)|4|0|8)==4+0+8)){ab=new d.range(R);ab.setStartBefore(aa);}if(ad==3||ad==1&&!aa.getChildCount()){var ag=aa,ah;while(!ag.$.nextSibling&&(ah=ag.getParent(),W[ah.getName()])&&(ah.getPosition(Y)|2|0|8)==2+0+8&&(!U.childRule||U.childRule(ah)))ag=ah;ab.setEndAfter(ag);if(!ag.$.nextSibling)ac=true;}}else ac=true;}else ac=true;aa=aa.getNextSourceNode();}if(ac&&ab&&!ab.collapsed){var ai=F(ap,R),aj=ai.hasAttributes(),ak=ab.getCommonAncestor(),al={styles:{},attrs:{},blockedStyles:{},blockedAttrs:{}},am,an,ao;while(ai&&ak){if(ak.getName()==T){for(am in U.attributes){if(al.blockedAttrs[am]||!(ao=ak.getAttribute(an)))continue;if(ai.getAttribute(am)==ao)al.attrs[am]=1;else al.blockedAttrs[am]=1;}for(an in U.styles){if(al.blockedStyles[an]||!(ao=ak.getStyle(an)))continue;if(ai.getStyle(an)==ao)al.styles[an]=1;else al.blockedStyles[an]=1;}}ak=ak.getParent();}for(am in al.attrs)ai.removeAttribute(am);for(an in al.styles)ai.removeStyle(an);if(aj&&!ai.hasAttributes())ai=null;if(ai){ab.extractContents().appendTo(ai);C(ap,ai);ab.insertNode(ai);ai.mergeSiblings();if(!c)ai.$.normalize();}else{ai=new h('span');ab.extractContents().appendTo(ai);
|
||||
ab.insertNode(ai);C(ap,ai);ai.remove(true);}ab=null;}}Q.moveToBookmark(X);Q.shrink(2);};function q(Q){Q.enlarge(1);var R=Q.createBookmark(),S=R.startNode;if(Q.collapsed){var T=new d.elementPath(S.getParent()),U;for(var V=0,W;V<T.elements.length&&(W=T.elements[V]);V++){if(W==T.block||W==T.blockLimit)break;if(this.checkElementRemovable(W)){var X;if(Q.collapsed&&(Q.checkBoundaryOfElement(W,2)||(X=Q.checkBoundaryOfElement(W,1)))){U=W;U.match=X?'start':'end';}else{W.mergeSiblings();B(this,W);}}}if(U){var Y=S;for(V=0;true;V++){var Z=T.elements[V];if(Z.equals(U))break;else if(Z.match)continue;else Z=Z.clone();Z.append(Y);Y=Z;}Y[U.match=='start'?'insertBefore':'insertAfter'](U);}}else{var aa=R.endNode,ab=this;function ac(){var af=new d.elementPath(S.getParent()),ag=new d.elementPath(aa.getParent()),ah=null,ai=null;for(var aj=0;aj<af.elements.length;aj++){var ak=af.elements[aj];if(ak==af.block||ak==af.blockLimit)break;if(ab.checkElementRemovable(ak))ah=ak;}for(aj=0;aj<ag.elements.length;aj++){ak=ag.elements[aj];if(ak==ag.block||ak==ag.blockLimit)break;if(ab.checkElementRemovable(ak))ai=ak;}if(ai)aa.breakParent(ai);if(ah)S.breakParent(ah);};ac();var ad=S.getNext();while(!ad.equals(aa)){var ae=ad.getNextSourceNode();if(ad.type==1&&this.checkElementRemovable(ad)){if(ad.getName()==this.element)B(this,ad);else D(ad,K(this)[ad.getName()]);if(ae.type==1&&ae.contains(S)){ac();ae=S.getNext();}}ad=ae;}}Q.moveToBookmark(R);};function r(Q){var R=Q.getCommonAncestor(true,true),S=R.getAscendant(this.element,true);S&&G(S,this);};function s(Q){var R=Q.getCommonAncestor(true,true),S=R.getAscendant(this.element,true);if(!S)return;var T=this,U=T._.definition,V=U.attributes,W=a.style.getStyleText(U);if(V)for(var X in V)S.removeAttribute(X,V[X]);if(U.styles)for(var Y in U.styles){if(!U.styles.hasOwnProperty(Y))continue;S.removeStyle(Y);}};function t(Q){var R=Q.createBookmark(true),S=Q.createIterator();S.enforceRealBlocks=true;if(this._.enterMode)S.enlargeBr=this._.enterMode!=2;var T,U=Q.document,V;while(T=S.getNextParagraph()){var W=F(this,U,T);u(T,W);}Q.moveToBookmark(R);};function u(Q,R){var S=R.is('pre'),T=Q.is('pre'),U=S&&!T,V=!S&&T;if(U)R=A(Q,R);else if(V)R=z(x(Q),R);else Q.moveChildren(R);R.replace(Q);if(S)w(R);};var v=d.walker.whitespaces(true);function w(Q){var R;if(!((R=Q.getPrevious(v))&&R.is&&R.is('pre')))return;var S=y(R.getHtml(),/\n$/,'')+'\n\n'+y(Q.getHtml(),/^\n/,'');if(c)Q.$.outerHTML='<pre>'+S+'</pre>';else Q.setHtml(S);R.remove();};function x(Q){var R=/(\S\s*)\n(?:\s|(<span[^>]+_cke_bookmark.*?\/span>))*\n(?!$)/gi,S=Q.getName(),T=y(Q.getOuterHtml(),R,function(V,W,X){return W+'</pre>'+X+'<pre>';
|
||||
}),U=[];T.replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(V,W){U.push(W);});return U;};function y(Q,R,S){var T='',U='';Q=Q.replace(/(^<span[^>]+_cke_bookmark.*?\/span>)|(<span[^>]+_cke_bookmark.*?\/span>$)/gi,function(V,W,X){W&&(T=W);X&&(U=X);return '';});return T+Q.replace(R,S)+U;};function z(Q,R){var S=new d.documentFragment(R.getDocument());for(var T=0;T<Q.length;T++){var U=Q[T];U=U.replace(/(\r\n|\r)/g,'\n');U=y(U,/^[ \t]*\n/,'');U=y(U,/\n$/,'');U=y(U,/^[ \t]+|[ \t]+$/g,function(W,X,Y){if(W.length==1)return ' ';else if(!X)return e.repeat(' ',W.length-1)+' ';else return ' '+e.repeat(' ',W.length-1);});U=U.replace(/\n/g,'<br>');U=U.replace(/[ \t]{2,}/g,function(W){return e.repeat(' ',W.length-1)+' ';});var V=R.clone();V.setHtml(U);S.append(V);}return S;};function A(Q,R){var S=Q.getHtml();S=y(S,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');S=S.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');S=S.replace(/([ \t\n\r]+| )/g,' ');S=S.replace(/<br\b[^>]*>/gi,'\n');if(c){var T=Q.getDocument().createElement('div');T.append(R);R.$.outerHTML='<pre>'+S+'</pre>';R=T.getFirst().remove();}else R.setHtml(S);return R;};function B(Q,R){var S=Q._.definition,T=e.extend({},S.attributes,K(Q)[R.getName()]),U=S.styles,V=e.isEmpty(T)&&e.isEmpty(U);for(var W in T){if((W=='class'||Q._.definition.fullMatch)&&R.getAttribute(W)!=L(W,T[W]))continue;V=R.hasAttribute(W);R.removeAttribute(W);}for(var X in U){if(Q._.definition.fullMatch&&R.getStyle(X)!=L(X,U[X],true))continue;V=V||!!R.getStyle(X);R.removeStyle(X);}V&&E(R);};function C(Q,R){var S=Q._.definition,T=S.attributes,U=S.styles,V=K(Q),W=R.getElementsByTag(Q.element);for(var X=W.count();--X>=0;)B(Q,W.getItem(X));for(var Y in V){if(Y!=Q.element){W=R.getElementsByTag(Y);for(X=W.count()-1;X>=0;X--){var Z=W.getItem(X);D(Z,V[Y]);}}}};function D(Q,R){var S=R&&R.attributes;if(S)for(var T=0;T<S.length;T++){var U=S[T][0],V;if(V=Q.getAttribute(U)){var W=S[T][1];if(W===null||W.test&&W.test(V)||typeof W=='string'&&V==W)Q.removeAttribute(U);}}E(Q);};function E(Q){if(!Q.hasAttributes()){var R=Q.getFirst(),S=Q.getLast();Q.remove(true);if(R){R.type==1&&R.mergeSiblings();if(S&&!R.equals(S)&&S.type==1)S.mergeSiblings();}}};function F(Q,R,S){var T,U=Q._.definition,V=Q.element;if(V=='*')V='span';T=new h(V,R);if(S)S.copyAttributes(T);return G(T,Q);};function G(Q,R){var S=R._.definition,T=S.attributes,U=a.style.getStyleText(S);if(T)for(var V in T)Q.setAttribute(V,T[V]);if(U)Q.setAttribute('style',U);return Q;};var H=/#\((.+?)\)/g;function I(Q,R){for(var S in Q)Q[S]=Q[S].replace(H,function(T,U){return R[U];
|
||||
});};function J(Q){var R=Q._AC;if(R)return R;R={};var S=0,T=Q.attributes;if(T)for(var U in T){S++;R[U]=T[U];}var V=a.style.getStyleText(Q);if(V){if(!R.style)S++;R.style=V;}R._length=S;return Q._AC=R;};function K(Q){if(Q._.overrides)return Q._.overrides;var R=Q._.overrides={},S=Q._.definition.overrides;if(S){if(!e.isArray(S))S=[S];for(var T=0;T<S.length;T++){var U=S[T],V,W,X;if(typeof U=='string')V=U.toLowerCase();else{V=U.element?U.element.toLowerCase():Q.element;X=U.attributes;}W=R[V]||(R[V]={});if(X){var Y=W.attributes=W.attributes||[];for(var Z in X)Y.push([Z.toLowerCase(),X[Z]]);}}}return R;};function L(Q,R,S){var T=new h('span');T[S?'setStyle':'setAttribute'](Q,R);return T[S?'getStyle':'getAttribute'](Q);};function M(Q,R){var S;if(R!==false){var T=new h('span');T.setAttribute('style',Q);S=T.getAttribute('style')||'';}else S=Q;return S.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').replace(/,\s+/g,',').replace(/\"/g,'').toLowerCase();};function N(Q){var R={};Q.replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(S,T,U){R[T]=U;});return R;};function O(Q,R){typeof Q=='string'&&(Q=N(Q));typeof R=='string'&&(R=N(R));for(var S in Q){if(!(S in R&&(R[S]==Q[S]||Q[S]=='inherit'||R[S]=='inherit')))return false;}return true;};function P(Q,R){var S=Q.getSelection(),T=S.createBookmarks(1),U=S.getRanges(1),V=R?this.removeFromRange:this.applyToRange,W,X=U.createIterator();while(W=X.getNextRange())V.call(this,W);if(T.length==1&&T[0].collapsed){S.selectRanges(U);Q.getById(T[0].startNode).remove();}else S.selectBookmarks(T);};})();a.styleCommand=function(m){this.style=m;};a.styleCommand.prototype.exec=function(m){var o=this;m.focus();var n=m.document;if(n)if(o.state==2)o.style.apply(n);else if(o.state==1)o.style.remove(n);return!!n;};a.stylesSet=new a.resourceManager('','stylesSet');a.addStylesSet=e.bind(a.stylesSet.add,a.stylesSet);a.loadStylesSet=function(m,n,o){a.stylesSet.addExternal(m,n,'');a.stylesSet.load(m,o);};a.editor.prototype.getStylesSet=function(m){if(!this._.stylesDefinitions){var n=this,o=n.config.stylesCombo_stylesSet||n.config.stylesSet||'default';if(o instanceof Array){n._.stylesDefinitions=o;m(o);return;}var p=o.split(':'),q=p[0],r=p[1],s=j.registered.styles.path;a.stylesSet.addExternal(q,r?p.slice(1).join(':'):s+'styles/'+q+'.js','');a.stylesSet.load(q,function(t){n._.stylesDefinitions=t[q];m(n._.stylesDefinitions);});}else m(this._.stylesDefinitions);};j.add('domiterator');(function(){function m(p){var q=this;if(arguments.length<1)return;
|
||||
q.range=p;q.forceBrBreak=0;q.enlargeBr=1;q.enforceRealBlocks=0;q._||(q._={});};var n=/^[\r\n\t ]+$/,o=d.walker.bookmark();m.prototype={getNextParagraph:function(p){var q,r,s,t,u,v;if(!this._.lastNode){r=this.range.clone();r.shrink(1,true);t=r.endContainer.hasAscendant('pre',true)||r.startContainer.hasAscendant('pre',true);r.enlarge(this.forceBrBreak&&!t||!this.enlargeBr?3:2);var w=new d.walker(r),x=d.walker.bookmark(true,true);w.evaluator=x;this._.nextNode=w.next();w=new d.walker(r);w.evaluator=x;var y=w.previous();this._.lastNode=y.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==3&&!e.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){var z=new d.range(r.document);z.moveToPosition(this._.lastNode,4);if(z.checkEndOfBlock()){var A=new d.elementPath(z.endContainer),B=A.block||A.blockLimit;this._.lastNode=B.getNextSourceNode(true);}}if(!this._.lastNode){this._.lastNode=this._.docEndMarker=r.document.createText('');this._.lastNode.insertAfter(y);}r=null;}var C=this._.nextNode;y=this._.lastNode;this._.nextNode=null;while(C){var D=0,E=C.hasAscendant('pre'),F=C.type!=1,G=0;if(!F){var H=C.getName();if(C.isBlockBoundary(this.forceBrBreak&&!E&&{br:1})){if(H=='br')F=1;else if(!r&&!C.getChildCount()&&H!='hr'){q=C;s=C.equals(y);break;}if(r){r.setEndAt(C,3);if(H!='br')this._.nextNode=C;}D=1;}else{if(C.getFirst()){if(!r){r=new d.range(this.range.document);r.setStartAt(C,3);}C=C.getFirst();continue;}F=1;}}else if(C.type==3)if(n.test(C.getText()))F=0;if(F&&!r){r=new d.range(this.range.document);r.setStartAt(C,3);}s=(!D||F)&&C.equals(y);if(r&&!D)while(!C.getNext()&&!s){var I=C.getParent();if(I.isBlockBoundary(this.forceBrBreak&&!E&&{br:1})){D=1;s=s||I.equals(y);break;}C=I;F=1;s=C.equals(y);G=1;}if(F)r.setEndAt(C,4);C=C.getNextSourceNode(G,null,y);s=!C;if(s||D&&r)break;}if(!q){if(!r){this._.docEndMarker&&this._.docEndMarker.remove();this._.nextNode=null;return null;}var J=new d.elementPath(r.startContainer),K=J.blockLimit,L={div:1,th:1,td:1};q=J.block;if(!q&&!this.enforceRealBlocks&&L[K.getName()]&&r.checkStartOfBlock()&&r.checkEndOfBlock())q=K;else if(!q||this.enforceRealBlocks&&q.getName()=='li'){q=this.range.document.createElement(p||'p');r.extractContents().appendTo(q);q.trim();r.insertNode(q);u=v=true;}else if(q.getName()!='li'){if(!r.checkStartOfBlock()||!r.checkEndOfBlock()){q=q.clone(false);r.extractContents().appendTo(q);q.trim();var M=r.splitBlock();u=!M.wasStartOfBlock;v=!M.wasEndOfBlock;r.insertNode(q);}}else if(!s)this._.nextNode=q.equals(y)?null:r.getBoundaryNodes().endNode.getNextSourceNode(true,null,y);
|
||||
}var N=d.walker.bookmark(false,true);if(u){var O=q.getPrevious();if(O&&O.type==1)if(O.getName()=='br')O.remove();else if(O.getLast()&&O.getLast().$.nodeName.toLowerCase()=='br')O.getLast().remove();}if(v){var P=q.getLast();if(P&&P.type==1&&P.getName()=='br')if(c||P.getPrevious(N)||P.getNext(N))P.remove();}if(!this._.nextNode)this._.nextNode=s||q.equals(y)?null:q.getNextSourceNode(true,null,y);if(!N(this._.nextNode))this._.nextNode=this._.nextNode.getNextSourceNode(true,null,function(Q){return!Q.equals(y)&&N(Q);});return q;}};d.range.prototype.createIterator=function(){return new m(this);};})();j.add('panelbutton',{requires:['button'],beforeInit:function(m){m.ui.addHandler(4,k.panelButton.handler);}});a.UI_PANELBUTTON=4;(function(){var m=function(n){var p=this;var o=p._;if(o.state==0)return;p.createPanel(n);if(o.on){o.panel.hide();return;}o.panel.showBlock(p._.id,p.document.getById(p._.id),4);};k.panelButton=e.createClass({base:k.button,$:function(n){var p=this;var o=n.panel;delete n.panel;p.base(n);p.document=o&&o.parent&&o.parent.getDocument()||a.document;o.block={attributes:o.attributes};p.hasArrow=true;p.click=m;p._={panelDefinition:o};},statics:{handler:{create:function(n){return new k.panelButton(n);}}},proto:{createPanel:function(n){var o=this._;if(o.panel)return;var p=this._.panelDefinition||{},q=this._.panelDefinition.block,r=p.parent||a.document.getBody(),s=this._.panel=new k.floatPanel(n,r,p),t=s.addBlock(o.id,q),u=this;s.onShow=function(){if(u.className)this.element.getFirst().addClass(u.className+'_panel');o.oldState=u._.state;u.setState(1);o.on=1;if(u.onOpen)u.onOpen();};s.onHide=function(v){if(u.className)this.element.getFirst().removeClass(u.className+'_panel');u.setState(o.oldState);o.on=0;if(!v&&u.onClose)u.onClose();};s.onEscape=function(){s.hide();u.document.getById(o.id).focus();};if(this.onBlock)this.onBlock(s,t);t.onHide=function(){o.on=0;u.setState(2);};}}});})();j.add('floatpanel',{requires:['panel']});(function(){var m={},n=false;function o(p,q,r,s,t){var u=e.genKey(q.getUniqueId(),r.getUniqueId(),p.skinName,p.lang.dir,p.uiColor||'',s.css||'',t||''),v=m[u];if(!v){v=m[u]=new k.panel(q,s);v.element=r.append(h.createFromHtml(v.renderHtml(p),q));v.element.setStyles({display:'none',position:'absolute'});}return v;};k.floatPanel=e.createClass({$:function(p,q,r,s){r.forceIFrame=1;var t=q.getDocument(),u=o(p,t,q,r,s||0),v=u.element,w=v.getFirst().getFirst();this.element=v;this._={panel:u,parentElement:q,definition:r,document:t,iframe:w,children:[],dir:p.lang.dir};
|
||||
},proto:{addBlock:function(p,q){return this._.panel.addBlock(p,q);},addListBlock:function(p,q){return this._.panel.addListBlock(p,q);},getBlock:function(p){return this._.panel.getBlock(p);},showBlock:function(p,q,r,s,t){var u=this._.panel,v=u.showBlock(p);this.allowBlur(false);n=1;var w=this.element,x=this._.iframe,y=this._.definition,z=q.getDocumentPosition(w.getDocument()),A=this._.dir=='rtl',B=z.x+(s||0),C=z.y+(t||0);if(A&&(r==1||r==4))B+=q.$.offsetWidth;else if(!A&&(r==2||r==3))B+=q.$.offsetWidth-1;if(r==3||r==4)C+=q.$.offsetHeight-1;this._.panel._.offsetParentId=q.getId();w.setStyles({top:0,left:0,display:''});w.setOpacity(0);w.getFirst().removeStyle('width');if(!this._.blurSet){var D=c?x:new d.window(x.$.contentWindow);a.event.useCapture=true;D.on('blur',function(E){var G=this;if(!G.allowBlur())return;var F;if(c&&!G.allowBlur()||(F=E.data.getTarget())&&F.getName&&F.getName()!='iframe')return;if(G.visible&&!G._.activeChild&&!n)G.hide();},this);D.on('focus',function(){this._.focused=true;this.hideChild();this.allowBlur(true);},this);a.event.useCapture=false;this._.blurSet=1;}u.onEscape=e.bind(function(E){if(this.onEscape&&this.onEscape(E)===false)return false;},this);e.setTimeout(function(){if(A)B-=w.$.offsetWidth;var E=e.bind(function(){var F=w.getFirst();if(v.autoSize){var G=v.element.$;if(b.gecko||b.opera)G=G.parentNode;if(c)G=G.document.body;var H=G.scrollWidth;if(c&&b.quirks&&H>0)H+=(F.$.offsetWidth||0)-(F.$.clientWidth||0);H+=4;F.setStyle('width',H+'px');v.element.addClass('cke_frameLoaded');var I=v.element.$.scrollHeight;if(c&&b.quirks&&I>0)I+=(F.$.offsetHeight||0)-(F.$.clientHeight||0);F.setStyle('height',I+'px');u._.currentBlock.element.setStyle('display','none').removeStyle('display');}else F.removeStyle('height');var J=u.element,K=J.getWindow(),L=K.getScrollPosition(),M=K.getViewPaneSize(),N={height:J.$.offsetHeight,width:J.$.offsetWidth};if(A?B<0:B+N.width>M.width+L.x)B+=N.width*(A?1:-1);if(C+N.height>M.height+L.y)C-=N.height;if(c){var O=new h(w.$.offsetParent),P=O;if(P.getName()=='html')P=P.getDocument().getBody();if(P.getComputedStyle('direction')=='rtl')if(b.ie8Compat)B-=w.getDocument().getDocumentElement().$.scrollLeft*2;else B-=O.$.scrollWidth-O.$.clientWidth;}var Q=w.getFirst(),R;if(R=Q.getCustomData('activePanel'))R.onHide&&R.onHide.call(this,1);Q.setCustomData('activePanel',this);w.setStyles({top:C+'px',left:B+'px'});w.setOpacity(1);},this);u.isLoaded?E():u.onLoad=E;e.setTimeout(function(){x.$.contentWindow.focus();this.allowBlur(true);
|
||||
},0,this);},0,this);this.visible=1;if(this.onShow)this.onShow.call(this);n=0;},hide:function(){var p=this;if(p.visible&&(!p.onHide||p.onHide.call(p)!==true)){p.hideChild();p.element.setStyle('display','none');p.visible=0;p.element.getFirst().removeCustomData('activePanel');}},allowBlur:function(p){var q=this._.panel;if(p!=undefined)q.allowBlur=p;return q.allowBlur;},showAsChild:function(p,q,r,s,t,u){if(this._.activeChild==p&&p._.panel._.offsetParentId==r.getId())return;this.hideChild();p.onHide=e.bind(function(){e.setTimeout(function(){if(!this._.focused)this.hide();},0,this);},this);this._.activeChild=p;this._.focused=false;p.showBlock(q,r,s,t,u);if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){p.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var p=this._.activeChild;if(p){delete p.onHide;delete this._.activeChild;p.hide();}}}});a.on('instanceDestroyed',function(){var p=e.isEmpty(a.instances);for(var q in m){var r=m[q];if(p)r.destroy();else r.element.hide();}p&&(m={});});})();j.add('menu',{beforeInit:function(m){var n=m.config.menu_groups.split(','),o=m._.menuGroups={},p=m._.menuItems={};for(var q=0;q<n.length;q++)o[n[q]]=q+1;m.addMenuGroup=function(r,s){o[r]=s||100;};m.addMenuItem=function(r,s){if(o[s.group])p[r]=new a.menuItem(this,r,s);};m.addMenuItems=function(r){for(var s in r)this.addMenuItem(s,r[s]);};m.getMenuItem=function(r){return p[r];};},requires:['floatpanel']});(function(){a.menu=e.createClass({$:function(n,o){var r=this;o=r._.definition=o||{};r.id='cke_'+e.getNextNumber();r.editor=n;r.items=[];r._.level=o.level||1;var p=e.extend({},o.panel,{css:n.skin.editor.css,level:r._.level-1,block:{}}),q=p.block.attributes=p.attributes||{};!q.role&&(q.role='menu');r._.panelDefinition=p;},_:{showSubMenu:function(n){var v=this;var o=v._.subMenu,p=v.items[n],q=p.getItems&&p.getItems();if(!q){v._.panel.hideChild();return;}var r=v._.panel.getBlock(v.id);r._.focusIndex=n;if(o)o.removeAll();else{o=v._.subMenu=new a.menu(v.editor,e.extend({},v._.definition,{level:v._.level+1},true));o.parent=v;o.onClick=e.bind(v.onClick,v);o.onEscape=v.onEscape;}for(var s in q){var t=v.editor.getMenuItem(s);if(t){t.state=q[s];o.add(t);}}var u=v._.panel.getBlock(v.id).element.getDocument().getById(v.id+String(n));o.show(u,2);}},proto:{add:function(n){if(!n.order)n.order=this.items.length;this.items.push(n);},removeAll:function(){this.items=[];},show:function(n,o,p,q){var r=this.items,s=this.editor,t=this._.panel,u=this._.element;if(!t){t=this._.panel=new k.floatPanel(this.editor,a.document.getBody(),this._.panelDefinition,this._.level);
|
||||
t.onEscape=e.bind(function(F){if(this.onEscape&&this.onEscape(F)===false)return false;},this);t.onHide=e.bind(function(){this.onHide&&this.onHide();},this);var v=t.addBlock(this.id,this._.panelDefinition.block);v.autoSize=true;var w=v.keys;w[40]='next';w[9]='next';w[38]='prev';w[2000+9]='prev';w[32]='click';w[s.lang.dir=='rtl'?37:39]='click';u=this._.element=v.element;u.addClass(s.skinClass);var x=u.getDocument();x.getBody().setStyle('overflow','hidden');x.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');this._.itemOverFn=e.addFunction(function(F){var G=this;clearTimeout(G._.showSubTimeout);G._.showSubTimeout=e.setTimeout(G._.showSubMenu,s.config.menu_subMenuDelay||400,G,[F]);},this);this._.itemOutFn=e.addFunction(function(F){clearTimeout(this._.showSubTimeout);},this);this._.itemClickFn=e.addFunction(function(F){var H=this;var G=H.items[F];if(G.state==0){H.hide();return;}if(G.getItems)H._.showSubMenu(F);else H.onClick&&H.onClick(G);},this);}m(r);var y=s.container.getChild(1),z=y.hasClass('cke_mixed_dir_content')?' cke_mixed_dir_content':'',A=['<div class="cke_menu'+z+'" role="presentation">'],B=r.length,C=B&&r[0].group;for(var D=0;D<B;D++){var E=r[D];if(C!=E.group){A.push('<div class="cke_menuseparator" role="separator"></div>');C=E.group;}E.render(this,D,A);}A.push('</div>');u.setHtml(A.join(''));if(this.parent)this.parent._.panel.showAsChild(t,this.id,n,o,p,q);else t.showBlock(this.id,n,o,p,q);s.fire('menuShow',[t]);},hide:function(){this._.panel&&this._.panel.hide();}}});function m(n){n.sort(function(o,p){if(o.group<p.group)return-1;else if(o.group>p.group)return 1;return o.order<p.order?-1:o.order>p.order?1:0;});};})();a.menuItem=e.createClass({$:function(m,n,o){var p=this;e.extend(p,o,{order:0,className:'cke_button_'+n});p.group=m._.menuGroups[p.group];p.editor=m;p.name=n;},proto:{render:function(m,n,o){var v=this;var p=m.id+String(n),q=typeof v.state=='undefined'?2:v.state,r=' cke_'+(q==1?'on':q==0?'disabled':'off'),s=v.label;if(v.className)r+=' '+v.className;var t=v.getItems;o.push('<span class="cke_menuitem"><a id="',p,'" class="',r,'" href="javascript:void(\'',(v.label||'').replace("'",''),'\')" title="',v.label,'" tabindex="-1"_cke_focus=1 hidefocus="true" role="menuitem"'+(t?'aria-haspopup="true"':'')+(q==0?'aria-disabled="true"':'')+(q==1?'aria-pressed="true"':''));if(b.opera||b.gecko&&b.mac)o.push(' onkeypress="return false;"');if(b.gecko)o.push(' onblur="this.style.cssText = this.style.cssText;"');var u=(v.iconOffset||0)*-16;
|
||||
o.push(' onmouseover="CKEDITOR.tools.callFunction(',m._.itemOverFn,',',n,');" onmouseout="CKEDITOR.tools.callFunction(',m._.itemOutFn,',',n,');" onclick="CKEDITOR.tools.callFunction(',m._.itemClickFn,',',n,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(v.icon?' style="background-image:url('+a.getUrl(v.icon)+');background-position:0 '+u+'px;"':'')+'></span></span>'+'<span class="cke_label">');if(t)o.push('<span class="cke_menuarrow">','<span>&#',v.editor.lang.dir=='rtl'?'9668':'9658',';</span>','</span>');o.push(s,'</span></a></span>');}}});i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div';(function(){var m=function(o,p){return o._.modes&&o._.modes[p||o.mode];},n;j.add('editingblock',{init:function(o){if(!o.config.editingBlock)return;o.on('themeSpace',function(p){if(p.data.space=='contents')p.data.html+='<br>';});o.on('themeLoaded',function(){o.fireOnce('editingBlockReady');});o.on('uiReady',function(){o.setMode(o.config.startupMode);});o.on('afterSetData',function(){if(!n){function p(){n=true;m(o).loadData(o.getData());n=false;};if(o.mode)p();else o.on('mode',function(){p();o.removeListener('mode',arguments.callee);});}});o.on('beforeGetData',function(){if(!n&&o.mode){n=true;o.setData(m(o).getData());n=false;}});o.on('getSnapshot',function(p){if(o.mode)p.data=m(o).getSnapshotData();});o.on('loadSnapshot',function(p){if(o.mode)m(o).loadSnapshotData(p.data);});o.on('mode',function(p){p.removeListener();b.webkit&&o.container.on('focus',function(){o.focus();});if(o.config.startupFocus)o.focus();setTimeout(function(){o.fireOnce('instanceReady');a.fire('instanceReady',null,o);},0);});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(o,p){p.name=o;(this._.modes||(this._.modes={}))[o]=p;};a.editor.prototype.setMode=function(o){var p,q=this.getThemeSpace('contents'),r=this.checkDirty();if(this.mode){if(o==this.mode)return;this.fire('beforeModeUnload');var s=m(this);p=s.getData();s.unload(q);this.mode='';}q.setHtml('');var t=m(this,o);if(!t)throw '[CKEDITOR.editor.setMode] Unknown mode "'+o+'".';if(!r)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});t.load(q,typeof p!='string'?this.getData():p);};a.editor.prototype.focus=function(){var o=m(this);if(o)o.focus();};})();i.startupMode='wysiwyg';i.editingBlock=true;(function(){function m(){var w=this;
|
||||
try{var t=w.getSelection();if(!t||!t.document.getWindow().$)return;var u=t.getStartElement(),v=new d.elementPath(u);if(!v.compare(w._.selectionPreviousPath)){w._.selectionPreviousPath=v;w.fire('selectionChange',{selection:t,path:v,element:u});}}catch(x){}};var n,o;function p(){o=true;if(n)return;q.call(this);n=e.setTimeout(q,200,this);};function q(){n=null;if(o){e.setTimeout(m,0,this);o=false;}};var r={modes:{wysiwyg:1,source:1},exec:function(t){switch(t.mode){case 'wysiwyg':t.document.$.execCommand('SelectAll',false,null);break;case 'source':var u=t.textarea.$;if(c)u.createTextRange().execCommand('SelectAll');else{u.selectionStart=0;u.selectionEnd=u.value.length;}u.focus();}},canUndo:false};j.add('selection',{init:function(t){t.on('contentDom',function(){var u=t.document,v=u.getBody(),w=u.getDocumentElement();if(c){var x,y,z=1;v.on('focusin',function(D){if(D.data.$.srcElement.nodeName!='BODY')return;if(x){var E=u.getCustomData('cke_locked_selection');if(z&&!E)try{x.select();}catch(F){}x=null;}});v.on('focus',function(){y=1;C();});v.on('beforedeactivate',function(D){if(D.data.$.toElement)return;y=0;z=1;});if(c&&b.version<8)t.on('blur',function(D){try{t.document&&t.document.$.selection.empty();}catch(E){}});w.on('mousedown',function(){z=0;});w.on('mouseup',function(){z=1;});if(c&&(b.ie7Compat||b.version<8||b.quirks))w.on('click',function(D){if(D.data.getTarget().getName()=='html')t.getSelection().getRanges()[0].select();});var A;v.on('mousedown',function(D){if(D.data.$.button==2){var E=t.document.$.selection;if(E.type=='None')A=t.window.getScrollPosition();}B();});v.on('mouseup',function(D){if(D.data.$.button==2&&A){t.document.$.documentElement.scrollLeft=A.x;t.document.$.documentElement.scrollTop=A.y;}A=null;y=1;setTimeout(function(){C(true);},0);});v.on('keydown',B);v.on('keyup',function(){y=1;C();});u.on('selectionchange',C);function B(){y=0;};function C(D){if(y){var E=t.document,F=t.getSelection(),G=F&&F.getNative();if(D&&G&&G.type=='None')if(!E.$.queryCommandEnabled('InsertImage')){e.setTimeout(C,50,this,true);return;}var H;if(G&&G.type&&G.type!='Control'&&(H=G.createRange())&&(H=H.parentElement())&&(H=H.nodeName)&&H.toLowerCase() in {input:1,textarea:1})return;x=G&&F.getRanges()[0];p.call(t);}};}else{u.on('mouseup',p,t);u.on('keyup',p,t);}});t.addCommand('selectAll',r);t.ui.addButton('SelectAll',{label:t.lang.selectAll,command:'selectAll'});t.selectionChange=p;}});a.editor.prototype.getSelection=function(){return this.document&&this.document.getSelection();
|
||||
};a.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath;};g.prototype.getSelection=function(){var t=new d.selection(this);return!t||t.isInvalid?null:t;};a.SELECTION_NONE=1;a.SELECTION_TEXT=2;a.SELECTION_ELEMENT=3;d.selection=function(t){var w=this;var u=t.getCustomData('cke_locked_selection');if(u)return u;w.document=t;w.isLocked=0;w._={cache:{}};if(c){var v=w.getNative().createRange();if(!v||v.item&&v.item(0).ownerDocument!=w.document.$||v.parentElement&&v.parentElement().ownerDocument!=w.document.$)w.isInvalid=true;}return w;};var s={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,th:1,thead:1,tfoot:1};d.selection.prototype={getNative:c?function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);}:function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());},getType:c?function(){var t=this._.cache;if(t.type)return t.type;var u=1;try{var v=this.getNative(),w=v.type;if(w=='Text')u=2;if(w=='Control')u=3;if(v.createRange().parentElement)u=2;}catch(x){}return t.type=u;}:function(){var t=this._.cache;if(t.type)return t.type;var u=2,v=this.getNative();if(!v)u=1;else if(v.rangeCount==1){var w=v.getRangeAt(0),x=w.startContainer;if(x==w.endContainer&&x.nodeType==1&&w.endOffset-w.startOffset==1&&s[x.childNodes[w.startOffset].nodeName.toLowerCase()])u=3;}return t.type=u;},getRanges:(function(){var t=c?(function(){var u=function(v,w){v=v.duplicate();v.collapse(w);var x=v.parentElement(),y=x.childNodes,z;for(var A=0;A<y.length;A++){var B=y[A];if(B.nodeType==1){z=v.duplicate();z.moveToElementText(B);var C=z.compareEndPoints('StartToStart',v),D=z.compareEndPoints('EndToStart',v);z.collapse();if(C>0)break;else if(!C||D==1&&C==-1)return{container:x,offset:A};else if(!D)return{container:x,offset:A+1};z=null;}}if(!z){z=v.duplicate();z.moveToElementText(x);z.collapse(false);}z.setEndPoint('StartToStart',v);var E=z.text.replace(/(\r\n|\r)/g,'\n').length;try{while(E>0)E-=y[--A].nodeValue.length;}catch(F){E=0;}if(E===0)return{container:x,offset:A};else return{container:y[A],offset:-E};};return function(){var F=this;var v=F.getNative(),w=v&&v.createRange(),x=F.getType(),y;if(!v)return[];if(x==2){y=new d.range(F.document);var z=u(w,true);y.setStart(new d.node(z.container),z.offset);z=u(w);y.setEnd(new d.node(z.container),z.offset);if(y.endContainer.getPosition(y.startContainer)&4&&y.endOffset<=y.startContainer.getIndex())y.collapse();
|
||||
return[y];}else if(x==3){var A=[];for(var B=0;B<w.length;B++){var C=w.item(B),D=C.parentNode,E=0;y=new d.range(F.document);for(;E<D.childNodes.length&&D.childNodes[E]!=C;E++){}y.setStart(new d.node(D),E);y.setEnd(new d.node(D),E+1);A.push(y);}return A;}return[];};})():function(){var u=[],v,w=this.document,x=this.getNative();if(!x)return u;if(!x.rangeCount){v=new d.range(w);v.moveToElementEditStart(w.getBody());u.push(v);}for(var y=0;y<x.rangeCount;y++){var z=x.getRangeAt(y);v=new d.range(w);v.setStart(new d.node(z.startContainer),z.startOffset);v.setEnd(new d.node(z.endContainer),z.endOffset);u.push(v);}return u;};return function(u){var v=this._.cache;if(v.ranges&&!u)return v.ranges;else if(!v.ranges)v.ranges=new d.rangeList(t.call(this));if(u){var w=v.ranges;for(var x=0;x<w.length;x++){var y=w[x],z=y.getCommonAncestor();if(z.isReadOnly())w.splice(x,1);if(y.collapsed)continue;var A=y.startContainer,B=y.endContainer,C=y.startOffset,D=y.endOffset,E=y.clone(),F;if(F=A.isReadOnly())y.setStartAfter(F);if(A&&A.type==3)if(C>=A.getLength())E.setStartAfter(A);else E.setStartBefore(A);if(B&&B.type==3)if(!D)E.setEndBefore(B);else E.setEndAfter(B);var G=new d.walker(E);G.evaluator=function(H){if(H.type==1&&H.getAttribute('contenteditable')=='false'){var I=y.clone();y.setEndBefore(H);if(y.collapsed)w.splice(x--,1);if(!(H.getPosition(E.endContainer)&16)){I.setStartAfter(H);if(!I.collapsed)w.splice(x+1,0,I);}return true;}return false;};G.next();}}return v.ranges;};})(),getStartElement:function(){var A=this;var t=A._.cache;if(t.startElement!==undefined)return t.startElement;var u,v=A.getNative();switch(A.getType()){case 3:return A.getSelectedElement();case 2:var w=A.getRanges()[0];if(w){if(!w.collapsed){w.optimize();while(1){var x=w.startContainer,y=w.startOffset;if(y==(x.getChildCount?x.getChildCount():x.getLength())&&!x.isBlockBoundary())w.setStartAfter(x);else break;}u=w.startContainer;if(u.type!=1)return u.getParent();u=u.getChild(w.startOffset);if(!u||u.type!=1)u=w.startContainer;else{var z=u.getFirst();while(z&&z.type==1){u=z;z=z.getFirst();}}}else{u=w.startContainer;if(u.type!=1)u=u.getParent();}u=u.$;}}return t.startElement=u?new h(u):null;},getSelectedElement:function(){var t=this._.cache;if(t.selectedElement!==undefined)return t.selectedElement;var u=this,v=e.tryThese(function(){return u.getNative().createRange().item(0);},function(){var w=u.getRanges()[0],x,y;for(var z=2;z&&!((x=w.getEnclosedNode())&&x.type==1&&s[x.getName()]&&(y=x));z--)w.shrink(1);return y.$;});
|
||||
return t.selectedElement=v?new h(v):null;},lock:function(){var t=this;t.getRanges();t.getStartElement();t.getSelectedElement();t._.cache.nativeSel={};t.isLocked=1;t.document.setCustomData('cke_locked_selection',t);},unlock:function(t){var y=this;var u=y.document,v=u.getCustomData('cke_locked_selection');if(v){u.setCustomData('cke_locked_selection',null);if(t){var w=v.getSelectedElement(),x=!w&&v.getRanges();y.isLocked=0;y.reset();u.getBody().focus();if(w)y.selectElement(w);else y.selectRanges(x);}}if(!v||!t){y.isLocked=0;y.reset();}},reset:function(){this._.cache={};},selectElement:function(t){var w=this;if(w.isLocked){var u=new d.range(w.document);u.setStartBefore(t);u.setEndAfter(t);w._.cache.selectedElement=t;w._.cache.startElement=t;w._.cache.ranges=new d.rangeList(u);w._.cache.type=3;return;}if(c){w.getNative().empty();try{u=w.document.$.body.createControlRange();u.addElement(t.$);u.select();}catch(x){u=w.document.$.body.createTextRange();u.moveToElementText(t.$);u.select();}finally{w.document.fire('selectionchange');}w.reset();}else{u=w.document.$.createRange();u.selectNode(t.$);var v=w.getNative();v.removeAllRanges();v.addRange(u);w.reset();}},selectRanges:function(t){var D=this;if(D.isLocked){D._.cache.selectedElement=null;D._.cache.startElement=t[0]&&t[0].getTouchedStartNode();D._.cache.ranges=new d.rangeList(t);D._.cache.type=2;return;}if(c){if(t.length>1){var u=t[t.length-1];t[0].setEnd(u.endContainer,u.endOffset);t.length=1;}if(t[0])t[0].select();D.reset();}else{var v=D.getNative();if(t.length)v.removeAllRanges();for(var w=0;w<t.length;w++){if(w<t.length-1){var x=t[w],y=t[w+1],z=x.clone();z.setStart(x.endContainer,x.endOffset);z.setEnd(y.startContainer,y.startOffset);if(!z.collapsed){z.shrink(1,true);if(z.getCommonAncestor().isReadOnly()){y.setStart(x.startContainer,x.startOffset);t.splice(w--,1);continue;}}}var A=t[w],B=D.document.$.createRange(),C=A.startContainer;if(A.collapsed&&(b.opera||b.gecko&&b.version<10900)&&C.type==1&&!C.getChildCount())C.appendText('');B.setStart(C.$,A.startOffset);B.setEnd(A.endContainer.$,A.endOffset);v.addRange(B);}D.reset();}},createBookmarks:function(t){return this.getRanges().createBookmarks(t);},createBookmarks2:function(t){return this.getRanges().createBookmarks2(t);},selectBookmarks:function(t){var u=[];for(var v=0;v<t.length;v++){var w=new d.range(this.document);w.moveToBookmark(t[v]);u.push(w);}this.selectRanges(u);return this;},getCommonAncestor:function(){var t=this.getRanges(),u=t[0].startContainer,v=t[t.length-1].endContainer;
|
||||
return u.getCommonAncestor(v);},scrollIntoView:function(){var t=this.getStartElement();t.scrollIntoView();}};})();(function(){var m=d.walker.whitespaces(true),n=/\ufeff|\u00a0/,o={table:1,tbody:1,tr:1};d.range.prototype.select=c?function(p){var z=this;var q=z.collapsed,r,s;if(z.startContainer.type==1&&z.startContainer.getName() in o||z.endContainer.type==1&&z.endContainer.getName() in o)z.shrink(1,true);var t=z.createBookmark(),u=t.startNode,v;if(!q)v=t.endNode;var w=z.document.$.body.createTextRange();w.moveToElementText(u.$);w.moveStart('character',1);if(v){var x=z.document.$.body.createTextRange();x.moveToElementText(v.$);w.setEndPoint('EndToEnd',x);w.moveEnd('character',-1);}else{var y=u.getNext(m);r=!(y&&y.getText&&y.getText().match(n))&&(p||!u.hasPrevious()||u.getPrevious().is&&u.getPrevious().is('br'));s=z.document.createElement('span');s.setHtml('');s.insertBefore(u);if(r)z.document.createText('\ufeff').insertBefore(u);}z.setStartBefore(u);u.remove();if(q){if(r){w.moveStart('character',-1);w.select();z.document.$.selection.clear();}else w.select();z.moveToPosition(s,3);s.remove();}else{z.setEndBefore(v);v.remove();w.select();}z.document.fire('selectionchange');}:function(){var s=this;var p=s.startContainer;if(s.collapsed&&p.type==1&&!p.getChildCount())p.append(new d.text(''));var q=s.document.$.createRange();q.setStart(p.$,s.startOffset);try{q.setEnd(s.endContainer.$,s.endOffset);}catch(t){if(t.toString().indexOf('NS_ERROR_ILLEGAL_VALUE')>=0){s.collapse(true);q.setEnd(s.endContainer.$,s.endOffset);}else throw t;}var r=s.document.getSelection().getNative();r.removeAllRanges();r.addRange(q);};})();(function(){var m={elements:{$:function(n){var o=n.attributes,p=o&&o._cke_realelement,q=p&&new a.htmlParser.fragment.fromHtml(decodeURIComponent(p)),r=q&&q.children[0];if(r&&n.attributes._cke_resizable){var s=n.attributes.style;if(s){var t=/(?:^|\s)width\s*:\s*(\d+)/i.exec(s),u=t&&t[1];t=/(?:^|\s)height\s*:\s*(\d+)/i.exec(s);var v=t&&t[1];if(u)r.attributes.width=u;if(v)r.attributes.height=v;}}return r;}}};j.add('fakeobjects',{requires:['htmlwriter'],afterInit:function(n){var o=n.dataProcessor,p=o&&o.htmlFilter;if(p)p.addRules(m);}});})();a.editor.prototype.createFakeElement=function(m,n,o,p){var q=this.lang.fakeobjects,r={'class':n,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(m.getOuterHtml()),_cke_real_node_type:m.type,alt:q[o]||q.unknown,align:m.getAttribute('align')||''};if(o)r._cke_real_element_type=o;if(p)r._cke_resizable=p;
|
||||
return this.document.createElement('img',{attributes:r});};a.editor.prototype.createFakeParserElement=function(m,n,o,p){var q=this.lang.fakeobjects,r,s=new a.htmlParser.basicWriter();m.writeHtml(s);r=s.getHtml();var t={'class':n,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(r),_cke_real_node_type:m.type,alt:q[o]||q.unknown,align:m.attributes.align||''};if(o)t._cke_real_element_type=o;if(p)t._cke_resizable=p;return new a.htmlParser.element('img',t);};a.editor.prototype.restoreRealElement=function(m){if(m.getAttribute('_cke_real_node_type')!=1)return null;return h.createFromHtml(decodeURIComponent(m.getAttribute('_cke_realelement')),this.document);};j.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(m){m.ui.addHandler(3,k.richCombo.handler);}});a.UI_RICHCOMBO=3;k.richCombo=e.createClass({$:function(m){var o=this;e.extend(o,m,{title:m.label,modes:{wysiwyg:1}});var n=o.panel||{};delete o.panel;o.id=e.getNextNumber();o.document=n&&n.parent&&n.parent.getDocument()||a.document;n.className=(n.className||'')+' cke_rcombopanel';n.block={multiSelect:n.multiSelect,attributes:n.attributes};o._={panelDefinition:n,items:{},state:2};},statics:{handler:{create:function(m){return new k.richCombo(m);}}},proto:{renderHtml:function(m){var n=[];this.render(m,n);return n.join('');},render:function(m,n){var o=b,p='cke_'+this.id,q=e.addFunction(function(t){var w=this;var u=w._;if(u.state==0)return;w.createPanel(m);if(u.on){u.panel.hide();return;}if(!u.committed){u.list.commit();u.committed=1;}var v=w.getValue();if(v)u.list.mark(v);else u.list.unmarkAll();u.panel.showBlock(w.id,new h(t),4);},this),r={id:p,combo:this,focus:function(){var t=a.document.getById(p).getChild(1);t.focus();},clickFn:q};m.on('mode',function(){this.setState(this.modes[m.mode]?2:0);},this);var s=e.addFunction(function(t,u){t=new d.event(t);var v=t.getKeystroke();switch(v){case 13:case 32:case 40:e.callFunction(q,u);break;default:r.onkey(r,v);}t.preventDefault();});r.keyDownFn=s;n.push('<span class="cke_rcombo">','<span id=',p);if(this.className)n.push(' class="',this.className,' cke_off"');n.push('>','<span id="'+p+'_label" class=cke_label>',this.label,'</span>','<a hidefocus=true title="',this.title,'" tabindex="-1"',o.gecko&&o.version>=10900&&!o.hc?'':" href=\"javascript:void('"+this.label+"')\"",' role="button" aria-labelledby="',p,'_label" aria-describedby="',p,'_text" aria-haspopup="true"');if(b.opera||b.gecko&&b.mac)n.push(' onkeypress="return false;"');
|
||||
if(b.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');n.push(' onkeydown="CKEDITOR.tools.callFunction( ',s,', event, this );" onclick="CKEDITOR.tools.callFunction(',q,', this); return false;"><span><span id="'+p+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton>'+(b.hc?'<span>▼</span>':'')+'</span>'+'</a>'+'</span>'+'</span>');if(this.onRender)this.onRender();return r;},createPanel:function(m){if(this._.panel)return;var n=this._.panelDefinition,o=this._.panelDefinition.block,p=n.parent||a.document.getBody(),q=new k.floatPanel(m,p,n),r=q.addListBlock(this.id,o),s=this;q.onShow=function(){if(s.className)this.element.getFirst().addClass(s.className+'_panel');s.setState(1);r.focus(!s.multiSelect&&s.getValue());s._.on=1;if(s.onOpen)s.onOpen();};q.onHide=function(t){if(s.className)this.element.getFirst().removeClass(s.className+'_panel');s.setState(2);s._.on=0;if(!t&&s.onClose)s.onClose();};q.onEscape=function(){q.hide();s.document.getById('cke_'+s.id).getFirst().getNext().focus();};r.onClick=function(t,u){s.document.getWindow().focus();if(s.onClick)s.onClick.call(s,t,u);if(u)s.setValue(t,s._.items[t]);else s.setValue('');q.hide();};this._.panel=q;this._.list=r;q.getBlock(this.id).onHide=function(){s._.on=0;s.setState(2);};if(this.init)this.init();},setValue:function(m,n){var p=this;p._.value=m;var o=p.document.getById('cke_'+p.id+'_text');if(!(m||n)){n=p.label;o.addClass('cke_inline_label');}else o.removeClass('cke_inline_label');o.setHtml(typeof n!='undefined'?n:m);},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(m){this._.list.mark(m);},hideItem:function(m){this._.list.hideItem(m);},hideGroup:function(m){this._.list.hideGroup(m);},showAll:function(){this._.list.showAll();},add:function(m,n,o){this._.items[m]=o||m;this._.list.add(m,n,o);},startGroup:function(m){this._.list.startGroup(m);},commit:function(){this._.list.commit();},setState:function(m){var n=this;if(n._.state==m)return;n.document.getById('cke_'+n.id).setState(m);n._.state=m;}}});k.prototype.addRichCombo=function(m,n){this.add(m,3,n);};j.add('htmlwriter');a.htmlWriter=e.createClass({base:a.htmlParser.basicWriter,$:function(){var o=this;o.base();o.indentationChars='\t';o.selfClosingEnd=' />';o.lineBreakChars='\n';o.forceSimpleAmpersand=0;o.sortAttributes=1;o._.indent=0;o._.indentation='';o._.inPre=0;o._.rules={};var m=f;for(var n in e.extend({},m.$nonBodyContent,m.$block,m.$listItem,m.$tableContent))o.setRules(n,{indent:1,breakBeforeOpen:1,breakAfterOpen:1,breakBeforeClose:!m[n]['#'],breakAfterClose:1});
|
||||
o.setRules('br',{breakAfterOpen:1});o.setRules('title',{indent:0,breakAfterOpen:0});o.setRules('style',{indent:0,breakBeforeClose:1});o.setRules('pre',{indent:0});},proto:{openTag:function(m,n){var p=this;var o=p._.rules[m];if(p._.indent)p.indentation();else if(o&&o.breakBeforeOpen){p.lineBreak();p.indentation();}p._.output.push('<',m);},openTagClose:function(m,n){var p=this;var o=p._.rules[m];if(n)p._.output.push(p.selfClosingEnd);else{p._.output.push('>');if(o&&o.indent)p._.indentation+=p.indentationChars;}if(o&&o.breakAfterOpen)p.lineBreak();m=='pre'&&(p._.inPre=1);},attribute:function(m,n){if(typeof n=='string'){this.forceSimpleAmpersand&&(n=n.replace(/&/g,'&'));n=e.htmlEncodeAttr(n);}this._.output.push(' ',m,'="',n,'"');},closeTag:function(m){var o=this;var n=o._.rules[m];if(n&&n.indent)o._.indentation=o._.indentation.substr(o.indentationChars.length);if(o._.indent)o.indentation();else if(n&&n.breakBeforeClose){o.lineBreak();o.indentation();}o._.output.push('</',m,'>');m=='pre'&&(o._.inPre=0);if(n&&n.breakAfterClose)o.lineBreak();},text:function(m){var n=this;if(n._.indent){n.indentation();!n._.inPre&&(m=e.ltrim(m));}n._.output.push(m);},comment:function(m){if(this._.indent)this.indentation();this._.output.push('<!--',m,'-->');},lineBreak:function(){var m=this;if(!m._.inPre&&m._.output.length>0)m._.output.push(m.lineBreakChars);m._.indent=1;},indentation:function(){var m=this;if(!m._.inPre)m._.output.push(m._.indentation);m._.indent=0;},setRules:function(m,n){var o=this._.rules[m];if(o)e.extend(o,n,true);else this._.rules[m]=n;}}});j.add('menubutton',{requires:['button','contextmenu'],beforeInit:function(m){m.ui.addHandler(5,k.menuButton.handler);}});a.UI_MENUBUTTON=5;(function(){var m=function(n){var o=this._;if(o.state===0)return;o.previousState=o.state;var p=o.menu;if(!p){p=o.menu=new j.contextMenu(n);p.definition.panel.attributes['aria-label']=n.lang.common.options;p.onHide=e.bind(function(){this.setState(o.previousState);},this);if(this.onMenu)p.addListener(this.onMenu);}if(o.on){p.hide();return;}this.setState(1);p.show(a.document.getById(this._.id),4);};k.menuButton=e.createClass({base:k.button,$:function(n){var o=n.panel;delete n.panel;this.base(n);this.hasArrow=true;this.click=m;},statics:{handler:{create:function(n){return new k.menuButton(n);}}}});})();j.add('dialogui');(function(){var m=function(u){var x=this;x._||(x._={});x._['default']=x._.initValue=u['default']||'';x._.required=u.required||false;var v=[x._];for(var w=1;w<arguments.length;
|
||||
w++)v.push(arguments[w]);v.push(true);e.extend.apply(e,v);return x._;},n={build:function(u,v,w){return new k.dialog.textInput(u,v,w);}},o={build:function(u,v,w){return new k.dialog[v.type](u,v,w);}},p={build:function(u,v,w){var x=v.children,y,z=[],A=[];for(var B=0;B<x.length&&(y=x[B]);B++){var C=[];z.push(C);A.push(a.dialog._.uiElementBuilders[y.type].build(u,y,C));}return new k.dialog[v.type](u,A,z,w,v);}},q={isChanged:function(){return this.getValue()!=this.getInitValue();},reset:function(u){this.setValue(this.getInitValue(),u);},setInitValue:function(){this._.initValue=this.getValue();},resetInitValue:function(){this._.initValue=this._['default'];},getInitValue:function(){return this._.initValue;}},r=e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onChange:function(u,v){if(!this._.domOnChangeRegistered){u.on('load',function(){this.getInputElement().on('change',function(){if(!u.parts.dialog.isVisible())return;this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',v);}},true),s=/^on([A-Z]\w+)/,t=function(u){for(var v in u){if(s.test(v)||v=='title'||v=='type')delete u[v];}return u;};e.extend(k.dialog,{labeledElement:function(u,v,w,x){if(arguments.length<4)return;var y=m.call(this,v);y.labelId=e.getNextId()+'_label';var z=this._.children=[],A=function(){var B=[],C=v.required?' cke_required':'';if(v.labelLayout!='horizontal')B.push('<label class="cke_dialog_ui_labeled_label'+C+'" ',' id="'+y.labelId+'"',' for="'+y.inputId+'"',' style="'+v.labelStyle+'">',v.label,'</label>','<div class="cke_dialog_ui_labeled_content" role="presentation">',x.call(this,u,v),'</div>');else{var D={type:'hbox',widths:v.widths,padding:0,children:[{type:'html',html:'<label class="cke_dialog_ui_labeled_label'+C+'"'+' id="'+y.labelId+'"'+' for="'+y.inputId+'"'+' style="'+v.labelStyle+'">'+e.htmlEncode(v.label)+'</span>'},{type:'html',html:'<span class="cke_dialog_ui_labeled_content">'+x.call(this,u,v)+'</span>'}]};a.dialog._.uiElementBuilders.hbox.build(u,D,B);}return B.join('');};k.dialog.uiElement.call(this,u,v,w,'div',null,{role:'presentation'},A);},textInput:function(u,v,w){if(arguments.length<3)return;m.call(this,v);var x=this._.inputId=e.getNextId()+'_textInput',y={'class':'cke_dialog_ui_input_'+v.type,id:x,type:'text'},z;if(v.validate)this.validate=v.validate;if(v.maxLength)y.maxlength=v.maxLength;if(v.size)y.size=v.size;if(v.controlStyle)y.style=v.controlStyle;var A=this,B=false;u.on('load',function(){A.getInputElement().on('keydown',function(D){if(D.data.getKeystroke()==13)B=true;
|
||||
});A.getInputElement().on('keyup',function(D){if(D.data.getKeystroke()==13&&B){u.getButton('ok')&&setTimeout(function(){u.getButton('ok').click();},0);B=false;}},null,null,1000);});var C=function(){var D=['<div class="cke_dialog_ui_input_',v.type,'" role="presentation"'];if(v.width)D.push('style="width:'+v.width+'" ');D.push('><input ');y['aria-labelledby']=this._.labelId;this._.required&&(y['aria-required']=this._.required);for(var E in y)D.push(E+'="'+y[E]+'" ');D.push(' /></div>');return D.join('');};k.dialog.labeledElement.call(this,u,v,w,C);},textarea:function(u,v,w){if(arguments.length<3)return;m.call(this,v);var x=this,y=this._.inputId=e.getNextId()+'_textarea',z={};if(v.validate)this.validate=v.validate;z.rows=v.rows||5;z.cols=v.cols||20;var A=function(){z['aria-labelledby']=this._.labelId;this._.required&&(z['aria-required']=this._.required);var B=['<div class="cke_dialog_ui_input_textarea" role="presentation"><textarea class="cke_dialog_ui_input_textarea" id="',y,'" '];for(var C in z)B.push(C+'="'+e.htmlEncode(z[C])+'" ');B.push('>',e.htmlEncode(x._['default']),'</textarea></div>');return B.join('');};k.dialog.labeledElement.call(this,u,v,w,A);},checkbox:function(u,v,w){if(arguments.length<3)return;var x=m.call(this,v,{'default':!!v['default']});if(v.validate)this.validate=v.validate;var y=function(){var z=e.extend({},v,{id:v.id?v.id+'_checkbox':e.getNextId()+'_checkbox'},true),A=[],B=e.getNextId()+'_label',C={'class':'cke_dialog_ui_checkbox_input',type:'checkbox','aria-labelledby':B};t(z);if(v['default'])C.checked='checked';if(typeof z.controlStyle!='undefined')z.style=z.controlStyle;x.checkbox=new k.dialog.uiElement(u,z,A,'input',null,C);A.push(' <label id="',B,'" for="',C.id,'">',e.htmlEncode(v.label),'</label>');return A.join('');};k.dialog.uiElement.call(this,u,v,w,'span',null,null,y);},radio:function(u,v,w){if(arguments.length<3)return;m.call(this,v);if(!this._['default'])this._['default']=this._.initValue=v.items[0][1];if(v.validate)this.validate=v.valdiate;var x=[],y=this,z=function(){var A=[],B=[],C={'class':'cke_dialog_ui_radio_item','aria-labelledby':this._.labelId},D=v.id?v.id+'_radio':e.getNextId()+'_radio';for(var E=0;E<v.items.length;E++){var F=v.items[E],G=F[2]!==undefined?F[2]:F[0],H=F[1]!==undefined?F[1]:F[0],I=e.getNextId()+'_radio_input',J=I+'_label',K=e.extend({},v,{id:I,title:null,type:null},true),L=e.extend({},K,{title:G},true),M={type:'radio','class':'cke_dialog_ui_radio_input',name:D,value:H,'aria-labelledby':J},N=[];if(y._['default']==H)M.checked='checked';
|
||||
t(K);t(L);if(typeof K.controlStyle!='undefined')K.style=K.controlStyle;x.push(new k.dialog.uiElement(u,K,N,'input',null,M));N.push(' ');new k.dialog.uiElement(u,L,N,'label',null,{id:J,'for':M.id},F[0]);A.push(N.join(''));}new k.dialog.hbox(u,[],A,B);return B.join('');};k.dialog.labeledElement.call(this,u,v,w,z);this._.children=x;},button:function(u,v,w){if(!arguments.length)return;if(typeof v=='function')v=v(u.getParentEditor());m.call(this,v,{disabled:v.disabled||false});a.event.implementOn(this);var x=this;u.on('load',function(A){var B=this.getElement();(function(){B.on('click',function(C){x.fire('click',{dialog:x.getDialog()});C.data.preventDefault();});B.on('keydown',function(C){if(C.data.getKeystroke() in {32:1}){x.click();C.data.preventDefault();}});})();B.unselectable();},this);var y=e.extend({},v);delete y.style;var z=e.getNextId()+'_label';k.dialog.uiElement.call(this,u,y,w,'a',null,{style:v.style,href:'javascript:void(0)',title:v.label,hidefocus:'true','class':v['class'],role:'button','aria-labelledby':z},'<span id="'+z+'" class="cke_dialog_ui_button">'+e.htmlEncode(v.label)+'</span>');},select:function(u,v,w){if(arguments.length<3)return;var x=m.call(this,v);if(v.validate)this.validate=v.validate;x.inputId=e.getNextId()+'_select';var y=function(){var z=e.extend({},v,{id:v.id?v.id+'_select':e.getNextId()+'_select'},true),A=[],B=[],C={id:x.inputId,'class':'cke_dialog_ui_input_select','aria-labelledby':this._.labelId};if(v.size!=undefined)C.size=v.size;if(v.multiple!=undefined)C.multiple=v.multiple;t(z);for(var D=0,E;D<v.items.length&&(E=v.items[D]);D++)B.push('<option value="',e.htmlEncode(E[1]!==undefined?E[1]:E[0]),'" /> ',e.htmlEncode(E[0]));if(typeof z.controlStyle!='undefined')z.style=z.controlStyle;x.select=new k.dialog.uiElement(u,z,A,'select',null,C,B.join(''));return A.join('');};k.dialog.labeledElement.call(this,u,v,w,y);},file:function(u,v,w){if(arguments.length<3)return;if(v['default']===undefined)v['default']='';var x=e.extend(m.call(this,v),{definition:v,buttons:[]});if(v.validate)this.validate=v.validate;var y=function(){x.frameId=e.getNextId()+'_fileInput';var z=b.isCustomDomain(),A=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="',x.frameId,'" title="',v.label,'" src="javascript:void('];A.push(z?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');A.push(')"></iframe>');return A.join('');};u.on('load',function(){var z=a.document.getById(x.frameId),A=z.getParent();
|
||||
A.addClass('cke_dialog_ui_input_file');});k.dialog.labeledElement.call(this,u,v,w,y);},fileButton:function(u,v,w){if(arguments.length<3)return;var x=m.call(this,v),y=this;if(v.validate)this.validate=v.validate;var z=e.extend({},v),A=z.onClick;z.className=(z.className?z.className+' ':'')+'cke_dialog_ui_button';z.onClick=function(B){var C=v['for'];if(!A||A.call(this,B)!==false){u.getContentElement(C[0],C[1]).submit();this.disable();}};u.on('load',function(){u.getContentElement(v['for'][0],v['for'][1])._.buttons.push(y);});k.dialog.button.call(this,u,z,w);},html:(function(){var u=/^\s*<[\w:]+\s+([^>]*)?>/,v=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,w=/\/$/;return function(x,y,z){if(arguments.length<3)return;var A=[],B,C=y.html,D,E;if(C.charAt(0)!='<')C='<span>'+C+'</span>';var F=y.focus;if(F){var G=this.focus;this.focus=function(){G.call(this);typeof F=='function'&&F.call(this);this.fire('focus');};if(y.isFocusable){var H=this.isFocusable;this.isFocusable=H;}this.keyboardFocusable=true;}k.dialog.uiElement.call(this,x,y,A,'span',null,null,'');B=A.join('');D=B.match(u);E=C.match(v)||['','',''];if(w.test(E[1])){E[1]=E[1].slice(0,-1);E[2]='/'+E[2];}z.push([E[1],' ',D[1]||'',E[2]].join(''));};})(),fieldset:function(u,v,w,x,y){var z=y.label,A=function(){var B=[];z&&B.push('<legend>'+z+'</legend>');for(var C=0;C<w.length;C++)B.push(w[C]);return B.join('');};this._={children:v};k.dialog.uiElement.call(this,u,y,x,'fieldset',null,null,A);}},true);k.dialog.html.prototype=new k.dialog.uiElement();k.dialog.labeledElement.prototype=e.extend(new k.dialog.uiElement(),{setLabel:function(u){var v=a.document.getById(this._.labelId);if(v.getChildCount()<1)new d.text(u,a.document).appendTo(v);else v.getChild(0).$.nodeValue=u;return this;},getLabel:function(){var u=a.document.getById(this._.labelId);if(!u||u.getChildCount()<1)return '';else return u.getChild(0).getText();},eventProcessors:r},true);k.dialog.button.prototype=e.extend(new k.dialog.uiElement(),{click:function(){var u=this;if(!u._.disabled)return u.fire('click',{dialog:u._.dialog});u.getElement().$.blur();return false;},enable:function(){this._.disabled=false;var u=this.getElement();u&&u.removeClass('cke_disabled');},disable:function(){this._.disabled=true;this.getElement().addClass('cke_disabled');},isVisible:function(){return this.getElement().getFirst().isVisible();},isEnabled:function(){return!this._.disabled;},eventProcessors:e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onClick:function(u,v){this.on('click',v);
|
||||
}},true),accessKeyUp:function(){this.click();},accessKeyDown:function(){this.focus();},keyboardFocusable:true},true);k.dialog.textInput.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return a.document.getById(this._.inputId);},focus:function(){var u=this.selectParentTab();setTimeout(function(){var v=u.getInputElement();v&&v.$.focus();},0);},select:function(){var u=this.selectParentTab();setTimeout(function(){var v=u.getInputElement();if(v){v.$.focus();v.$.select();}},0);},accessKeyUp:function(){this.select();},setValue:function(u){!u&&(u='');return k.dialog.uiElement.prototype.setValue.apply(this,arguments);},keyboardFocusable:true},q,true);k.dialog.textarea.prototype=new k.dialog.textInput();k.dialog.select.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return this._.select.getElement();},add:function(u,v,w){var x=new h('option',this.getDialog().getParentEditor().document),y=this.getInputElement().$;x.$.text=u;x.$.value=v===undefined||v===null?u:v;if(w===undefined||w===null){if(c)y.add(x.$);else y.add(x.$,null);}else y.add(x.$,w);return this;},remove:function(u){var v=this.getInputElement().$;v.remove(u);return this;},clear:function(){var u=this.getInputElement().$;while(u.length>0)u.remove(0);return this;},keyboardFocusable:true},q,true);k.dialog.checkbox.prototype=e.extend(new k.dialog.uiElement(),{getInputElement:function(){return this._.checkbox.getElement();},setValue:function(u,v){this.getInputElement().$.checked=u;!v&&this.fire('change',{value:u});},getValue:function(){return this.getInputElement().$.checked;},accessKeyUp:function(){this.setValue(!this.getValue());},eventProcessors:{onChange:function(u,v){if(!c)return r.onChange.apply(this,arguments);else{u.on('load',function(){var w=this._.checkbox.getElement();w.on('propertychange',function(x){x=x.data.$;if(x.propertyName=='checked')this.fire('change',{value:w.$.checked});},this);},this);this.on('change',v);}return null;}},keyboardFocusable:true},q,true);k.dialog.radio.prototype=e.extend(new k.dialog.uiElement(),{setValue:function(u,v){var w=this._.children,x;for(var y=0;y<w.length&&(x=w[y]);y++)x.getElement().$.checked=x.getValue()==u;!v&&this.fire('change',{value:u});},getValue:function(){var u=this._.children;for(var v=0;v<u.length;v++){if(u[v].getElement().$.checked)return u[v].getValue();}return null;},accessKeyUp:function(){var u=this._.children,v;for(v=0;v<u.length;v++){if(u[v].getElement().$.checked){u[v].getElement().focus();return;
|
||||
}}u[0].getElement().focus();},eventProcessors:{onChange:function(u,v){if(!c)return r.onChange.apply(this,arguments);else{u.on('load',function(){var w=this._.children,x=this;for(var y=0;y<w.length;y++){var z=w[y].getElement();z.on('propertychange',function(A){A=A.data.$;if(A.propertyName=='checked'&&this.$.checked)x.fire('change',{value:this.getAttribute('value')});});}},this);this.on('change',v);}return null;}},keyboardFocusable:true},q,true);k.dialog.file.prototype=e.extend(new k.dialog.labeledElement(),q,{getInputElement:function(){var u=a.document.getById(this._.frameId).getFrameDocument();return u.$.forms.length>0?new h(u.$.forms[0].elements[0]):this.getElement();},submit:function(){this.getInputElement().getParent().$.submit();return this;},getAction:function(){return this.getInputElement().getParent().$.action;},registerEvents:function(u){var v=/^on([A-Z]\w+)/,w,x=function(z,A,B,C){z.on('formLoaded',function(){z.getInputElement().on(B,C,z);});};for(var y in u){if(!(w=y.match(v)))continue;if(this.eventProcessors[y])this.eventProcessors[y].call(this,this._.dialog,u[y]);else x(this,this._.dialog,w[1].toLowerCase(),u[y]);}return this;},reset:function(){var u=this._,v=a.document.getById(u.frameId),w=v.getFrameDocument(),x=u.definition,y=u.buttons,z=this.formLoadedNumber,A=this.formUnloadNumber,B=u.dialog._.editor.lang.dir,C=u.dialog._.editor.langCode;if(!z){z=this.formLoadedNumber=e.addFunction(function(){this.fire('formLoaded');},this);A=this.formUnloadNumber=e.addFunction(function(){this.getInputElement().clearCustomData();},this);this.getDialog()._.editor.on('destroy',function(){e.removeFunction(z);e.removeFunction(A);});}function D(){w.$.open();if(b.isCustomDomain())w.$.domain=document.domain;var E='';if(x.size)E=x.size-(c?7:0);w.$.write(['<html dir="'+B+'" lang="'+C+'"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" dir="'+B+'" lang="'+C+'" action="',e.htmlEncode(x.action),'">','<input type="file" name="',e.htmlEncode(x.id||'cke_upload'),'" size="',e.htmlEncode(E>0?E:''),'" />','</form>','</body></html>','<script>window.parent.CKEDITOR.tools.callFunction('+z+');','window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction('+A+')}</script>'].join(''));w.$.close();for(var F=0;F<y.length;F++)y[F].enable();};if(b.gecko)setTimeout(D,500);else D();},getValue:function(){return this.getInputElement().$.value;},setInitValue:function(){this._.initValue='';
|
||||
},eventProcessors:{onChange:function(u,v){if(!this._.domOnChangeRegistered){this.on('formLoaded',function(){this.getInputElement().on('change',function(){this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',v);}},keyboardFocusable:true},true);k.dialog.fileButton.prototype=new k.dialog.button();k.dialog.fieldset.prototype=e.clone(k.dialog.hbox.prototype);a.dialog.addUIElement('text',n);a.dialog.addUIElement('password',n);a.dialog.addUIElement('textarea',o);a.dialog.addUIElement('checkbox',o);a.dialog.addUIElement('radio',o);a.dialog.addUIElement('button',o);a.dialog.addUIElement('select',o);a.dialog.addUIElement('file',o);a.dialog.addUIElement('fileButton',o);a.dialog.addUIElement('html',o);a.dialog.addUIElement('fieldset',p);})();j.add('panel',{beforeInit:function(m){m.ui.addHandler(2,k.panel.handler);}});a.UI_PANEL=2;k.panel=function(m,n){var o=this;if(n)e.extend(o,n);e.extend(o,{className:'',css:[]});o.id=e.getNextId();o.document=m;o._={blocks:{}};};k.panel.handler={create:function(m){return new k.panel(m);}};k.panel.prototype={renderHtml:function(m){var n=[];this.render(m,n);return n.join('');},render:function(m,n){var p=this;var o=p.id;n.push('<div class="',m.skinClass,'" lang="',m.langCode,'" role="presentation" style="display:none;z-index:'+(m.config.baseFloatZIndex+1)+'">'+'<div'+' id=',o,' dir=',m.lang.dir,' role="presentation" class="cke_panel cke_',m.lang.dir);if(p.className)n.push(' ',p.className);n.push('">');if(p.forceIFrame||p.css.length){n.push('<iframe id="',o,'_frame" frameborder="0" role="application" src="javascript:void(');n.push(b.isCustomDomain()?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');n.push(')"></iframe>');}n.push('</div></div>');return o;},getHolderElement:function(){var m=this._.holder;if(!m){if(this.forceIFrame||this.css.length){var n=this.document.getById(this.id+'_frame'),o=n.getParent(),p=o.getAttribute('dir'),q=o.getParent().getAttribute('class'),r=o.getParent().getAttribute('lang'),s=n.getFrameDocument();s.$.open();if(b.isCustomDomain())s.$.domain=document.domain;var t=e.addFunction(e.bind(function(v){this.isLoaded=true;if(this.onLoad)this.onLoad();},this));s.$.write('<!DOCTYPE html><html dir="'+p+'" class="'+q+'_container" lang="'+r+'">'+'<head>'+'<style>.'+q+'_container{visibility:hidden}</style>'+'</head>'+'<body class="cke_'+p+' cke_panel_frame '+b.cssClass+'" style="margin:0;padding:0"'+' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction('+t+');"></body>'+e.buildStyleHtml(this.css)+'</html>');
|
||||
s.$.close();var u=s.getWindow();u.$.CKEDITOR=a;s.on('key'+(b.opera?'press':'down'),function(v){var y=this;var w=v.data.getKeystroke(),x=y.document.getById(y.id).getAttribute('dir');if(y._.onKeyDown&&y._.onKeyDown(w)===false){v.data.preventDefault();return;}if(w==27||w==(x=='rtl'?39:37))if(y.onEscape&&y.onEscape(w)===false)v.data.preventDefault();},this);m=s.getBody();m.unselectable();}else m=this.document.getById(this.id);this._.holder=m;}return m;},addBlock:function(m,n){var o=this;n=o._.blocks[m]=n instanceof k.panel.block?n:new k.panel.block(o.getHolderElement(),n);if(!o._.currentBlock)o.showBlock(m);return n;},getBlock:function(m){return this._.blocks[m];},showBlock:function(m){var n=this._.blocks,o=n[m],p=this._.currentBlock,q=this.forceIFrame?this.document.getById(this.id+'_frame'):this._.holder;q.getParent().getParent().disableContextMenu();if(p){q.removeAttributes(p.attributes);p.hide();}this._.currentBlock=o;q.setAttributes(o.attributes);a.fire('ariaWidget',q);o._.focusIndex=-1;this._.onKeyDown=o.onKeyDown&&e.bind(o.onKeyDown,o);o.onMark=function(r){q.setAttribute('aria-activedescendant',r.getId()+'_option');};o.onUnmark=function(){q.removeAttribute('aria-activedescendant');};o.show();return o;},destroy:function(){this.element&&this.element.remove();}};k.panel.block=e.createClass({$:function(m,n){var o=this;o.element=m.append(m.getDocument().createElement('div',{attributes:{tabIndex:-1,'class':'cke_panel_block',role:'presentation'},styles:{display:'none'}}));if(n)e.extend(o,n);if(!o.attributes.title)o.attributes.title=o.attributes['aria-label'];o.keys={};o._.focusIndex=-1;o.element.disableContextMenu();},_:{markItem:function(m){var p=this;if(m==-1)return;var n=p.element.getElementsByTag('a'),o=n.getItem(p._.focusIndex=m);if(b.webkit||b.opera)o.getDocument().getWindow().focus();o.focus();p.onMark&&p.onMark(o);}},proto:{show:function(){this.element.setStyle('display','');},hide:function(){var m=this;if(!m.onHide||m.onHide.call(m)!==true)m.element.setStyle('display','none');},onKeyDown:function(m){var r=this;var n=r.keys[m];switch(n){case 'next':var o=r._.focusIndex,p=r.element.getElementsByTag('a'),q;while(q=p.getItem(++o)){if(q.getAttribute('_cke_focus')&&q.$.offsetWidth){r._.focusIndex=o;q.focus();break;}}return false;case 'prev':o=r._.focusIndex;p=r.element.getElementsByTag('a');while(o>0&&(q=p.getItem(--o))){if(q.getAttribute('_cke_focus')&&q.$.offsetWidth){r._.focusIndex=o;q.focus();break;}}return false;case 'click':o=r._.focusIndex;q=o>=0&&r.element.getElementsByTag('a').getItem(o);
|
||||
if(q)q.$.click?q.$.click():q.$.onclick();return false;}return true;}}});j.add('listblock',{requires:['panel'],onLoad:function(){k.panel.prototype.addListBlock=function(m,n){return this.addBlock(m,new k.listBlock(this.getHolderElement(),n));};k.listBlock=e.createClass({base:k.panel.block,$:function(m,n){var q=this;n=n||{};var o=n.attributes||(n.attributes={});(q.multiSelect=!!n.multiSelect)&&(o['aria-multiselectable']=true);!o.role&&(o.role='listbox');q.base.apply(q,arguments);var p=q.keys;p[40]='next';p[9]='next';p[38]='prev';p[2000+9]='prev';p[32]='click';q._.pendingHtml=[];q._.items={};q._.groups={};},_:{close:function(){if(this._.started){this._.pendingHtml.push('</ul>');delete this._.started;}},getClick:function(){if(!this._.click)this._.click=e.addFunction(function(m){var o=this;var n=true;if(o.multiSelect)n=o.toggle(m);else o.mark(m);if(o.onClick)o.onClick(m,n);},this);return this._.click;}},proto:{add:function(m,n,o){var r=this;var p=r._.pendingHtml,q=e.getNextId();if(!r._.started){p.push('<ul role="presentation" class=cke_panel_list>');r._.started=1;r._.size=r._.size||0;}r._.items[m]=q;p.push('<li id=',q,' class=cke_panel_listItem><a id="',q,'_option" _cke_focus=1 hidefocus=true title="',o||m,'" href="javascript:void(\'',m,'\')" onclick="CKEDITOR.tools.callFunction(',r._.getClick(),",'",m,"'); return false;\"",' role="option" aria-posinset="'+ ++r._.size+'">',n||m,'</a></li>');},startGroup:function(m){this._.close();var n=e.getNextId();this._.groups[m]=n;this._.pendingHtml.push('<h1 role="presentation" id=',n,' class=cke_panel_grouptitle>',m,'</h1>');},commit:function(){var p=this;p._.close();p.element.appendHtml(p._.pendingHtml.join(''));var m=p._.items,n=p.element.getDocument();for(var o in m)n.getById(m[o]+'_option').setAttribute('aria-setsize',p._.size);delete p._.size;p._.pendingHtml=[];},toggle:function(m){var n=this.isMarked(m);if(n)this.unmark(m);else this.mark(m);return!n;},hideGroup:function(m){var n=this.element.getDocument().getById(this._.groups[m]),o=n&&n.getNext();if(n){n.setStyle('display','none');if(o&&o.getName()=='ul')o.setStyle('display','none');}},hideItem:function(m){this.element.getDocument().getById(this._.items[m]).setStyle('display','none');},showAll:function(){var m=this._.items,n=this._.groups,o=this.element.getDocument();for(var p in m)o.getById(m[p]).setStyle('display','');for(var q in n){var r=o.getById(n[q]),s=r.getNext();r.setStyle('display','');if(s&&s.getName()=='ul')s.setStyle('display','');}},mark:function(m){var p=this;
|
||||
if(!p.multiSelect)p.unmarkAll();var n=p._.items[m],o=p.element.getDocument().getById(n);o.addClass('cke_selected');p.element.getDocument().getById(n+'_option').setAttribute('aria-selected',true);p.element.setAttribute('aria-activedescendant',n+'_option');p.onMark&&p.onMark(o);},unmark:function(m){var n=this;n.element.getDocument().getById(n._.items[m]).removeClass('cke_selected');n.onUnmark&&n.onUnmark(n._.items[m]);},unmarkAll:function(){var p=this;var m=p._.items,n=p.element.getDocument();for(var o in m)n.getById(m[o]).removeClass('cke_selected');p.onUnmark&&p.onUnmark();},isMarked:function(m){return this.element.getDocument().getById(this._.items[m]).hasClass('cke_selected');},focus:function(m){this._.focusIndex=-1;if(m){var n=this.element.getDocument().getById(this._.items[m]).getFirst(),o=this.element.getElementsByTag('a'),p,q=-1;while(p=o.getItem(++q)){if(p.equals(n)){this._.focusIndex=q;break;}}setTimeout(function(){n.focus();},0);}}}});}});a.themes.add('default',(function(){function m(n,o){var p,q;q=n.config.sharedSpaces;q=q&&q[o];q=q&&a.document.getById(q);if(q){var r='<span class="cke_shared"><span class="'+n.skinClass+' '+n.id+' cke_editor_'+n.name+'">'+'<span class="'+b.cssClass+'">'+'<span class="cke_wrapper cke_'+n.lang.dir+'">'+'<span class="cke_editor">'+'<div class="cke_'+o+'">'+'</div></span></span></span></span></span>',s=q.append(h.createFromHtml(r,q.getDocument()));if(q.getCustomData('cke_hasshared'))s.hide();else q.setCustomData('cke_hasshared',1);p=s.getChild([0,0,0,0]);n.on('focus',function(){for(var t=0,u,v=q.getChildren();u=v.getItem(t);t++){if(u.type==1&&!u.equals(s)&&u.hasClass('cke_shared'))u.hide();}s.show();});n.on('destroy',function(){s.remove();});}return p;};return{build:function(n,o){var p=n.name,q=n.element,r=n.elementMode;if(!q||r==0)return;if(r==1)q.hide();var s=n.fire('themeSpace',{space:'top',html:''}).html,t=n.fire('themeSpace',{space:'contents',html:''}).html,u=n.fireOnce('themeSpace',{space:'bottom',html:''}).html,v=t&&n.config.height,w=n.config.tabIndex||n.element.getAttribute('tabindex')||0;if(!t)v='auto';else if(!isNaN(v))v+='px';var x='',y=n.config.width;if(y){if(!isNaN(y))y+='px';x+='width: '+y+';';}var z=s&&m(n,'top'),A=m(n,'bottom');z&&(z.setHtml(s),s='');A&&(A.setHtml(u),u='');var B=h.createFromHtml(['<span id="cke_',p,'" onmousedown="return false;" class="',n.skinClass,' ',n.id,' cke_editor_',p,'" dir="',n.lang.dir,'" title="',b.gecko?' ':'','" lang="',n.langCode,'"'+(b.webkit?' tabindex="'+w+'"':'')+' role="application"'+' aria-labelledby="cke_',p,'_arialbl"'+(x?' style="'+x+'"':'')+'>'+'<span id="cke_',p,'_arialbl" class="cke_voice_label">'+n.lang.editor+'</span>'+'<span class="',b.cssClass,'" role="presentation"><span class="cke_wrapper cke_',n.lang.dir,'" role="presentation"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody><tr',s?'':' style="display:none"',' role="presentation"><td id="cke_top_',p,'" class="cke_top" role="presentation">',s,'</td></tr><tr',t?'':' style="display:none"',' role="presentation"><td id="cke_contents_',p,'" class="cke_contents" style="height:',v,'" role="presentation">',t,'</td></tr><tr',u?'':' style="display:none"',' role="presentation"><td id="cke_bottom_',p,'" class="cke_bottom" role="presentation">',u,'</td></tr></tbody></table><style>.',n.skinClass,'{visibility:hidden;}</style></span></span></span>'].join(''));
|
||||
B.getChild([1,0,0,0,0]).unselectable();B.getChild([1,0,0,0,2]).unselectable();if(r==1)B.insertAfter(q);else q.append(B);n.container=B;B.disableContextMenu();n.fireOnce('themeLoaded');n.fireOnce('uiReady');},buildDialog:function(n){var o=e.getNextNumber(),p=h.createFromHtml(['<div class="',n.id,'_dialog cke_editor_',n.name.replace('.','\\.'),'_dialog cke_skin_',n.skinName,'" dir="',n.lang.dir,'" lang="',n.langCode,'" role="dialog" aria-labelledby="%title#"><table class="cke_dialog',' '+b.cssClass,' cke_',n.lang.dir,'" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="%body" role="presentation"><div id="%title#" class="%title" role="presentation"></div><a id="%close_button#" class="%close_button" href="javascript:void(0)" title="'+n.lang.common.close+'" role="button"><span class="cke_label">X</span></a>'+'<div id="%tabs#" class="%tabs" role="tablist"></div>'+'<table class="%contents" role="presentation"><tr>'+'<td id="%contents#" class="%contents" role="presentation"></td>'+'</tr></table>'+'<div id="%footer#" class="%footer" role="presentation"></div>'+'</div>'+'<div id="%tl#" class="%tl"></div>'+'<div id="%tc#" class="%tc"></div>'+'<div id="%tr#" class="%tr"></div>'+'<div id="%ml#" class="%ml"></div>'+'<div id="%mr#" class="%mr"></div>'+'<div id="%bl#" class="%bl"></div>'+'<div id="%bc#" class="%bc"></div>'+'<div id="%br#" class="%br"></div>'+'</td></tr>'+'</table>',c?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+o).replace(/%/g,'cke_dialog_')),q=p.getChild([0,0,0,0,0]),r=q.getChild(0),s=q.getChild(1);r.unselectable();s.unselectable();return{element:p,parts:{dialog:p.getChild(0),title:r,close:s,tabs:q.getChild(2),contents:q.getChild([3,0,0,0]),footer:q.getChild(4)}};},destroy:function(n){var o=n.container;o.clearCustomData();n.element.clearCustomData();if(o)o.remove();if(n.elementMode==1)n.element.show();delete n.element;}};})());a.editor.prototype.getThemeSpace=function(m){var n='cke_'+m,o=this._[n]||(this._[n]=a.document.getById(n+'_'+this.name));return o;};a.editor.prototype.resize=function(m,n,o,p){var q=this.container,r=a.document.getById('cke_contents_'+this.name),s=p?q.getChild(1):q;b.webkit&&s.setStyle('display','none');s.setSize('width',m,true);if(b.webkit){s.$.offsetWidth;s.setStyle('display','');}var t=o?0:(s.$.offsetHeight||0)-(r.$.clientHeight||0);r.setStyle('height',Math.max(n-t,0)+'px');this.fire('resize');};a.editor.prototype.getResizable=function(){return this.container.getChild(1);
|
||||
};})();
|
||||
@@ -1,211 +0,0 @@
|
||||
/*
|
||||
* CKPackager - Sample Package file
|
||||
*/
|
||||
|
||||
header :
|
||||
'/*' + '\n' +
|
||||
'Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.' + '\n' +
|
||||
'For licensing, see LICENSE.html or http://ckeditor.com/license' + '\n' +
|
||||
'*/' + '\n' +
|
||||
'\n',
|
||||
|
||||
noCheck : false,
|
||||
|
||||
constants :
|
||||
{
|
||||
'CKEDITOR.ELEMENT_MODE_NONE' : 0,
|
||||
'CKEDITOR.ELEMENT_MODE_REPLACE' : 1,
|
||||
'CKEDITOR.ELEMENT_MODE_APPENDTO' : 2,
|
||||
'CKEDITOR.CTRL' : 1000,
|
||||
'CKEDITOR.SHIFT' : 2000,
|
||||
'CKEDITOR.ALT' : 4000,
|
||||
'CKEDITOR.NODE_ELEMENT' : 1,
|
||||
'CKEDITOR.NODE_DOCUMENT' : 9,
|
||||
'CKEDITOR.NODE_TEXT' : 3,
|
||||
'CKEDITOR.NODE_COMMENT' : 8,
|
||||
'CKEDITOR.NODE_DOCUMENT_FRAGMENT' : 11,
|
||||
'CKEDITOR.POSITION_IDENTICAL' : 0,
|
||||
'CKEDITOR.POSITION_DISCONNECTED' : 1,
|
||||
'CKEDITOR.POSITION_FOLLOWING' : 2,
|
||||
'CKEDITOR.POSITION_PRECEDING' : 4,
|
||||
'CKEDITOR.POSITION_IS_CONTAINED' : 8,
|
||||
'CKEDITOR.POSITION_CONTAINS' : 16,
|
||||
'CKEDITOR.ENTER_P' : 1,
|
||||
'CKEDITOR.ENTER_BR' : 2,
|
||||
'CKEDITOR.ENTER_DIV' : 3,
|
||||
'CKEDITOR.TRISTATE_ON' : 1,
|
||||
'CKEDITOR.TRISTATE_OFF' : 2,
|
||||
'CKEDITOR.TRISTATE_DISABLED' : 0,
|
||||
'CKEDITOR.POSITION_AFTER_START' : 1,
|
||||
'CKEDITOR.POSITION_BEFORE_END' : 2,
|
||||
'CKEDITOR.POSITION_BEFORE_START' : 3,
|
||||
'CKEDITOR.POSITION_AFTER_END' : 4,
|
||||
'CKEDITOR.ENLARGE_ELEMENT' : 1,
|
||||
'CKEDITOR.ENLARGE_BLOCK_CONTENTS' : 2,
|
||||
'CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS' : 3,
|
||||
'CKEDITOR.START' : 1,
|
||||
'CKEDITOR.END' : 2,
|
||||
'CKEDITOR.STARTEND' : 3,
|
||||
'CKEDITOR.SHRINK_ELEMENT' : 1,
|
||||
'CKEDITOR.SHRINK_TEXT' : 2,
|
||||
'CKEDITOR.UI_BUTTON' : 1,
|
||||
'CKEDITOR.DIALOG_RESIZE_NONE' : 0,
|
||||
'CKEDITOR.DIALOG_RESIZE_WIDTH' : 1,
|
||||
'CKEDITOR.DIALOG_RESIZE_HEIGHT' : 2,
|
||||
'CKEDITOR.DIALOG_RESIZE_BOTH' : 3,
|
||||
'CKEDITOR.VALIDATE_OR' : 1,
|
||||
'CKEDITOR.VALIDATE_AND' : 2,
|
||||
'CKEDITOR.STYLE_BLOCK' : 1,
|
||||
'CKEDITOR.STYLE_INLINE' : 2,
|
||||
'CKEDITOR.STYLE_OBJECT' : 3,
|
||||
'CKEDITOR.UI_PANELBUTTON' : 4,
|
||||
'CKEDITOR.SELECTION_NONE' : 1,
|
||||
'CKEDITOR.SELECTION_TEXT' : 2,
|
||||
'CKEDITOR.SELECTION_ELEMENT' : 3,
|
||||
'CKEDITOR.UI_RICHCOMBO' : 3,
|
||||
'CKEDITOR.UI_MENUBUTTON' : 5,
|
||||
'CKEDITOR.UI_PANEL' : 2
|
||||
},
|
||||
|
||||
packages :
|
||||
[
|
||||
{
|
||||
output : 'ckeditor_basic.js',
|
||||
wrap : true,
|
||||
files :
|
||||
[
|
||||
'_source/core/ckeditor_base.js',
|
||||
'_source/core/event.js',
|
||||
'_source/core/editor_basic.js',
|
||||
'_source/core/env.js',
|
||||
'_source/core/ckeditor_basic.js'
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
output : 'ckeditor.js',
|
||||
wrap : true,
|
||||
files :
|
||||
[
|
||||
'_source/core/ckeditor_base.js',
|
||||
'_source/core/event.js',
|
||||
'_source/core/editor_basic.js',
|
||||
'_source/core/env.js',
|
||||
'_source/core/ckeditor_basic.js',
|
||||
'_source/core/dom.js',
|
||||
'_source/core/tools.js',
|
||||
'_source/core/dtd.js',
|
||||
'_source/core/dom/event.js',
|
||||
'_source/core/dom/domobject.js',
|
||||
'_source/core/dom/window.js',
|
||||
'_source/core/dom/document.js',
|
||||
'_source/core/dom/node.js',
|
||||
'_source/core/dom/nodelist.js',
|
||||
'_source/core/dom/element.js',
|
||||
'_source/core/command.js',
|
||||
'_source/core/config.js',
|
||||
'_source/core/focusmanager.js',
|
||||
'_source/core/lang.js',
|
||||
'_source/core/scriptloader.js',
|
||||
'_source/core/resourcemanager.js',
|
||||
'_source/core/plugins.js',
|
||||
'_source/core/imagecacher.js',
|
||||
'_source/core/skins.js',
|
||||
'_source/core/themes.js',
|
||||
'_source/core/ui.js',
|
||||
'_source/core/editor.js',
|
||||
'_source/core/htmlparser.js',
|
||||
'_source/core/htmlparser/comment.js',
|
||||
'_source/core/htmlparser/text.js',
|
||||
'_source/core/htmlparser/cdata.js',
|
||||
'_source/core/htmlparser/fragment.js',
|
||||
'_source/core/htmlparser/element.js',
|
||||
'_source/core/htmlparser/filter.js',
|
||||
'_source/core/htmlparser/basicwriter.js',
|
||||
'_source/core/ckeditor.js',
|
||||
'_source/core/dom/comment.js',
|
||||
'_source/core/dom/elementpath.js',
|
||||
'_source/core/dom/text.js',
|
||||
'_source/core/dom/documentfragment.js',
|
||||
'_source/core/dom/walker.js',
|
||||
'_source/core/dom/range.js',
|
||||
'_source/core/dom/rangelist.js',
|
||||
'_source/core/_bootstrap.js',
|
||||
'_source/skins/kama/skin.js',
|
||||
// '_source/lang/en.js',
|
||||
'_source/plugins/about/plugin.js',
|
||||
'_source/plugins/a11yhelp/plugin.js',
|
||||
'_source/plugins/basicstyles/plugin.js',
|
||||
'_source/plugins/bidi/plugin.js',
|
||||
'_source/plugins/blockquote/plugin.js',
|
||||
'_source/plugins/button/plugin.js',
|
||||
'_source/plugins/clipboard/plugin.js',
|
||||
'_source/plugins/colorbutton/plugin.js',
|
||||
'_source/plugins/colordialog/plugin.js',
|
||||
'_source/plugins/contextmenu/plugin.js',
|
||||
'_source/plugins/dialogadvtab/plugin.js',
|
||||
'_source/plugins/div/plugin.js',
|
||||
'_source/plugins/elementspath/plugin.js',
|
||||
'_source/plugins/enterkey/plugin.js',
|
||||
'_source/plugins/entities/plugin.js',
|
||||
'_source/plugins/filebrowser/plugin.js',
|
||||
'_source/plugins/find/plugin.js',
|
||||
'_source/plugins/flash/plugin.js',
|
||||
'_source/plugins/font/plugin.js',
|
||||
'_source/plugins/format/plugin.js',
|
||||
'_source/plugins/forms/plugin.js',
|
||||
'_source/plugins/horizontalrule/plugin.js',
|
||||
'_source/plugins/htmldataprocessor/plugin.js',
|
||||
'_source/plugins/image/plugin.js',
|
||||
'_source/plugins/indent/plugin.js',
|
||||
'_source/plugins/justify/plugin.js',
|
||||
'_source/plugins/keystrokes/plugin.js',
|
||||
'_source/plugins/link/plugin.js',
|
||||
'_source/plugins/list/plugin.js',
|
||||
'_source/plugins/liststyle/plugin.js',
|
||||
'_source/plugins/maximize/plugin.js',
|
||||
'_source/plugins/newpage/plugin.js',
|
||||
'_source/plugins/pagebreak/plugin.js',
|
||||
'_source/plugins/pastefromword/plugin.js',
|
||||
'_source/plugins/pastetext/plugin.js',
|
||||
'_source/plugins/popup/plugin.js',
|
||||
'_source/plugins/preview/plugin.js',
|
||||
'_source/plugins/print/plugin.js',
|
||||
'_source/plugins/removeformat/plugin.js',
|
||||
'_source/plugins/resize/plugin.js',
|
||||
'_source/plugins/save/plugin.js',
|
||||
'_source/plugins/scayt/plugin.js',
|
||||
'_source/plugins/smiley/plugin.js',
|
||||
'_source/plugins/showblocks/plugin.js',
|
||||
'_source/plugins/showborders/plugin.js',
|
||||
'_source/plugins/sourcearea/plugin.js',
|
||||
'_source/plugins/stylescombo/plugin.js',
|
||||
'_source/plugins/table/plugin.js',
|
||||
'_source/plugins/tabletools/plugin.js',
|
||||
'_source/plugins/specialchar/plugin.js',
|
||||
'_source/plugins/tab/plugin.js',
|
||||
'_source/plugins/templates/plugin.js',
|
||||
'_source/plugins/toolbar/plugin.js',
|
||||
'_source/plugins/undo/plugin.js',
|
||||
'_source/plugins/wysiwygarea/plugin.js',
|
||||
'_source/plugins/wsc/plugin.js',
|
||||
'_source/plugins/dialog/plugin.js',
|
||||
'_source/plugins/styles/plugin.js',
|
||||
'_source/plugins/domiterator/plugin.js',
|
||||
'_source/plugins/panelbutton/plugin.js',
|
||||
'_source/plugins/floatpanel/plugin.js',
|
||||
'_source/plugins/menu/plugin.js',
|
||||
'_source/plugins/editingblock/plugin.js',
|
||||
'_source/plugins/selection/plugin.js',
|
||||
'_source/plugins/fakeobjects/plugin.js',
|
||||
'_source/plugins/richcombo/plugin.js',
|
||||
'_source/plugins/htmlwriter/plugin.js',
|
||||
'_source/plugins/menubutton/plugin.js',
|
||||
'_source/plugins/dialogui/plugin.js',
|
||||
'_source/plugins/panel/plugin.js',
|
||||
'_source/plugins/listblock/plugin.js',
|
||||
'_source/themes/default/theme.js'
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
@@ -1,8 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
(function(){if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'AA4E4NT',version:'3.4.2',revision:'6041',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;if(!d)throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/'&&!/[&?]t=/.test(d))d+=(d.indexOf('?')>=0?'&':'?')+'t='+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b){var c=a.event.prototype;for(var d in c){if(b[d]==undefined)b[d]=c[d];}};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e<f.length;e++){if(f[e].fn==d)return e;}return-1;}};return{on:function(d,e,f,g,h){var i=b(this),j=i[d]||(i[d]=new c(d));if(j.getListenerIndex(e)<0){var k=j.listeners;if(!f)f=this;if(isNaN(h))h=10;var l=this,m=function(o,p,q,r){var s={name:d,sender:this,editor:o,data:p,listenerData:g,stop:q,cancel:r,removeListener:function(){l.removeListener(d,e);}};e.call(f,s);return s.data;};m.fn=e;m.priority=h;for(var n=k.length-1;n>=0;n--){if(k[n].priority<=h){k.splice(n+1,0,m);return;}}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o<n.length;o++){var p=n[o].call(this,j,i,e,g);if(typeof p!='undefined')i=p;if(d||f)break;}}}var q=f||(typeof i=='undefined'?false:i);d=l;f=m;return q;};})(),fireOnce:function(d,e,f){var g=this.fire(d,e,f);delete b(this)[d];return g;},removeListener:function(d,e){var f=b(this)[d];if(f){var g=f.getListenerIndex(e);if(g>=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];
|
||||
return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d,e){var f=this;f._={instanceConfig:b,element:c,data:e};f.elementMode=d||0;a.event.call(f);f._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&d.tagName.toLowerCase()!='textarea'){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c,d){var e=b;if(typeof e!='object'){e=document.getElementById(b);if(!e)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,e,2,d);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',mobile:b.indexOf('mobile')>-1,isCustomDomain:function(){if(!this.ie)return false;var g=document.domain,h=window.location.hostname;return g!=h&&g!='['+h+']';}};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*100+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=!d.mobile&&(d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false);d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.air?'air':d.webkit?'webkit':'unknown');if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?document.documentMode:'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';
|
||||
}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=1;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=1;var d=function(e,f,g,h){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var i=g(e,f,h);a.add(i);return i;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f,g){return d(e,f,a.editor.appendTo,g);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f<e.length;f++){var g=null,h=e[f],i=h.name;if(!h.name&&!h.id)continue;if(typeof arguments[0]=='string'){var j=new RegExp('(?:^|\\s)'+arguments[0]+'(?:$|\\s)');if(!j.test(h.className))continue;}else if(typeof arguments[0]=='function'){g={};if(arguments[0](h,g)===false)continue;}this.replace(h,g);}};(function(){var e=function(){var f=a.loadFullCore,g=a.loadFullCoreTimeout;if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);a.status='basic_ready';if(f&&f._load)f();else if(g)setTimeout(function(){if(a.loadFullCore)a.loadFullCore();},g*1000);};if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();a.status='basic_loaded';})();})();
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
// Compressed version of core/ckeditor_base.js. See original for instructions.
|
||||
/*jsl:ignore*/
|
||||
if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.4.2',revision:'6041',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
|
||||
/*jsl:end*/
|
||||
|
||||
// Uncomment the following line to have a new timestamp generated for each
|
||||
// request, having clear cache load of the editor code.
|
||||
// CKEDITOR.timestamp = ( new Date() ).valueOf();
|
||||
|
||||
// Set the script name to be loaded by the loader.
|
||||
CKEDITOR._autoLoad = 'core/ckeditor_basic';
|
||||
|
||||
// Include the loader script.
|
||||
document.write(
|
||||
'<script type="text/javascript" src="' + CKEDITOR.getUrl( '_source/core/loader.js' ) + '"></script>' );
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
// Compressed version of core/ckeditor_base.js. See original for instructions.
|
||||
/*jsl:ignore*/
|
||||
if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.4.2',revision:'6041',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();
|
||||
/*jsl:end*/
|
||||
|
||||
// Uncomment the following line to have a new timestamp generated for each
|
||||
// request, having clear cache load of the editor code.
|
||||
// CKEDITOR.timestamp = ( new Date() ).valueOf();
|
||||
|
||||
if ( CKEDITOR.loader )
|
||||
CKEDITOR.loader.load( 'core/ckeditor' );
|
||||
else
|
||||
{
|
||||
// Set the script name to be loaded by the loader.
|
||||
CKEDITOR._autoLoad = 'core/ckeditor';
|
||||
|
||||
// Include the loader script.
|
||||
document.write(
|
||||
'<script type="text/javascript" src="' + CKEDITOR.getUrl( '_source/core/loader.js' ) + '"></script>' );
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
CKEDITOR.editorConfig = function( config )
|
||||
{
|
||||
//config.customConfig // to ovveride config.js
|
||||
|
||||
// The language will be set from within iTop, depending on the current user
|
||||
// config.language = 'de'; // german
|
||||
// config.contentsLanguage = 'de'; // german
|
||||
|
||||
// Make it more concise for iTop forms
|
||||
config.removePlugins = 'elementspath';
|
||||
config.toolbarStartupExpanded = false;
|
||||
config.toolbar = 'itop';
|
||||
//config.toolbar_basic
|
||||
//config.toolbar_Full
|
||||
config.toolbar_itop =
|
||||
[
|
||||
['Source'],
|
||||
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'],
|
||||
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
|
||||
'/',
|
||||
['Bold','Italic','Underline','Strike'],
|
||||
['NumberedList','BulletedList','-','Outdent','Indent'],
|
||||
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
|
||||
['Link','Unlink','Anchor'],
|
||||
['Image','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
|
||||
'/',
|
||||
['Styles','Format','Font','FontSize'],
|
||||
['TextColor','BGColor'],
|
||||
['Maximize', 'ShowBlocks','-','About']
|
||||
];
|
||||
config.toolbar_Full =
|
||||
[
|
||||
['Source','-','Save','NewPage','Preview','-','Templates'],
|
||||
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
|
||||
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
|
||||
['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
|
||||
'/',
|
||||
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
|
||||
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
|
||||
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
|
||||
['BidiLtr', 'BidiRtl' ],
|
||||
['Link','Unlink','Anchor'],
|
||||
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
|
||||
'/',
|
||||
['Styles','Format','Font','FontSize'],
|
||||
['TextColor','BGColor'],
|
||||
['Maximize', 'ShowBlocks','-','About']
|
||||
];
|
||||
|
||||
// Little value and even disturbing when it comes to describing very technical stuff
|
||||
config.disableNativeSpellChecker = true;
|
||||
|
||||
// Handling of doc/image uploads
|
||||
// config.filebrowserImageUploadUrl
|
||||
// config.filebrowserUploadUrl
|
||||
|
||||
// + it is possible to define the supported tags (p, pre, etc) and the corresponding class.
|
||||
|
||||
};
|
||||
|
Before Width: | Height: | Size: 43 B |
@@ -1,6 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
var CKEDITOR_LANGS=(function(){var b={af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',cy:'Welsh',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-gb':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},c=[];for(var d in b)c.push({code:d,name:b[d]});c.sort(function(e,f){return e.name<f.name?-1:1;});return c;})();
|
||||
@@ -1,60 +0,0 @@
|
||||
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
|
||||
af.js Found: 287 Missing: 244
|
||||
ar.js Found: 451 Missing: 80
|
||||
bg.js Found: 280 Missing: 251
|
||||
bn.js Found: 281 Missing: 250
|
||||
bs.js Found: 187 Missing: 344
|
||||
ca.js Found: 490 Missing: 41
|
||||
cs.js Found: 411 Missing: 120
|
||||
cy.js Found: 452 Missing: 79
|
||||
da.js Found: 404 Missing: 127
|
||||
de.js Found: 528 Missing: 3
|
||||
el.js Found: 286 Missing: 245
|
||||
en-au.js Found: 369 Missing: 162
|
||||
en-ca.js Found: 369 Missing: 162
|
||||
en-gb.js Found: 370 Missing: 161
|
||||
eo.js Found: 259 Missing: 272
|
||||
es.js Found: 524 Missing: 7
|
||||
et.js Found: 301 Missing: 230
|
||||
eu.js Found: 403 Missing: 128
|
||||
fa.js Found: 302 Missing: 229
|
||||
fi.js Found: 531 Missing: 0
|
||||
fo.js Found: 420 Missing: 111
|
||||
fr-ca.js Found: 301 Missing: 230
|
||||
fr.js Found: 403 Missing: 128
|
||||
gl.js Found: 283 Missing: 248
|
||||
gu.js Found: 300 Missing: 231
|
||||
he.js Found: 531 Missing: 0
|
||||
hi.js Found: 302 Missing: 229
|
||||
hr.js Found: 404 Missing: 127
|
||||
hu.js Found: 445 Missing: 86
|
||||
is.js Found: 307 Missing: 224
|
||||
it.js Found: 404 Missing: 127
|
||||
ja.js Found: 413 Missing: 118
|
||||
km.js Found: 275 Missing: 256
|
||||
ko.js Found: 293 Missing: 238
|
||||
lt.js Found: 306 Missing: 225
|
||||
lv.js Found: 283 Missing: 248
|
||||
mn.js Found: 300 Missing: 231
|
||||
ms.js Found: 265 Missing: 266
|
||||
nb.js Found: 470 Missing: 61
|
||||
nl.js Found: 531 Missing: 0
|
||||
no.js Found: 470 Missing: 61
|
||||
pl.js Found: 411 Missing: 120
|
||||
pt-br.js Found: 524 Missing: 7
|
||||
pt.js Found: 282 Missing: 249
|
||||
ro.js Found: 301 Missing: 230
|
||||
ru.js Found: 467 Missing: 64
|
||||
sk.js Found: 302 Missing: 229
|
||||
sl.js Found: 410 Missing: 121
|
||||
sr-latn.js Found: 276 Missing: 255
|
||||
sr.js Found: 275 Missing: 256
|
||||
sv.js Found: 299 Missing: 232
|
||||
th.js Found: 287 Missing: 244
|
||||
tr.js Found: 524 Missing: 7
|
||||
uk.js Found: 531 Missing: 0
|
||||
vi.js Found: 481 Missing: 50
|
||||
zh-cn.js Found: 531 Missing: 0
|
||||
zh.js Found: 404 Missing: 127
|
||||