Merge branch 'dev-v7.7' into user-group-permissions
# Conflicts: # src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs # src/Umbraco.Tests/Services/UserServiceTests.cs # src/Umbraco.Web.UI.Client/src/common/services/util.service.js # src/Umbraco.Web.UI/config/trees.config # src/Umbraco.Web/Umbraco.Web.csproj
This commit is contained in:
@@ -23,12 +23,12 @@ namespace Umbraco.Core
|
||||
: base(serviceProvider, logger, packageActions)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="IPackageAction"/> implementations.
|
||||
/// </summary>
|
||||
public IEnumerable<IAction> Actions
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="IAction"/> implementations.
|
||||
/// </summary>
|
||||
public IEnumerable<IAction> Actions
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
@@ -56,7 +56,12 @@
|
||||
/// <summary>
|
||||
/// alias for the content tree.
|
||||
/// </summary>
|
||||
public const string Content = "content";
|
||||
public const string Content = "content";
|
||||
|
||||
/// <summary>
|
||||
/// alias for the content blueprint tree.
|
||||
/// </summary>
|
||||
public const string ContentBlueprints = "contentBlueprints";
|
||||
|
||||
/// <summary>
|
||||
/// alias for the member tree.
|
||||
|
||||
@@ -68,12 +68,22 @@ namespace Umbraco.Core
|
||||
/// Guid for a Document object.
|
||||
/// </summary>
|
||||
public const string Document = "C66BA18E-EAF3-4CFF-8A22-41B16D66A972";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Guid for a Document object.
|
||||
/// </summary>
|
||||
public static readonly Guid DocumentGuid = new Guid(Document);
|
||||
|
||||
/// <summary>
|
||||
/// Guid for a Document Blueprint object.
|
||||
/// </summary>
|
||||
public const string DocumentBlueprint = "6EBEF410-03AA-48CF-A792-E1C1CB087ACA";
|
||||
|
||||
/// <summary>
|
||||
/// Guid for a Document object.
|
||||
/// </summary>
|
||||
public static readonly Guid DocumentBlueprintGuid = new Guid(DocumentBlueprint);
|
||||
|
||||
/// <summary>
|
||||
/// Guid for a Document Type object.
|
||||
/// </summary>
|
||||
@@ -212,6 +222,16 @@ namespace Umbraco.Core
|
||||
/// Guid for a Forms DataSource.
|
||||
/// </summary>
|
||||
public static readonly Guid FormsDataSourceGuid = new Guid(FormsDataSource);
|
||||
|
||||
/// <summary>
|
||||
/// Guid for a Language.
|
||||
/// </summary>
|
||||
public const string Language = "6B05D05B-EC78-49BE-A4E4-79E274F07A77";
|
||||
|
||||
/// <summary>
|
||||
/// Guid for a Forms DataSource.
|
||||
/// </summary>
|
||||
public static readonly Guid LanguageGuid = new Guid(Language);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -97,6 +97,8 @@ namespace Umbraco.Core.IO
|
||||
|
||||
public static string MapPath(string path, bool useHttpContext)
|
||||
{
|
||||
if (path == null) throw new ArgumentNullException("path");
|
||||
|
||||
// Check if the path is already mapped
|
||||
if ((path.Length >= 2 && path[1] == Path.VolumeSeparatorChar)
|
||||
|| path.StartsWith(@"\\")) //UNC Paths start with "\\". If the site is running off a network drive mapped paths will look like "\\Whatever\Boo\Bar"
|
||||
|
||||
@@ -38,6 +38,14 @@ namespace Umbraco.Core.Models
|
||||
[UmbracoUdiType(Constants.UdiEntityType.Document)]
|
||||
Document,
|
||||
|
||||
/// <summary>
|
||||
/// Document
|
||||
/// </summary>
|
||||
[UmbracoObjectType(Constants.ObjectTypes.DocumentBlueprint, typeof(IContent))]
|
||||
[FriendlyName("DocumentBlueprint")]
|
||||
[UmbracoUdiType(Constants.UdiEntityType.DocumentBluePrint)]
|
||||
DocumentBlueprint,
|
||||
|
||||
/// <summary>
|
||||
/// Media
|
||||
/// </summary>
|
||||
@@ -178,6 +186,13 @@ namespace Umbraco.Core.Models
|
||||
/// </summary>
|
||||
[UmbracoObjectType(Constants.ObjectTypes.FormsDataSource)]
|
||||
[FriendlyName("DataSource")]
|
||||
FormsDataSource
|
||||
FormsDataSource,
|
||||
|
||||
/// <summary>
|
||||
/// Language
|
||||
/// </summary>
|
||||
[UmbracoObjectType(Constants.ObjectTypes.Language)]
|
||||
[FriendlyName("Language")]
|
||||
Language
|
||||
}
|
||||
}
|
||||
@@ -174,9 +174,9 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
|
||||
|
||||
private void CreateUmbracoUserGroupData()
|
||||
{
|
||||
_database.Insert("umbracoUserGroup", "id", false, new UserGroupDto { Id = 1, StartMediaId = null, StartContentId = null, Alias = Constants.Security.AdminGroupAlias, Name = "Administrators", DefaultPermissions = "CADMOSKTPIURZ:5F7", CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Icon = "icon-medal" });
|
||||
_database.Insert("umbracoUserGroup", "id", false, new UserGroupDto { Id = 1, StartMediaId = null, StartContentId = null, Alias = Constants.Security.AdminGroupAlias, Name = "Administrators", DefaultPermissions = "CADMOSKTPIURZ:5F7ï", CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Icon = "icon-medal" });
|
||||
_database.Insert("umbracoUserGroup", "id", false, new UserGroupDto { Id = 2, StartMediaId = null, StartContentId = null, Alias = "writer", Name = "Writers", DefaultPermissions = "CAH:F", CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Icon = "icon-edit" });
|
||||
_database.Insert("umbracoUserGroup", "id", false, new UserGroupDto { Id = 3, StartMediaId = null, StartContentId = null, Alias = "editor", Name = "Editors", DefaultPermissions = "CADMOSKTPUZ:5F", CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Icon = "icon-tools" });
|
||||
_database.Insert("umbracoUserGroup", "id", false, new UserGroupDto { Id = 3, StartMediaId = null, StartContentId = null, Alias = "editor", Name = "Editors", DefaultPermissions = "CADMOSKTPUZ:5Fï", CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Icon = "icon-tools" });
|
||||
_database.Insert("umbracoUserGroup", "id", false, new UserGroupDto { Id = 4, StartMediaId = null, StartContentId = null, Alias = "translator", Name = "Translators", DefaultPermissions = "AF", CreateDate = DateTime.Now, UpdateDate = DateTime.Now, Icon = "icon-globe" });
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,28 @@ using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
/// <summary>
|
||||
/// Override the base content repository so we can change the node object type
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// It would be nicer if we could separate most of this down into a smaller version of the ContentRepository class, however to do that
|
||||
/// requires quite a lot of work since we'd need to re-organize the interhitance quite a lot or create a helper class to perform a lot of the underlying logic.
|
||||
///
|
||||
/// TODO: Create a helper method to conain most of the underlying logic for the ContentRepository
|
||||
/// </remarks>
|
||||
internal class ContentBlueprintRepository : ContentRepository
|
||||
{
|
||||
public ContentBlueprintRepository(IScopeUnitOfWork work, CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider syntaxProvider, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository, IContentSection contentSection) : base(work, cacheHelper, logger, syntaxProvider, contentTypeRepository, templateRepository, tagRepository, contentSection)
|
||||
{
|
||||
}
|
||||
|
||||
protected override Guid NodeObjectTypeId
|
||||
{
|
||||
get { return Constants.ObjectTypes.DocumentBlueprintGuid; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents a repository for doing CRUD operations for <see cref="IContent"/>
|
||||
/// </summary>
|
||||
@@ -201,7 +223,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
protected override Guid NodeObjectTypeId
|
||||
{
|
||||
get { return new Guid(Constants.ObjectTypes.Document); }
|
||||
get { return Constants.ObjectTypes.DocumentGuid; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -267,7 +289,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
//now delete the items that shouldn't be there
|
||||
var sqlAllIds = translate(0, GetBaseQuery(BaseQueryType.Ids));
|
||||
var allContentIds = Database.Fetch<int>(sqlAllIds);
|
||||
var docObjectType = Guid.Parse(Constants.ObjectTypes.Document);
|
||||
var docObjectType = NodeObjectTypeId;
|
||||
var xmlIdsQuery = new Sql()
|
||||
.Select("DISTINCT cmsContentXml.nodeId")
|
||||
.From<ContentXmlDto>(SqlSyntax)
|
||||
@@ -636,9 +658,12 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
//In order to update the ContentVersion we need to retrieve its primary key id
|
||||
var contentVerDto = Database.SingleOrDefault<ContentVersionDto>("WHERE VersionId = @Version", new { Version = entity.Version });
|
||||
contentVersionDto.Id = contentVerDto.Id;
|
||||
|
||||
Database.Update(contentVersionDto);
|
||||
if (contentVerDto != null)
|
||||
{
|
||||
contentVersionDto.Id = contentVerDto.Id;
|
||||
Database.Update(contentVersionDto);
|
||||
}
|
||||
|
||||
Database.Update(dto);
|
||||
}
|
||||
|
||||
@@ -743,6 +768,18 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
return ProcessQuery(translate(translatorFull), new PagingSqlQuery(translate(translatorIds)), true);
|
||||
}
|
||||
|
||||
public IEnumerable<IContent> GetBlueprints(IQuery<IContent> query)
|
||||
{
|
||||
Func<SqlTranslator<IContent>, Sql> translate = t => t.Translate();
|
||||
|
||||
var sqlFull = GetBaseQuery(BaseQueryType.FullMultiple);
|
||||
var translatorFull = new SqlTranslator<IContent>(sqlFull, query);
|
||||
var sqlIds = GetBaseQuery(BaseQueryType.Ids);
|
||||
var translatorIds = new SqlTranslator<IContent>(sqlIds, query);
|
||||
|
||||
return ProcessQuery(translate(translatorFull), new PagingSqlQuery(translate(translatorIds)), true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This builds the Xml document used for the XML cache
|
||||
/// </summary>
|
||||
@@ -786,7 +823,7 @@ order by umbracoNode.{2}, umbracoNode.parentID, umbracoNode.sortOrder",
|
||||
XmlElement last = null;
|
||||
|
||||
//NOTE: Query creates a reader - does not load all into memory
|
||||
foreach (var row in Database.Query<dynamic>(sql, new { type = new Guid(Constants.ObjectTypes.Document) }))
|
||||
foreach (var row in Database.Query<dynamic>(sql, new { type = NodeObjectTypeId }))
|
||||
{
|
||||
string parentId = ((int)row.parentID).ToInvariantString();
|
||||
string xml = row.xml;
|
||||
|
||||
@@ -110,6 +110,19 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
return Database.Fetch<string>(sql);
|
||||
}
|
||||
|
||||
public IEnumerable<int> GetAllContentTypeIds(string[] aliases)
|
||||
{
|
||||
if (aliases.Length == 0) return Enumerable.Empty<int>();
|
||||
|
||||
var sql = new Sql().Select("cmsContentType.nodeId")
|
||||
.From<ContentTypeDto>(SqlSyntax)
|
||||
.InnerJoin<NodeDto>(SqlSyntax)
|
||||
.On<ContentTypeDto, NodeDto>(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId)
|
||||
.Where<ContentTypeDto>(dto => aliases.Contains(dto.Alias), SqlSyntax);
|
||||
|
||||
return Database.Fetch<int>(sql);
|
||||
}
|
||||
|
||||
protected override Sql GetBaseQuery(bool isCount)
|
||||
{
|
||||
var sql = new Sql();
|
||||
|
||||
@@ -48,8 +48,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
public IEnumerable<IUmbracoEntity> GetPagedResultsByQuery(IQuery<IUmbracoEntity> query, Guid objectTypeId, long pageIndex, int pageSize, out long totalRecords,
|
||||
string orderBy, Direction orderDirection, IQuery<IUmbracoEntity> filter = null)
|
||||
{
|
||||
bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document);
|
||||
bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media);
|
||||
bool isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
||||
bool isMedia = objectTypeId == Constants.ObjectTypes.MediaGuid;
|
||||
var factory = new UmbracoEntityFactory();
|
||||
|
||||
var sqlClause = GetBaseWhere(GetBase, isContent, isMedia, sql =>
|
||||
@@ -178,8 +178,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
public IUmbracoEntity GetByKey(Guid key, Guid objectTypeId)
|
||||
{
|
||||
bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document);
|
||||
bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media);
|
||||
bool isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
||||
bool isMedia = objectTypeId == Constants.ObjectTypes.MediaGuid;
|
||||
|
||||
var sql = GetFullSqlForEntityType(key, isContent, isMedia, objectTypeId);
|
||||
|
||||
@@ -225,8 +225,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
public virtual IUmbracoEntity Get(int id, Guid objectTypeId)
|
||||
{
|
||||
bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document);
|
||||
bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media);
|
||||
bool isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
||||
bool isMedia = objectTypeId == Constants.ObjectTypes.MediaGuid;
|
||||
|
||||
var sql = GetFullSqlForEntityType(id, isContent, isMedia, objectTypeId);
|
||||
|
||||
@@ -280,8 +280,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
private IEnumerable<IUmbracoEntity> PerformGetAll(Guid objectTypeId, Action<Sql> filter = null)
|
||||
{
|
||||
bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document);
|
||||
bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media);
|
||||
bool isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
||||
bool isMedia = objectTypeId == Constants.ObjectTypes.MediaGuid;
|
||||
var sql = GetFullSqlForEntityType(isContent, isMedia, objectTypeId, filter);
|
||||
|
||||
var factory = new UmbracoEntityFactory();
|
||||
@@ -324,8 +324,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> query, Guid objectTypeId)
|
||||
{
|
||||
|
||||
bool isContent = objectTypeId == new Guid(Constants.ObjectTypes.Document);
|
||||
bool isMedia = objectTypeId == new Guid(Constants.ObjectTypes.Media);
|
||||
bool isContent = objectTypeId == Constants.ObjectTypes.DocumentGuid || objectTypeId == Constants.ObjectTypes.DocumentBlueprintGuid;
|
||||
bool isMedia = objectTypeId == Constants.ObjectTypes.MediaGuid;
|
||||
|
||||
var sqlClause = GetBaseWhere(GetBase, isContent, isMedia, null, objectTypeId);
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
{
|
||||
|
||||
public interface IContentRepository : IRepositoryVersionable<int, IContent>, IRecycleBinRepository<IContent>, IDeleteMediaFilesRepository
|
||||
{
|
||||
|
||||
@@ -47,5 +47,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// <returns>The original alias with a number appended to it, so that it is unique.</returns>
|
||||
/// /// <remarks>Unique accross all content, media and member types.</remarks>
|
||||
string GetUniqueAlias(string alias);
|
||||
|
||||
IEnumerable<int> GetAllContentTypeIds(string[] aliases);
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
//Construct and execute delete statements for all trashed items by 'nodeObjectType'
|
||||
var deletes = new List<string>
|
||||
{
|
||||
FormatDeleteStatement("cmsTask", "nodeId"),
|
||||
FormatDeleteStatement("umbracoUser2NodeNotify", "nodeId"),
|
||||
FormatDeleteStatement("umbracoUserGroup2NodePermission", "nodeId"),
|
||||
@"DELETE FROM umbracoAccessRule WHERE umbracoAccessRule.accessId IN (
|
||||
|
||||
@@ -52,25 +52,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// </summary>
|
||||
/// <param name="id">Id of the <see cref="TEntity"/> to retrieve versions from</param>
|
||||
/// <returns>An enumerable list of the same <see cref="TEntity"/> object with different versions</returns>
|
||||
public virtual IEnumerable<TEntity> GetAllVersions(int id)
|
||||
{
|
||||
var sql = new Sql();
|
||||
sql.Select("*")
|
||||
.From<ContentVersionDto>(SqlSyntax)
|
||||
.InnerJoin<ContentDto>(SqlSyntax)
|
||||
.On<ContentVersionDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
|
||||
.InnerJoin<NodeDto>(SqlSyntax)
|
||||
.On<ContentDto, NodeDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == NodeObjectTypeId)
|
||||
.Where<NodeDto>(x => x.NodeId == id)
|
||||
.OrderByDescending<ContentVersionDto>(x => x.VersionDate, SqlSyntax);
|
||||
|
||||
var dtos = Database.Fetch<ContentVersionDto, ContentDto, NodeDto>(sql);
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return GetByVersion(dto.VersionId);
|
||||
}
|
||||
}
|
||||
public abstract IEnumerable<TEntity> GetAllVersions(int id);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of all version Ids for the given content item ordered so latest is first
|
||||
|
||||
@@ -145,6 +145,23 @@ namespace Umbraco.Core.Persistence
|
||||
};
|
||||
}
|
||||
|
||||
public virtual IContentRepository CreateContentBlueprintRepository(IScopeUnitOfWork uow)
|
||||
{
|
||||
return new ContentBlueprintRepository(
|
||||
uow,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
_sqlSyntax,
|
||||
CreateContentTypeRepository(uow),
|
||||
CreateTemplateRepository(uow),
|
||||
CreateTagRepository(uow),
|
||||
_settings.Content)
|
||||
{
|
||||
//duplicates are allowed
|
||||
EnsureUniqueNaming = false
|
||||
};
|
||||
}
|
||||
|
||||
public virtual IContentTypeRepository CreateContentTypeRepository(IScopeUnitOfWork uow)
|
||||
{
|
||||
return new ContentTypeRepository(
|
||||
|
||||
@@ -177,8 +177,7 @@ namespace Umbraco.Core.Services
|
||||
content.WriterId = userId;
|
||||
|
||||
uow.Events.Dispatch(Created, this, new NewEventArgs<IContent>(content, false, contentTypeAlias, parentId));
|
||||
|
||||
Audit(uow, AuditType.New, string.Format("Content '{0}' was created", name), content.CreatorId, content.Id);
|
||||
|
||||
uow.Commit();
|
||||
}
|
||||
|
||||
@@ -220,8 +219,7 @@ namespace Umbraco.Core.Services
|
||||
content.WriterId = userId;
|
||||
|
||||
uow.Events.Dispatch(Created, this, new NewEventArgs<IContent>(content, false, contentTypeAlias, parent));
|
||||
|
||||
Audit(uow, AuditType.New, string.Format("Content '{0}' was created", name), content.CreatorId, content.Id);
|
||||
|
||||
uow.Commit();
|
||||
}
|
||||
|
||||
@@ -1158,6 +1156,82 @@ namespace Umbraco.Core.Services
|
||||
return ((IContentServiceOperations)this).SaveAndPublish(content, userId, raiseEvents);
|
||||
}
|
||||
|
||||
public IContent GetBlueprintById(int id)
|
||||
{
|
||||
using (var uow = UowProvider.GetUnitOfWork(readOnly: true))
|
||||
{
|
||||
var repository = RepositoryFactory.CreateContentBlueprintRepository(uow);
|
||||
return repository.Get(id);
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveBlueprint(IContent content, int userId = 0)
|
||||
{
|
||||
//always ensure the blueprint is at the root
|
||||
content.ParentId = -1;
|
||||
|
||||
using (new WriteLock(Locker))
|
||||
{
|
||||
using (var uow = UowProvider.GetUnitOfWork())
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(content.Name))
|
||||
{
|
||||
throw new ArgumentException("Cannot save content blueprint with empty name.");
|
||||
}
|
||||
|
||||
var repository = RepositoryFactory.CreateContentBlueprintRepository(uow);
|
||||
|
||||
if (content.HasIdentity == false)
|
||||
{
|
||||
content.CreatorId = userId;
|
||||
}
|
||||
content.WriterId = userId;
|
||||
|
||||
repository.AddOrUpdate(content);
|
||||
|
||||
uow.Commit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteBlueprint(IContent content, int userId = 0)
|
||||
{
|
||||
using (new WriteLock(Locker))
|
||||
{
|
||||
using (var uow = UowProvider.GetUnitOfWork())
|
||||
{
|
||||
var repository = RepositoryFactory.CreateContentBlueprintRepository(uow);
|
||||
repository.Delete(content);
|
||||
uow.Commit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IContent CreateContentFromBlueprint(IContent blueprint, string name, int userId = 0)
|
||||
{
|
||||
if (blueprint == null) throw new ArgumentNullException("blueprint");
|
||||
|
||||
var contentType = blueprint.ContentType;
|
||||
var content = new Content(name, -1, contentType);
|
||||
content.Path = string.Concat(content.ParentId.ToString(), ",", content.Id);
|
||||
|
||||
using (var uow = UowProvider.GetUnitOfWork())
|
||||
{
|
||||
content.CreatorId = userId;
|
||||
content.WriterId = userId;
|
||||
|
||||
//Now we need to map all of the properties over!
|
||||
foreach (var property in blueprint.Properties)
|
||||
{
|
||||
content.SetValue(property.Alias, property.Value);
|
||||
}
|
||||
|
||||
uow.Commit();
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves a single <see cref="IContent"/> object
|
||||
/// </summary>
|
||||
@@ -1790,6 +1864,21 @@ namespace Umbraco.Core.Services
|
||||
return true;
|
||||
}
|
||||
|
||||
public IEnumerable<IContent> GetBlueprintsForContentTypes(params int[] documentTypeIds)
|
||||
{
|
||||
using (var uow = UowProvider.GetUnitOfWork(readOnly: true))
|
||||
{
|
||||
var repository = RepositoryFactory.CreateContentBlueprintRepository(uow);
|
||||
|
||||
var query = new Query<IContent>();
|
||||
if (documentTypeIds.Length > 0)
|
||||
{
|
||||
query.Where(x => documentTypeIds.Contains(x.ContentTypeId));
|
||||
}
|
||||
return repository.GetByQuery(query);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets paged content descendants as XML by path
|
||||
/// </summary>
|
||||
|
||||
@@ -367,6 +367,15 @@ namespace Umbraco.Core.Services
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<int> GetAllContentTypeIds(string[] aliases)
|
||||
{
|
||||
using (var uow = UowProvider.GetUnitOfWork(readOnly: true))
|
||||
{
|
||||
var repository = RepositoryFactory.CreateContentTypeRepository(uow);
|
||||
return repository.GetAllContentTypeIds(aliases);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copies a content type as a child under the specified parent if specified (otherwise to the root)
|
||||
/// </summary>
|
||||
|
||||
@@ -16,10 +16,10 @@ namespace Umbraco.Core.Services
|
||||
/// explicitly. These methods will replace the normal ones in IContentService in v8 and this will be removed.
|
||||
/// </summary>
|
||||
public interface IContentServiceOperations
|
||||
{
|
||||
//TODO: Remove this class in v8
|
||||
|
||||
//TODO: There's probably more that needs to be added like the EmptyRecycleBin, etc...
|
||||
{
|
||||
//TODO: Remove this class in v8
|
||||
|
||||
//TODO: There's probably more that needs to be added like the EmptyRecycleBin, etc...
|
||||
|
||||
/// <summary>
|
||||
/// Saves a single <see cref="IContent"/> object
|
||||
@@ -96,6 +96,12 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
public interface IContentService : IContentServiceBase
|
||||
{
|
||||
IEnumerable<IContent> GetBlueprintsForContentTypes(params int[] documentTypeIds);
|
||||
IContent GetBlueprintById(int id);
|
||||
void SaveBlueprint(IContent content, int userId = 0);
|
||||
void DeleteBlueprint(IContent content, int userId = 0);
|
||||
IContent CreateContentFromBlueprint(IContent blueprint, string name, int userId = 0);
|
||||
|
||||
/// <summary>
|
||||
/// Gets all XML entries found in the cmsContentXml table based on the given path
|
||||
/// </summary>
|
||||
|
||||
@@ -61,6 +61,13 @@ namespace Umbraco.Core.Services
|
||||
/// </param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<string> GetAllContentTypeAliases(params Guid[] objectTypes);
|
||||
|
||||
/// <summary>
|
||||
/// Returns all content type Ids for the aliases given
|
||||
/// </summary>
|
||||
/// <param name="aliases"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<int> GetAllContentTypeIds(string[] aliases);
|
||||
|
||||
/// <summary>
|
||||
/// Copies a content type as a child under the specified parent if specified (otherwise to the root)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Core
|
||||
@@ -24,6 +23,10 @@ namespace Umbraco.Core
|
||||
|
||||
[UdiType(UdiType.GuidUdi)]
|
||||
public const string Document = "document";
|
||||
|
||||
[UdiType(UdiType.GuidUdi)]
|
||||
public const string DocumentBluePrint = "document-blueprint";
|
||||
|
||||
[UdiType(UdiType.GuidUdi)]
|
||||
public const string Media = "media";
|
||||
[UdiType(UdiType.GuidUdi)]
|
||||
@@ -84,6 +87,8 @@ namespace Umbraco.Core
|
||||
public const string PartialViewMacro = "partial-view-macro";
|
||||
[UdiType(UdiType.StringUdi)]
|
||||
public const string Xslt = "xslt";
|
||||
[UdiType(UdiType.StringUdi)]
|
||||
public const string Language = "language";
|
||||
|
||||
public static string FromUmbracoObjectType(UmbracoObjectTypes umbracoObjectType)
|
||||
{
|
||||
@@ -123,6 +128,8 @@ namespace Umbraco.Core
|
||||
return FormsPreValue;
|
||||
case UmbracoObjectTypes.FormsDataSource:
|
||||
return FormsDataSource;
|
||||
case UmbracoObjectTypes.Language:
|
||||
return Language;
|
||||
}
|
||||
throw new NotSupportedException(string.Format("UmbracoObjectType \"{0}\" does not have a matching EntityType.", umbracoObjectType));
|
||||
}
|
||||
@@ -165,6 +172,8 @@ namespace Umbraco.Core
|
||||
return UmbracoObjectTypes.FormsPreValue;
|
||||
case FormsDataSource:
|
||||
return UmbracoObjectTypes.FormsDataSource;
|
||||
case Language:
|
||||
return UmbracoObjectTypes.Language;
|
||||
}
|
||||
throw new NotSupportedException(
|
||||
string.Format("EntityType \"{0}\" does not have a matching UmbracoObjectType.", entityType));
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace Umbraco.Core
|
||||
/// </summary>
|
||||
/// <param name="entity">The entity.</param>
|
||||
/// <returns>The entity identifier of the entity.</returns>
|
||||
public static GuidUdi GetUdi(this Umbraco.Core.Models.EntityContainer entity)
|
||||
public static GuidUdi GetUdi(this EntityContainer entity)
|
||||
{
|
||||
if (entity == null) throw new ArgumentNullException("entity");
|
||||
|
||||
@@ -246,6 +246,17 @@ namespace Umbraco.Core
|
||||
return new GuidUdi(Constants.UdiEntityType.RelationType, entity.Key).EnsureClosed();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the entity identifier of the entity.
|
||||
/// </summary>
|
||||
/// <param name="entity">The entity.</param>
|
||||
/// <returns>The entity identifier of the entity.</returns>
|
||||
public static StringUdi GetUdi(this ILanguage entity)
|
||||
{
|
||||
if (entity == null) throw new ArgumentNullException("entity");
|
||||
return new StringUdi(Constants.UdiEntityType.Language, entity.IsoCode).EnsureClosed();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the entity identifier of the entity.
|
||||
/// </summary>
|
||||
@@ -279,7 +290,7 @@ namespace Umbraco.Core
|
||||
var dataTypeComposition = entity as IDataTypeDefinition;
|
||||
if (dataTypeComposition != null) return dataTypeComposition.GetUdi();
|
||||
|
||||
var container = entity as Umbraco.Core.Models.EntityContainer;
|
||||
var container = entity as EntityContainer;
|
||||
if (container != null) return container.GetUdi();
|
||||
|
||||
var media = entity as IMedia;
|
||||
@@ -315,6 +326,9 @@ namespace Umbraco.Core
|
||||
var relationType = entity as IRelationType;
|
||||
if (relationType != null) return relationType.GetUdi();
|
||||
|
||||
var language = entity as ILanguage;
|
||||
if (language != null) return language.GetUdi();
|
||||
|
||||
throw new NotSupportedException(string.Format("Entity type {0} is not supported.", entity.GetType().FullName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,7 +301,7 @@ AnotherContentFinder
|
||||
public void Resolves_Actions()
|
||||
{
|
||||
var actions = _manager.ResolveActions();
|
||||
Assert.AreEqual(37, actions.Count());
|
||||
Assert.AreEqual(38, actions.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -46,11 +46,112 @@ namespace Umbraco.Tests.Services
|
||||
VersionableRepositoryBase<int, IContent>.ThrowOnWarning = false;
|
||||
|
||||
base.TearDown();
|
||||
}
|
||||
|
||||
//TODO Add test to verify there is only ONE newest document/content in cmsDocument table after updating.
|
||||
}
|
||||
|
||||
//TODO Add test to verify there is only ONE newest document/content in cmsDocument table after updating.
|
||||
//TODO Add test to delete specific version (with and without deleting prior versions) and versions by date.
|
||||
|
||||
[Test]
|
||||
public void Create_Blueprint()
|
||||
{
|
||||
var contentService = ServiceContext.ContentService;
|
||||
var contentTypeService = ServiceContext.ContentTypeService;
|
||||
|
||||
var contentType = MockedContentTypes.CreateTextpageContentType();
|
||||
contentTypeService.Save(contentType);
|
||||
|
||||
var blueprint = MockedContent.CreateTextpageContent(contentType, "hello", -1);
|
||||
blueprint.SetValue("title", "blueprint 1");
|
||||
blueprint.SetValue("bodyText", "blueprint 2");
|
||||
blueprint.SetValue("keywords", "blueprint 3");
|
||||
blueprint.SetValue("description", "blueprint 4");
|
||||
|
||||
contentService.SaveBlueprint(blueprint);
|
||||
|
||||
var found = contentService.GetBlueprintsForContentTypes().ToArray();
|
||||
Assert.AreEqual(1, found.Length);
|
||||
|
||||
//ensures it's not found by normal content
|
||||
var contentFound = contentService.GetById(found[0].Id);
|
||||
Assert.IsNull(contentFound);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Delete_Blueprint()
|
||||
{
|
||||
var contentService = ServiceContext.ContentService;
|
||||
var contentTypeService = ServiceContext.ContentTypeService;
|
||||
|
||||
var contentType = MockedContentTypes.CreateTextpageContentType();
|
||||
contentTypeService.Save(contentType);
|
||||
|
||||
var blueprint = MockedContent.CreateTextpageContent(contentType, "hello", -1);
|
||||
blueprint.SetValue("title", "blueprint 1");
|
||||
blueprint.SetValue("bodyText", "blueprint 2");
|
||||
blueprint.SetValue("keywords", "blueprint 3");
|
||||
blueprint.SetValue("description", "blueprint 4");
|
||||
|
||||
contentService.SaveBlueprint(blueprint);
|
||||
|
||||
contentService.DeleteBlueprint(blueprint);
|
||||
|
||||
var found = contentService.GetBlueprintsForContentTypes().ToArray();
|
||||
Assert.AreEqual(0, found.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Create_Content_From_Blueprint()
|
||||
{
|
||||
var contentService = ServiceContext.ContentService;
|
||||
var contentTypeService = ServiceContext.ContentTypeService;
|
||||
|
||||
var contentType = MockedContentTypes.CreateTextpageContentType();
|
||||
contentTypeService.Save(contentType);
|
||||
|
||||
var blueprint = MockedContent.CreateTextpageContent(contentType, "hello", -1);
|
||||
blueprint.SetValue("title", "blueprint 1");
|
||||
blueprint.SetValue("bodyText", "blueprint 2");
|
||||
blueprint.SetValue("keywords", "blueprint 3");
|
||||
blueprint.SetValue("description", "blueprint 4");
|
||||
|
||||
contentService.SaveBlueprint(blueprint);
|
||||
|
||||
var fromBlueprint = contentService.CreateContentFromBlueprint(blueprint, "hello world");
|
||||
contentService.Save(fromBlueprint);
|
||||
|
||||
Assert.IsTrue(fromBlueprint.HasIdentity);
|
||||
Assert.AreEqual("blueprint 1", fromBlueprint.Properties["title"].Value);
|
||||
Assert.AreEqual("blueprint 2", fromBlueprint.Properties["bodyText"].Value);
|
||||
Assert.AreEqual("blueprint 3", fromBlueprint.Properties["keywords"].Value);
|
||||
Assert.AreEqual("blueprint 4", fromBlueprint.Properties["description"].Value);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_All_Blueprints()
|
||||
{
|
||||
var contentService = ServiceContext.ContentService;
|
||||
var contentTypeService = ServiceContext.ContentTypeService;
|
||||
|
||||
var ct1 = MockedContentTypes.CreateTextpageContentType("ct1");
|
||||
contentTypeService.Save(ct1);
|
||||
var ct2 = MockedContentTypes.CreateTextpageContentType("ct2");
|
||||
contentTypeService.Save(ct2);
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
var blueprint = MockedContent.CreateTextpageContent(i % 2 == 0 ? ct1 : ct2, "hello" + i, -1);
|
||||
contentService.SaveBlueprint(blueprint);
|
||||
}
|
||||
|
||||
var found = contentService.GetBlueprintsForContentTypes().ToArray();
|
||||
Assert.AreEqual(10, found.Length);
|
||||
|
||||
found = contentService.GetBlueprintsForContentTypes(ct1.Id).ToArray();
|
||||
Assert.AreEqual(5, found.Length);
|
||||
|
||||
found = contentService.GetBlueprintsForContentTypes(ct2.Id).ToArray();
|
||||
Assert.AreEqual(5, found.Length);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures that we don't unpublish all nodes when a node is deleted that has an invalid path of -1
|
||||
|
||||
@@ -59,9 +59,9 @@ namespace Umbraco.Tests.Services
|
||||
|
||||
//assert
|
||||
Assert.AreEqual(3, permissions.Count());
|
||||
Assert.AreEqual(17, permissions.ElementAt(0).AssignedPermissions.Length);
|
||||
Assert.AreEqual(17, permissions.ElementAt(1).AssignedPermissions.Length);
|
||||
Assert.AreEqual(17, permissions.ElementAt(2).AssignedPermissions.Length);
|
||||
Assert.AreEqual(18, permissions.ElementAt(0).AssignedPermissions.Count());
|
||||
Assert.AreEqual(18, permissions.ElementAt(1).AssignedPermissions.Count());
|
||||
Assert.AreEqual(18, permissions.ElementAt(2).AssignedPermissions.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -326,7 +326,7 @@ namespace Umbraco.Tests.Services
|
||||
Assert.AreEqual(10, totalRecs);
|
||||
Assert.AreEqual("test0", found.First().Username);
|
||||
Assert.AreEqual("test1", found.Last().Username);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_All_Paged_Users_For_Group()
|
||||
@@ -558,15 +558,15 @@ namespace Umbraco.Tests.Services
|
||||
Alias = "Group1",
|
||||
Name = "Group 1"
|
||||
};
|
||||
userGroup1.AddAllowedSection("test");
|
||||
|
||||
userGroup1.AddAllowedSection("test");
|
||||
|
||||
var userGroup2 = new UserGroup
|
||||
{
|
||||
Alias = "Group2",
|
||||
Name = "Group 2"
|
||||
};
|
||||
userGroup2.AddAllowedSection("test");
|
||||
|
||||
userGroup2.AddAllowedSection("test");
|
||||
|
||||
var userGroup3 = new UserGroup
|
||||
{
|
||||
Alias = "Group3",
|
||||
@@ -711,10 +711,10 @@ namespace Umbraco.Tests.Services
|
||||
Permissions = "ABCDEFGHIJ1234567".ToCharArray().Select(x => x.ToString())
|
||||
};
|
||||
|
||||
userGroup.AddAllowedSection("content");
|
||||
userGroup.AddAllowedSection("media");
|
||||
|
||||
ServiceContext.UserService.Save(userGroup);
|
||||
userGroup.AddAllowedSection("content");
|
||||
userGroup.AddAllowedSection("media");
|
||||
|
||||
ServiceContext.UserService.Save(userGroup);
|
||||
|
||||
return userGroup;
|
||||
}
|
||||
|
||||
@@ -382,6 +382,9 @@ module.exports = function (grunt) {
|
||||
html: {
|
||||
files: ['src/views/**/*.html', 'src/*.html'],
|
||||
tasks: ['watch-html', 'timestamp']
|
||||
},
|
||||
options: {
|
||||
interval: 500
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('da',{
|
||||
"Cut": "Klip",
|
||||
"Heading 5": "Overskrift 5",
|
||||
"Header 2": "Overskrift 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser underst\u00f8tter ikke direkte adgang til clipboard. Benyt Ctrl+X\/C\/ keybord shortcuts i stedet for.",
|
||||
"Heading 4": "Overskrift 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "Overskrift 2",
|
||||
"Paste": "Inds\u00e6t",
|
||||
"Close": "Luk",
|
||||
"Font Family": "Skrifttype",
|
||||
"Pre": "Pre",
|
||||
"Align right": "H\u00f8jrejusteret",
|
||||
"New document": "Nyt dokument",
|
||||
"Blockquote": "Indrykning",
|
||||
"Numbered list": "Nummerering",
|
||||
"Heading 1": "Overskrift 1",
|
||||
"Headings": "Overskrifter",
|
||||
"Increase indent": "For\u00f8g indrykning",
|
||||
"Formats": "Formater",
|
||||
"Headers": "Overskrifter",
|
||||
"Select all": "V\u00e6lg alle",
|
||||
"Header 3": "Overskrift 3",
|
||||
"Blocks": "Blokke",
|
||||
"Undo": "Fortryd",
|
||||
"Strikethrough": "Gennemstreg",
|
||||
"Bullet list": "Punkt tegn",
|
||||
"Header 1": "Overskrift 1",
|
||||
"Superscript": "H\u00e6vet",
|
||||
"Clear formatting": "Nulstil formattering",
|
||||
"Font Sizes": "Skriftst\u00f8rrelse",
|
||||
"Subscript": "S\u00e6nket",
|
||||
"Header 6": "Overskrift 6",
|
||||
"Redo": "Genopret",
|
||||
"Paragraph": "S\u00e6tning",
|
||||
"Ok": "Ok",
|
||||
"Bold": "Fed",
|
||||
"Code": "Code",
|
||||
"Italic": "Kursiv",
|
||||
"Align center": "Centreret",
|
||||
"Header 5": "Overskrift 5",
|
||||
"Heading 6": "Overskrift 6",
|
||||
"Heading 3": "Overskrift 3",
|
||||
"Decrease indent": "Formindsk indrykning",
|
||||
"Header 4": "Overskrift 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "S\u00e6t ind er indstillet til at inds\u00e6tte som ren tekst. Indhold bliver nu indsat uden formatering indtil du \u00e6ndrer indstillingen.",
|
||||
"Underline": "Understreg",
|
||||
"Cancel": "Fortryd",
|
||||
"Justify": "Justering",
|
||||
"Inline": "Inline",
|
||||
"Copy": "Kopier",
|
||||
"Align left": "Venstrejusteret",
|
||||
"Visual aids": "Visuel hj\u00e6lp",
|
||||
"Lower Greek": "Lower Gr\u00e6sk",
|
||||
"Square": "Kvadrat",
|
||||
"Default": "Standard",
|
||||
"Lower Alpha": "Lower Alpha",
|
||||
"Circle": "Cirkel",
|
||||
"Disc": "Disk",
|
||||
"Upper Alpha": "Upper Alpha",
|
||||
"Upper Roman": "Upper Roman",
|
||||
"Lower Roman": "Lower Roman",
|
||||
"Name": "Navn",
|
||||
"Anchor": "Anchor",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "Du har ikke gemte \u00e6ndringer. Er du sikker p\u00e5 at du vil forts\u00e6tte?",
|
||||
"Restore last draft": "Genopret sidste kladde",
|
||||
"Special character": "Specielle tegn",
|
||||
"Source code": "Kildekode",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "Farve",
|
||||
"Right to left": "H\u00f8jre til venstre",
|
||||
"Left to right": "Venstre til h\u00f8jre",
|
||||
"Emoticons": "Emot-ikoner",
|
||||
"Robots": "Robotter",
|
||||
"Document properties": "Dokument egenskaber",
|
||||
"Title": "Titel",
|
||||
"Keywords": "S\u00f8geord",
|
||||
"Encoding": "Kodning",
|
||||
"Description": "Beskrivelse",
|
||||
"Author": "Forfatter",
|
||||
"Fullscreen": "Fuldsk\u00e6rm",
|
||||
"Horizontal line": "Vandret linie",
|
||||
"Horizontal space": "Vandret afstand",
|
||||
"Insert\/edit image": "Inds\u00e6t\/ret billede",
|
||||
"General": "Generet",
|
||||
"Advanced": "Avanceret",
|
||||
"Source": "Kilde",
|
||||
"Border": "Kant",
|
||||
"Constrain proportions": "Behold propertioner",
|
||||
"Vertical space": "Lodret afstand",
|
||||
"Image description": "Billede beskrivelse",
|
||||
"Style": "Stil",
|
||||
"Dimensions": "Dimensioner",
|
||||
"Insert image": "Inds\u00e6t billede",
|
||||
"Zoom in": "Zoom ind",
|
||||
"Contrast": "Kontrast",
|
||||
"Back": "Tilbage",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "Flip horisontalt",
|
||||
"Resize": "Skaler",
|
||||
"Sharpen": "G\u00f8r skarpere",
|
||||
"Zoom out": "Zoom ud",
|
||||
"Image options": "Billede indstillinger",
|
||||
"Apply": "Anvend",
|
||||
"Brightness": "Lysstyrke",
|
||||
"Rotate clockwise": "Drej med urets retning",
|
||||
"Rotate counterclockwise": "Drej modsat urets retning",
|
||||
"Edit image": "Rediger billede",
|
||||
"Color levels": "Farve niveauer",
|
||||
"Crop": "Besk\u00e6r",
|
||||
"Orientation": "Retning",
|
||||
"Flip vertically": "Flip vertikalt",
|
||||
"Invert": "Inverter",
|
||||
"Insert date\/time": "Inds\u00e6t dato\/klokkeslet",
|
||||
"Remove link": "Fjern link",
|
||||
"Url": "Url",
|
||||
"Text to display": "Vis tekst",
|
||||
"Anchors": "Ankre",
|
||||
"Insert link": "Inds\u00e6t link",
|
||||
"New window": "Nyt vindue",
|
||||
"None": "Ingen",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URLen som du angav ser ud til at v\u00e6re et eksternt link. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks http:\/\/ ?",
|
||||
"Target": "Target",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URLen som du angav ser ud til at v\u00e6re en email adresse. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks mailto: ?",
|
||||
"Insert\/edit link": "Inds\u00e6t\/ret link",
|
||||
"Insert\/edit video": "Inds\u00e6t\/ret video",
|
||||
"Poster": "Poster",
|
||||
"Alternative source": "Alternativ kilde",
|
||||
"Paste your embed code below:": "Inds\u00e6t din embed kode herunder:",
|
||||
"Insert video": "Inds\u00e6t video",
|
||||
"Embed": "Integrer",
|
||||
"Nonbreaking space": "H\u00e5rdt mellemrum",
|
||||
"Page break": "Sideskift",
|
||||
"Paste as text": "Inds\u00e6t som ren tekst",
|
||||
"Preview": "Forh\u00e5ndsvisning",
|
||||
"Print": "Udskriv",
|
||||
"Save": "Gem",
|
||||
"Could not find the specified string.": "Kunne ikke finde s\u00f8getekst",
|
||||
"Replace": "Erstat",
|
||||
"Next": "N\u00e6ste",
|
||||
"Whole words": "Hele ord",
|
||||
"Find and replace": "Find og erstat",
|
||||
"Replace with": "Erstat med",
|
||||
"Find": "Find",
|
||||
"Replace all": "Erstat alt",
|
||||
"Match case": "STORE og sm\u00e5 bogstaver",
|
||||
"Prev": "Forrige",
|
||||
"Spellcheck": "Stavekontrol",
|
||||
"Finish": "F\u00e6rdig",
|
||||
"Ignore all": "Ignorer alt",
|
||||
"Ignore": "Ignorer",
|
||||
"Add to Dictionary": "Tilf\u00f8j til ordbog",
|
||||
"Insert row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
|
||||
"Rows": "R\u00e6kker",
|
||||
"Height": "H\u00f8jde",
|
||||
"Paste row after": "Inds\u00e6t r\u00e6kke efter",
|
||||
"Alignment": "Tilpasning",
|
||||
"Border color": "Kant farve",
|
||||
"Column group": "Kolonne gruppe",
|
||||
"Row": "R\u00e6kke",
|
||||
"Insert column before": "Inds\u00e6t kolonne f\u00f8r",
|
||||
"Split cell": "Split celle",
|
||||
"Cell padding": "Celle padding",
|
||||
"Cell spacing": "Celle afstand",
|
||||
"Row type": "R\u00e6kke type",
|
||||
"Insert table": "Inds\u00e6t tabel",
|
||||
"Body": "Krop",
|
||||
"Caption": "Tekst",
|
||||
"Footer": "Sidefod",
|
||||
"Delete row": "Slet r\u00e6kke",
|
||||
"Paste row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
|
||||
"Scope": "Anvendelsesomr\u00e5de",
|
||||
"Delete table": "Slet tabel",
|
||||
"H Align": "H juster",
|
||||
"Top": "Top",
|
||||
"Header cell": "Sidehoved celle",
|
||||
"Column": "Kolonne",
|
||||
"Row group": "R\u00e6kke gruppe",
|
||||
"Cell": "Celle",
|
||||
"Middle": "Midt",
|
||||
"Cell type": "Celle type",
|
||||
"Copy row": "Kopier r\u00e6kke",
|
||||
"Row properties": "R\u00e6kke egenskaber",
|
||||
"Table properties": "Tabel egenskaber",
|
||||
"Bottom": "Bund",
|
||||
"V Align": "V juster",
|
||||
"Header": "Sidehoved",
|
||||
"Right": "H\u00f8jre",
|
||||
"Insert column after": "Inds\u00e6t kolonne efter",
|
||||
"Cols": "Kolonne",
|
||||
"Insert row after": "Inds\u00e6t r\u00e6kke efter",
|
||||
"Width": "Bredde",
|
||||
"Cell properties": "Celle egenskaber",
|
||||
"Left": "Venstre",
|
||||
"Cut row": "Klip r\u00e6kke",
|
||||
"Delete column": "Slet kolonne",
|
||||
"Center": "Centrering",
|
||||
"Merge cells": "Flet celler",
|
||||
"Insert template": "Inds\u00e6t skabelon",
|
||||
"Templates": "Skabeloner",
|
||||
"Background color": "Baggrunds farve",
|
||||
"Custom...": "Brugerdefineret...",
|
||||
"Custom color": "Brugerdefineret farve",
|
||||
"No color": "Ingen farve",
|
||||
"Text color": "Tekst farve",
|
||||
"Show blocks": "Vis klokke",
|
||||
"Show invisible characters": "Vis usynlige tegn",
|
||||
"Words: {0}": "Ord: {0}",
|
||||
"Insert": "Inds\u00e6t",
|
||||
"File": "Fil",
|
||||
"Edit": "Rediger",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text omr\u00e5de. Tryk ALT-F9 for menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\u00e6lp",
|
||||
"Tools": "V\u00e6rkt\u00f8j",
|
||||
"View": "Vis",
|
||||
"Table": "Tabel",
|
||||
"Format": "Format"
|
||||
});
|
||||
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('de',{
|
||||
"Cut": "Ausschneiden",
|
||||
"Heading 5": "\u00dcberschrift 5",
|
||||
"Header 2": "\u00dcberschrift 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.",
|
||||
"Heading 4": "\u00dcberschrift 4",
|
||||
"Div": "Textblock",
|
||||
"Heading 2": "\u00dcberschrift 2",
|
||||
"Paste": "Einf\u00fcgen",
|
||||
"Close": "Schlie\u00dfen",
|
||||
"Font Family": "Schriftart",
|
||||
"Pre": "Vorformatierter Text",
|
||||
"Align right": "Rechtsb\u00fcndig ausrichten",
|
||||
"New document": "Neues Dokument",
|
||||
"Blockquote": "Zitat",
|
||||
"Numbered list": "Nummerierte Liste",
|
||||
"Heading 1": "\u00dcberschrift 1",
|
||||
"Headings": "\u00dcberschriften",
|
||||
"Increase indent": "Einzug vergr\u00f6\u00dfern",
|
||||
"Formats": "Formate",
|
||||
"Headers": "\u00dcberschriften",
|
||||
"Select all": "Alles ausw\u00e4hlen",
|
||||
"Header 3": "\u00dcberschrift 3",
|
||||
"Blocks": "Absatzformate",
|
||||
"Undo": "R\u00fcckg\u00e4ngig",
|
||||
"Strikethrough": "Durchgestrichen",
|
||||
"Bullet list": "Aufz\u00e4hlung",
|
||||
"Header 1": "\u00dcberschrift 1",
|
||||
"Superscript": "Hochgestellt",
|
||||
"Clear formatting": "Formatierung entfernen",
|
||||
"Font Sizes": "Schriftgr\u00f6\u00dfe",
|
||||
"Subscript": "Tiefgestellt",
|
||||
"Header 6": "\u00dcberschrift 6",
|
||||
"Redo": "Wiederholen",
|
||||
"Paragraph": "Absatz",
|
||||
"Ok": "Ok",
|
||||
"Bold": "Fett",
|
||||
"Code": "Quelltext",
|
||||
"Italic": "Kursiv",
|
||||
"Align center": "Zentriert ausrichten",
|
||||
"Header 5": "\u00dcberschrift 5",
|
||||
"Heading 6": "\u00dcberschrift 6",
|
||||
"Heading 3": "\u00dcberschrift 3",
|
||||
"Decrease indent": "Einzug verkleinern",
|
||||
"Header 4": "\u00dcberschrift 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
|
||||
"Underline": "Unterstrichen",
|
||||
"Cancel": "Abbrechen",
|
||||
"Justify": "Blocksatz",
|
||||
"Inline": "Zeichenformate",
|
||||
"Copy": "Kopieren",
|
||||
"Align left": "Linksb\u00fcndig ausrichten",
|
||||
"Visual aids": "Visuelle Hilfen",
|
||||
"Lower Greek": "Griechische Kleinbuchstaben",
|
||||
"Square": "Quadrat",
|
||||
"Default": "Standard",
|
||||
"Lower Alpha": "Kleinbuchstaben",
|
||||
"Circle": "Kreis",
|
||||
"Disc": "Punkt",
|
||||
"Upper Alpha": "Gro\u00dfbuchstaben",
|
||||
"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
|
||||
"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
|
||||
"Name": "Name",
|
||||
"Anchor": "Textmarke",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
|
||||
"Restore last draft": "Letzten Entwurf wiederherstellen",
|
||||
"Special character": "Sonderzeichen",
|
||||
"Source code": "Quelltext",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "Farbe",
|
||||
"Right to left": "Von rechts nach links",
|
||||
"Left to right": "Von links nach rechts",
|
||||
"Emoticons": "Emoticons",
|
||||
"Robots": "Robots",
|
||||
"Document properties": "Dokumenteigenschaften",
|
||||
"Title": "Titel",
|
||||
"Keywords": "Sch\u00fcsselw\u00f6rter",
|
||||
"Encoding": "Zeichenkodierung",
|
||||
"Description": "Beschreibung",
|
||||
"Author": "Verfasser",
|
||||
"Fullscreen": "Vollbild",
|
||||
"Horizontal line": "Horizontale Linie",
|
||||
"Horizontal space": "Horizontaler Abstand",
|
||||
"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
|
||||
"General": "Allgemein",
|
||||
"Advanced": "Erweitert",
|
||||
"Source": "Quelle",
|
||||
"Border": "Rahmen",
|
||||
"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
|
||||
"Vertical space": "Vertikaler Abstand",
|
||||
"Image description": "Bildbeschreibung",
|
||||
"Style": "Stil",
|
||||
"Dimensions": "Abmessungen",
|
||||
"Insert image": "Bild einf\u00fcgen",
|
||||
"Zoom in": "Ansicht vergr\u00f6\u00dfern",
|
||||
"Contrast": "Kontrast",
|
||||
"Back": "Zur\u00fcck",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "Horizontal spiegeln",
|
||||
"Resize": "Skalieren",
|
||||
"Sharpen": "Sch\u00e4rfen",
|
||||
"Zoom out": "Ansicht verkleinern",
|
||||
"Image options": "Bildeigenschaften",
|
||||
"Apply": "Anwenden",
|
||||
"Brightness": "Helligkeit",
|
||||
"Rotate clockwise": "Im Uhrzeigersinn drehen",
|
||||
"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
|
||||
"Edit image": "Bild bearbeiten",
|
||||
"Color levels": "Farbwerte",
|
||||
"Crop": "Bescheiden",
|
||||
"Orientation": "Ausrichtung",
|
||||
"Flip vertically": "Vertikal spiegeln",
|
||||
"Invert": "Invertieren",
|
||||
"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
|
||||
"Remove link": "Link entfernen",
|
||||
"Url": "URL",
|
||||
"Text to display": "Anzuzeigender Text",
|
||||
"Anchors": "Textmarken",
|
||||
"Insert link": "Link einf\u00fcgen",
|
||||
"New window": "Neues Fenster",
|
||||
"None": "Keine",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
|
||||
"Target": "Ziel",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
|
||||
"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
|
||||
"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
|
||||
"Poster": "Poster",
|
||||
"Alternative source": "Alternative Quelle",
|
||||
"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
|
||||
"Insert video": "Video einf\u00fcgen",
|
||||
"Embed": "Einbetten",
|
||||
"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
|
||||
"Page break": "Seitenumbruch",
|
||||
"Paste as text": "Als Text einf\u00fcgen",
|
||||
"Preview": "Vorschau",
|
||||
"Print": "Drucken",
|
||||
"Save": "Speichern",
|
||||
"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
|
||||
"Replace": "Ersetzen",
|
||||
"Next": "Weiter",
|
||||
"Whole words": "Nur ganze W\u00f6rter",
|
||||
"Find and replace": "Suchen und ersetzen",
|
||||
"Replace with": "Ersetzen durch",
|
||||
"Find": "Suchen",
|
||||
"Replace all": "Alles ersetzen",
|
||||
"Match case": "Gro\u00df-\/Kleinschreibung beachten",
|
||||
"Prev": "Zur\u00fcck",
|
||||
"Spellcheck": "Rechtschreibpr\u00fcfung",
|
||||
"Finish": "Ende",
|
||||
"Ignore all": "Alles Ignorieren",
|
||||
"Ignore": "Ignorieren",
|
||||
"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
|
||||
"Insert row before": "Neue Zeile davor einf\u00fcgen ",
|
||||
"Rows": "Zeilen",
|
||||
"Height": "H\u00f6he",
|
||||
"Paste row after": "Zeile danach einf\u00fcgen",
|
||||
"Alignment": "Ausrichtung",
|
||||
"Border color": "Rahmenfarbe",
|
||||
"Column group": "Spaltengruppe",
|
||||
"Row": "Zeile",
|
||||
"Insert column before": "Neue Spalte davor einf\u00fcgen",
|
||||
"Split cell": "Zelle aufteilen",
|
||||
"Cell padding": "Zelleninnenabstand",
|
||||
"Cell spacing": "Zellenabstand",
|
||||
"Row type": "Zeilentyp",
|
||||
"Insert table": "Tabelle einf\u00fcgen",
|
||||
"Body": "Inhalt",
|
||||
"Caption": "Beschriftung",
|
||||
"Footer": "Fu\u00dfzeile",
|
||||
"Delete row": "Zeile l\u00f6schen",
|
||||
"Paste row before": "Zeile davor einf\u00fcgen",
|
||||
"Scope": "G\u00fcltigkeitsbereich",
|
||||
"Delete table": "Tabelle l\u00f6schen",
|
||||
"H Align": "Horizontale Ausrichtung",
|
||||
"Top": "Oben",
|
||||
"Header cell": "Kopfzelle",
|
||||
"Column": "Spalte",
|
||||
"Row group": "Zeilengruppe",
|
||||
"Cell": "Zelle",
|
||||
"Middle": "Mitte",
|
||||
"Cell type": "Zellentyp",
|
||||
"Copy row": "Zeile kopieren",
|
||||
"Row properties": "Zeileneigenschaften",
|
||||
"Table properties": "Tabelleneigenschaften",
|
||||
"Bottom": "Unten",
|
||||
"V Align": "Vertikale Ausrichtung",
|
||||
"Header": "Kopfzeile",
|
||||
"Right": "Rechtsb\u00fcndig",
|
||||
"Insert column after": "Neue Spalte danach einf\u00fcgen",
|
||||
"Cols": "Spalten",
|
||||
"Insert row after": "Neue Zeile danach einf\u00fcgen",
|
||||
"Width": "Breite",
|
||||
"Cell properties": "Zelleneigenschaften",
|
||||
"Left": "Linksb\u00fcndig",
|
||||
"Cut row": "Zeile ausschneiden",
|
||||
"Delete column": "Spalte l\u00f6schen",
|
||||
"Center": "Zentriert",
|
||||
"Merge cells": "Zellen verbinden",
|
||||
"Insert template": "Vorlage einf\u00fcgen ",
|
||||
"Templates": "Vorlagen",
|
||||
"Background color": "Hintergrundfarbe",
|
||||
"Custom...": "Benutzerdefiniert...",
|
||||
"Custom color": "Benutzerdefinierte Farbe",
|
||||
"No color": "Keine Farbe",
|
||||
"Text color": "Textfarbe",
|
||||
"Show blocks": " Bl\u00f6cke anzeigen",
|
||||
"Show invisible characters": "Unsichtbare Zeichen anzeigen",
|
||||
"Words: {0}": "W\u00f6rter: {0}",
|
||||
"Insert": "Einf\u00fcgen",
|
||||
"File": "Datei",
|
||||
"Edit": "Bearbeiten",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
|
||||
"Tools": "Werkzeuge",
|
||||
"View": "Ansicht",
|
||||
"Table": "Tabelle",
|
||||
"Format": "Format"
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('fi',{
|
||||
"Cut": "Leikkaa",
|
||||
"Heading 5": "Otsikko 5",
|
||||
"Header 2": "Otsikko 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Selaimesi ei tue leikep\u00f6yd\u00e4n suoraa k\u00e4ytt\u00e4mist\u00e4. Ole hyv\u00e4 ja k\u00e4yt\u00e4 n\u00e4pp\u00e4imist\u00f6n Ctrl+X\/C\/V n\u00e4pp\u00e4inyhdistelmi\u00e4.",
|
||||
"Heading 4": "Otsikko 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "Otsikko 2",
|
||||
"Paste": "Liit\u00e4",
|
||||
"Close": "Sulje",
|
||||
"Font Family": "Fontti",
|
||||
"Pre": "Esimuotoiltu",
|
||||
"Align right": "Tasaa oikealle",
|
||||
"New document": "Uusi dokumentti",
|
||||
"Blockquote": "Lainauslohko",
|
||||
"Numbered list": "J\u00e4rjestetty lista",
|
||||
"Heading 1": "Otsikko 1",
|
||||
"Headings": "Otsikot",
|
||||
"Increase indent": "Loitonna",
|
||||
"Formats": "Muotoilut",
|
||||
"Headers": "Otsikot",
|
||||
"Select all": "Valitse kaikki",
|
||||
"Header 3": "Otsikko 3",
|
||||
"Blocks": "Lohkot",
|
||||
"Undo": "Peru",
|
||||
"Strikethrough": "Yliviivaus",
|
||||
"Bullet list": "J\u00e4rjest\u00e4m\u00e4t\u00f6n lista",
|
||||
"Header 1": "Otsikko 1",
|
||||
"Superscript": "Yl\u00e4indeksi",
|
||||
"Clear formatting": "Poista muotoilu",
|
||||
"Font Sizes": "Fonttikoko",
|
||||
"Subscript": "Alaindeksi",
|
||||
"Header 6": "Otsikko 6",
|
||||
"Redo": "Tee uudelleen",
|
||||
"Paragraph": "Kappale",
|
||||
"Ok": "Ok",
|
||||
"Bold": "Lihavointi",
|
||||
"Code": "Koodi",
|
||||
"Italic": "Kursivointi",
|
||||
"Align center": "Keskit\u00e4",
|
||||
"Header 5": "Otsikko 5",
|
||||
"Heading 6": "Otsikko 6",
|
||||
"Heading 3": "Otsikko 3",
|
||||
"Decrease indent": "Sisenn\u00e4",
|
||||
"Header 4": "Otsikko 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Liitt\u00e4minen on nyt pelk\u00e4n tekstin -tilassa. Sis\u00e4ll\u00f6t liitet\u00e4\u00e4n nyt pelkk\u00e4n\u00e4 tekstin\u00e4, kunnes otat vaihtoehdon pois k\u00e4yt\u00f6st\u00e4.",
|
||||
"Underline": "Alleviivaus",
|
||||
"Cancel": "Peruuta",
|
||||
"Justify": "Tasaa",
|
||||
"Inline": "Samalla rivill\u00e4",
|
||||
"Copy": "Kopioi",
|
||||
"Align left": "Tasaa vasemmalle",
|
||||
"Visual aids": "Visuaaliset neuvot",
|
||||
"Lower Greek": "pienet kirjaimet: \u03b1, \u03b2, \u03b3",
|
||||
"Square": "Neli\u00f6",
|
||||
"Default": "Oletus",
|
||||
"Lower Alpha": "pienet kirjaimet: a, b, c",
|
||||
"Circle": "Pallo",
|
||||
"Disc": "Ympyr\u00e4",
|
||||
"Upper Alpha": "isot kirjaimet: A, B, C",
|
||||
"Upper Roman": "isot kirjaimet: I, II, III",
|
||||
"Lower Roman": "pienet kirjaimet: i, ii, iii",
|
||||
"Name": "Nimi",
|
||||
"Anchor": "Ankkuri",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "Sinulla on tallentamattomia muutoksia, haluatko varmasti siirty\u00e4 toiselle sivulle?",
|
||||
"Restore last draft": "Palauta aiempi luonnos",
|
||||
"Special character": "Erikoismerkki",
|
||||
"Source code": "L\u00e4hdekoodi",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "V\u00e4ri",
|
||||
"Right to left": "Oikealta vasemmalle",
|
||||
"Left to right": "Vasemmalta oikealle",
|
||||
"Emoticons": "Hymi\u00f6t",
|
||||
"Robots": "Robotit",
|
||||
"Document properties": "Dokumentin ominaisuudet",
|
||||
"Title": "Otsikko",
|
||||
"Keywords": "Avainsanat",
|
||||
"Encoding": "Merkist\u00f6",
|
||||
"Description": "Kuvaus",
|
||||
"Author": "Tekij\u00e4",
|
||||
"Fullscreen": "Koko ruutu",
|
||||
"Horizontal line": "Vaakasuora viiva",
|
||||
"Horizontal space": "Horisontaalinen tila",
|
||||
"Insert\/edit image": "Lis\u00e4\u00e4\/muokkaa kuva",
|
||||
"General": "Yleiset",
|
||||
"Advanced": "Lis\u00e4asetukset",
|
||||
"Source": "L\u00e4hde",
|
||||
"Border": "Reunus",
|
||||
"Constrain proportions": "S\u00e4ilyt\u00e4 mittasuhteet",
|
||||
"Vertical space": "Vertikaalinen tila",
|
||||
"Image description": "Kuvaus",
|
||||
"Style": "Tyyli",
|
||||
"Dimensions": "Mittasuhteet",
|
||||
"Insert image": "Lis\u00e4\u00e4 kuva",
|
||||
"Zoom in": "L\u00e4henn\u00e4",
|
||||
"Contrast": "Kontrasti",
|
||||
"Back": "Takaisin",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "K\u00e4\u00e4nn\u00e4 vaakasuunnassa",
|
||||
"Resize": "Kuvan koon muutos",
|
||||
"Sharpen": "Ter\u00e4vyys",
|
||||
"Zoom out": "Loitonna",
|
||||
"Image options": "Kuvan asetukset",
|
||||
"Apply": "Aseta",
|
||||
"Brightness": "Kirkkaus",
|
||||
"Rotate clockwise": "Kierr\u00e4 my\u00f6t\u00e4p\u00e4iv\u00e4\u00e4n",
|
||||
"Rotate counterclockwise": "Kierr\u00e4 vastap\u00e4iv\u00e4\u00e4n",
|
||||
"Edit image": "Muokkaa kuvaa",
|
||||
"Color levels": "V\u00e4ritasot",
|
||||
"Crop": "Rajaa valintaan",
|
||||
"Orientation": "Suunta",
|
||||
"Flip vertically": "K\u00e4\u00e4nn\u00e4 pystysuunnassa",
|
||||
"Invert": "K\u00e4\u00e4nteinen",
|
||||
"Insert date\/time": "Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 tai aika",
|
||||
"Remove link": "Poista linkki",
|
||||
"Url": "Osoite",
|
||||
"Text to display": "N\u00e4ytett\u00e4v\u00e4 teksti",
|
||||
"Anchors": "Ankkurit",
|
||||
"Insert link": "Lis\u00e4\u00e4 linkki",
|
||||
"New window": "Uusi ikkuna",
|
||||
"None": "Ei mit\u00e4\u00e4n",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan ulkoinen linkki. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun http:\/\/ -etuliitteen?",
|
||||
"Target": "Kohde",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun mailto: -etuliitteen?",
|
||||
"Insert\/edit link": "Lis\u00e4\u00e4\/muokkaa linkki",
|
||||
"Insert\/edit video": "Lis\u00e4\u00e4\/muokkaa video",
|
||||
"Poster": "L\u00e4hett\u00e4j\u00e4",
|
||||
"Alternative source": "Vaihtoehtoinen l\u00e4hde",
|
||||
"Paste your embed code below:": "Liit\u00e4 upotuskoodisi alapuolelle:",
|
||||
"Insert video": "Lis\u00e4\u00e4 video",
|
||||
"Embed": "Upota",
|
||||
"Nonbreaking space": "Sitova v\u00e4lily\u00f6nti",
|
||||
"Page break": "Sivunvaihto",
|
||||
"Paste as text": "Liit\u00e4 tekstin\u00e4",
|
||||
"Preview": "Esikatselu",
|
||||
"Print": "Tulosta",
|
||||
"Save": "Tallenna",
|
||||
"Could not find the specified string.": "Haettua merkkijonoa ei l\u00f6ytynyt.",
|
||||
"Replace": "Korvaa",
|
||||
"Next": "Seur.",
|
||||
"Whole words": "Koko sanat",
|
||||
"Find and replace": "Etsi ja korvaa",
|
||||
"Replace with": "Korvaa",
|
||||
"Find": "Etsi",
|
||||
"Replace all": "Korvaa kaikki",
|
||||
"Match case": "Erota isot ja pienet kirjaimet",
|
||||
"Prev": "Edel.",
|
||||
"Spellcheck": "Oikolue",
|
||||
"Finish": "Lopeta",
|
||||
"Ignore all": "\u00c4l\u00e4 huomioi mit\u00e4\u00e4n",
|
||||
"Ignore": "\u00c4l\u00e4 huomioi",
|
||||
"Add to Dictionary": "Lis\u00e4\u00e4 sanakirjaan",
|
||||
"Insert row before": "Lis\u00e4\u00e4 rivi ennen",
|
||||
"Rows": "Rivit",
|
||||
"Height": "Korkeus",
|
||||
"Paste row after": "Liit\u00e4 rivi j\u00e4lkeen",
|
||||
"Alignment": "Tasaus",
|
||||
"Border color": "Reunuksen v\u00e4ri",
|
||||
"Column group": "Sarakeryhm\u00e4",
|
||||
"Row": "Rivi",
|
||||
"Insert column before": "Lis\u00e4\u00e4 rivi ennen",
|
||||
"Split cell": "Jaa solu",
|
||||
"Cell padding": "Solun tyhj\u00e4 tila",
|
||||
"Cell spacing": "Solun v\u00e4li",
|
||||
"Row type": "Rivityyppi",
|
||||
"Insert table": "Lis\u00e4\u00e4 taulukko",
|
||||
"Body": "Runko",
|
||||
"Caption": "Seloste",
|
||||
"Footer": "Alaosa",
|
||||
"Delete row": "Poista rivi",
|
||||
"Paste row before": "Liit\u00e4 rivi ennen",
|
||||
"Scope": "Laajuus",
|
||||
"Delete table": "Poista taulukko",
|
||||
"H Align": "H tasaus",
|
||||
"Top": "Yl\u00e4reuna",
|
||||
"Header cell": "Otsikkosolu",
|
||||
"Column": "Sarake",
|
||||
"Row group": "Riviryhm\u00e4",
|
||||
"Cell": "Solu",
|
||||
"Middle": "Keskikohta",
|
||||
"Cell type": "Solun tyyppi",
|
||||
"Copy row": "Kopioi rivi",
|
||||
"Row properties": "Rivin ominaisuudet",
|
||||
"Table properties": "Taulukon ominaisuudet",
|
||||
"Bottom": "Alareuna",
|
||||
"V Align": "V tasaus",
|
||||
"Header": "Otsikko",
|
||||
"Right": "Oikea",
|
||||
"Insert column after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
|
||||
"Cols": "Sarakkeet",
|
||||
"Insert row after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
|
||||
"Width": "Leveys",
|
||||
"Cell properties": "Solun ominaisuudet",
|
||||
"Left": "Vasen",
|
||||
"Cut row": "Leikkaa rivi",
|
||||
"Delete column": "Poista sarake",
|
||||
"Center": "Keskell\u00e4",
|
||||
"Merge cells": "Yhdist\u00e4 solut",
|
||||
"Insert template": "Lis\u00e4\u00e4 pohja",
|
||||
"Templates": "Pohjat",
|
||||
"Background color": "Taustan v\u00e4ri",
|
||||
"Custom...": "Mukauta...",
|
||||
"Custom color": "Mukautettu v\u00e4ri",
|
||||
"No color": "Ei v\u00e4ri\u00e4",
|
||||
"Text color": "Tekstin v\u00e4ri",
|
||||
"Show blocks": "N\u00e4yt\u00e4 lohkot",
|
||||
"Show invisible characters": "N\u00e4yt\u00e4 n\u00e4kym\u00e4tt\u00f6m\u00e4t merkit",
|
||||
"Words: {0}": "Sanat: {0}",
|
||||
"Insert": "Lis\u00e4\u00e4",
|
||||
"File": "Tiedosto",
|
||||
"Edit": "Muokkaa",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastetun tekstin alue. Paina ALT-F9 valikkoon. Paina ALT-F10 ty\u00f6kaluriviin. Paina ALT-0 ohjeeseen.",
|
||||
"Tools": "Ty\u00f6kalut",
|
||||
"View": "N\u00e4yt\u00e4",
|
||||
"Table": "Taulukko",
|
||||
"Format": "Muotoilu"
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('it',{
|
||||
"Cut": "Taglia",
|
||||
"Heading 5": "Intestazione 5",
|
||||
"Header 2": "Header 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il tuo browser non supporta l'accesso diretto negli Appunti. Per favore usa i tasti di scelta rapida Ctrl+X\/C\/V.",
|
||||
"Heading 4": "Intestazione 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "Intestazione 2",
|
||||
"Paste": "Incolla",
|
||||
"Close": "Chiudi",
|
||||
"Font Family": "Famiglia font",
|
||||
"Pre": "Pre",
|
||||
"Align right": "Allinea a Destra",
|
||||
"New document": "Nuovo Documento",
|
||||
"Blockquote": "Blockquote",
|
||||
"Numbered list": "Elenchi Numerati",
|
||||
"Heading 1": "Intestazione 1",
|
||||
"Headings": "Intestazioni",
|
||||
"Increase indent": "Aumenta Rientro",
|
||||
"Formats": "Formattazioni",
|
||||
"Headers": "Intestazioni",
|
||||
"Select all": "Seleziona Tutto",
|
||||
"Header 3": "Intestazione 3",
|
||||
"Blocks": "Blocchi",
|
||||
"Undo": "Indietro",
|
||||
"Strikethrough": "Barrato",
|
||||
"Bullet list": "Elenchi Puntati",
|
||||
"Header 1": "Intestazione 1",
|
||||
"Superscript": "Apice",
|
||||
"Clear formatting": "Cancella Formattazione",
|
||||
"Font Sizes": "Dimensioni font",
|
||||
"Subscript": "Pedice",
|
||||
"Header 6": "Intestazione 6",
|
||||
"Redo": "Ripeti",
|
||||
"Paragraph": "Paragrafo",
|
||||
"Ok": "Ok",
|
||||
"Bold": "Grassetto",
|
||||
"Code": "Codice",
|
||||
"Italic": "Corsivo",
|
||||
"Align center": "Allinea al Cento",
|
||||
"Header 5": "Intestazione 5",
|
||||
"Heading 6": "Intestazione 6",
|
||||
"Heading 3": "Intestazione 3",
|
||||
"Decrease indent": "Riduci Rientro",
|
||||
"Header 4": "Intestazione 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.",
|
||||
"Underline": "Sottolineato",
|
||||
"Cancel": "Annulla",
|
||||
"Justify": "Giustifica",
|
||||
"Inline": "Inlinea",
|
||||
"Copy": "Copia",
|
||||
"Align left": "Allinea a Sinistra",
|
||||
"Visual aids": "Elementi Visivi",
|
||||
"Lower Greek": "Greek Minore",
|
||||
"Square": "Quadrato",
|
||||
"Default": "Default",
|
||||
"Lower Alpha": "Alpha Minore",
|
||||
"Circle": "Cerchio",
|
||||
"Disc": "Disco",
|
||||
"Upper Alpha": "Alpha Superiore",
|
||||
"Upper Roman": "Roman Superiore",
|
||||
"Lower Roman": "Roman Minore",
|
||||
"Name": "Nome",
|
||||
"Anchor": "Fissa",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "Non hai salvato delle modifiche, sei sicuro di andartene?",
|
||||
"Restore last draft": "Ripristina l'ultima bozza.",
|
||||
"Special character": "Carattere Speciale",
|
||||
"Source code": "Codice Sorgente",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "Colore",
|
||||
"Right to left": "Da Destra a Sinistra",
|
||||
"Left to right": "Da Sinistra a Destra",
|
||||
"Emoticons": "Emoction",
|
||||
"Robots": "Robot",
|
||||
"Document properties": "Propriet\u00e0 Documento",
|
||||
"Title": "Titolo",
|
||||
"Keywords": "Parola Chiave",
|
||||
"Encoding": "Codifica",
|
||||
"Description": "Descrizione",
|
||||
"Author": "Autore",
|
||||
"Fullscreen": "Schermo Intero",
|
||||
"Horizontal line": "Linea Orizzontale",
|
||||
"Horizontal space": "Spazio Orizzontale",
|
||||
"Insert\/edit image": "Aggiungi\/Modifica Immagine",
|
||||
"General": "Generale",
|
||||
"Advanced": "Avanzato",
|
||||
"Source": "Fonte",
|
||||
"Border": "Bordo",
|
||||
"Constrain proportions": "Mantieni Proporzioni",
|
||||
"Vertical space": "Spazio Verticale",
|
||||
"Image description": "Descrizione Immagine",
|
||||
"Style": "Stile",
|
||||
"Dimensions": "Dimenzioni",
|
||||
"Insert image": "Inserisci immagine",
|
||||
"Zoom in": "Ingrandisci",
|
||||
"Contrast": "Contrasto",
|
||||
"Back": "Indietro",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "Rifletti orizzontalmente",
|
||||
"Resize": "Ridimensiona",
|
||||
"Sharpen": "Contrasta",
|
||||
"Zoom out": "Rimpicciolisci",
|
||||
"Image options": "Opzioni immagine",
|
||||
"Apply": "Applica",
|
||||
"Brightness": "Luminosit\u00e0",
|
||||
"Rotate clockwise": "Ruota in senso orario",
|
||||
"Rotate counterclockwise": "Ruota in senso antiorario",
|
||||
"Edit image": "Modifica immagine",
|
||||
"Color levels": "Livelli colore",
|
||||
"Crop": "Taglia",
|
||||
"Orientation": "Orientamento",
|
||||
"Flip vertically": "Rifletti verticalmente",
|
||||
"Invert": "Inverti",
|
||||
"Insert date\/time": "Inserisci Data\/Ora",
|
||||
"Remove link": "Rimuovi link",
|
||||
"Url": "Url",
|
||||
"Text to display": "Testo da Visualizzare",
|
||||
"Anchors": "Anchors",
|
||||
"Insert link": "Inserisci il Link",
|
||||
"New window": "Nuova Finestra",
|
||||
"None": "No",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL inserito sembra essere un collegamento esterno. Vuoi aggiungere il prefisso necessario http:\/\/?",
|
||||
"Target": "Target",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL inserito sembra essere un indirizzo email. Vuoi aggiungere il prefisso necessario mailto:?",
|
||||
"Insert\/edit link": "Inserisci\/Modifica Link",
|
||||
"Insert\/edit video": "Inserisci\/Modifica Video",
|
||||
"Poster": "Anteprima",
|
||||
"Alternative source": "Alternativo",
|
||||
"Paste your embed code below:": "Incolla il codice d'incorporamento qui:",
|
||||
"Insert video": "Inserisci Video",
|
||||
"Embed": "Incorporare",
|
||||
"Nonbreaking space": "Spazio unificatore",
|
||||
"Page break": "Interruzione di pagina",
|
||||
"Paste as text": "incolla come testo",
|
||||
"Preview": "Anteprima",
|
||||
"Print": "Stampa",
|
||||
"Save": "Salva",
|
||||
"Could not find the specified string.": "Impossibile trovare la parola specifica.",
|
||||
"Replace": "Sostituisci",
|
||||
"Next": "Successivo",
|
||||
"Whole words": "Parole Sbagliate",
|
||||
"Find and replace": "Trova e Sostituisci",
|
||||
"Replace with": "Sostituisci Con",
|
||||
"Find": "Trova",
|
||||
"Replace all": "Sostituisci Tutto",
|
||||
"Match case": "Maiuscole\/Minuscole ",
|
||||
"Prev": "Precedente",
|
||||
"Spellcheck": "Controllo ortografico",
|
||||
"Finish": "Termina",
|
||||
"Ignore all": "Ignora Tutto",
|
||||
"Ignore": "Ignora",
|
||||
"Add to Dictionary": "Aggiungi al Dizionario",
|
||||
"Insert row before": "Inserisci una Riga Prima",
|
||||
"Rows": "Righe",
|
||||
"Height": "Altezza",
|
||||
"Paste row after": "Incolla una Riga Dopo",
|
||||
"Alignment": "Allineamento",
|
||||
"Border color": "Colore bordo",
|
||||
"Column group": "Gruppo di Colonne",
|
||||
"Row": "Riga",
|
||||
"Insert column before": "Inserisci una Colonna Prima",
|
||||
"Split cell": "Dividi Cella",
|
||||
"Cell padding": "Padding della Cella",
|
||||
"Cell spacing": "Spaziatura della Cella",
|
||||
"Row type": "Tipo di Riga",
|
||||
"Insert table": "Inserisci Tabella",
|
||||
"Body": "Body",
|
||||
"Caption": "Didascalia",
|
||||
"Footer": "Footer",
|
||||
"Delete row": "Cancella Riga",
|
||||
"Paste row before": "Incolla una Riga Prima",
|
||||
"Scope": "Campo",
|
||||
"Delete table": "Cancella Tabella",
|
||||
"H Align": "Allineamento H",
|
||||
"Top": "In alto",
|
||||
"Header cell": "cella d'intestazione",
|
||||
"Column": "Colonna",
|
||||
"Row group": "Gruppo di Righe",
|
||||
"Cell": "Cella",
|
||||
"Middle": "In mezzo",
|
||||
"Cell type": "Tipo di Cella",
|
||||
"Copy row": "Copia Riga",
|
||||
"Row properties": "Propriet\u00e0 della Riga",
|
||||
"Table properties": "Propiet\u00e0 della Tabella",
|
||||
"Bottom": "In fondo",
|
||||
"V Align": "Allineamento V",
|
||||
"Header": "Header",
|
||||
"Right": "Destra",
|
||||
"Insert column after": "Inserisci una Colonna Dopo",
|
||||
"Cols": "Colonne",
|
||||
"Insert row after": "Inserisci una Riga Dopo",
|
||||
"Width": "Larghezza",
|
||||
"Cell properties": "Propiet\u00e0 della Cella",
|
||||
"Left": "Sinistra",
|
||||
"Cut row": "Taglia Riga",
|
||||
"Delete column": "Cancella Colonna",
|
||||
"Center": "Centro",
|
||||
"Merge cells": "Unisci Cella",
|
||||
"Insert template": "Inserisci Template",
|
||||
"Templates": "Template",
|
||||
"Background color": "Colore Background",
|
||||
"Custom...": "Personalizzato...",
|
||||
"Custom color": "Colore personalizzato",
|
||||
"No color": "Nessun colore",
|
||||
"Text color": "Colore Testo",
|
||||
"Show blocks": "Mostra Blocchi",
|
||||
"Show invisible characters": "Mostra Caratteri Invisibili",
|
||||
"Words: {0}": "Parole: {0}",
|
||||
"Insert": "Inserisci",
|
||||
"File": "File",
|
||||
"Edit": "Modifica",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Premi ALT-F9 per il men\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per l'aiuto.",
|
||||
"Tools": "Strumenti",
|
||||
"View": "Visualiza",
|
||||
"Table": "Tabella",
|
||||
"Format": "Formato"
|
||||
});
|
||||
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('ja',{
|
||||
"Cut": "\u5207\u308a\u53d6\u308a",
|
||||
"Heading 5": "\u898b\u51fa\u3057 5",
|
||||
"Header 2": "\u30d8\u30c3\u30c0\u30fc 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff08Ctrl+X, Ctrl+C, Ctrl+V\uff09\u3092\u304a\u4f7f\u3044\u4e0b\u3055\u3044\u3002",
|
||||
"Heading 4": "\u898b\u51fa\u3057 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "\u898b\u51fa\u3057 2",
|
||||
"Paste": "\u8cbc\u308a\u4ed8\u3051",
|
||||
"Close": "\u9589\u3058\u308b",
|
||||
"Font Family": "\u30d5\u30a9\u30f3\u30c8\u30d5\u30a1\u30df\u30ea\u30fc",
|
||||
"Pre": "Pre",
|
||||
"Align right": "\u53f3\u5bc4\u305b",
|
||||
"New document": "\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
|
||||
"Blockquote": "\u5f15\u7528",
|
||||
"Numbered list": "\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d",
|
||||
"Heading 1": "\u898b\u51fa\u3057 1",
|
||||
"Headings": "\u898b\u51fa\u3057",
|
||||
"Increase indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059",
|
||||
"Formats": "\u66f8\u5f0f",
|
||||
"Headers": "\u30d8\u30c3\u30c0\u30fc",
|
||||
"Select all": "\u5168\u3066\u3092\u9078\u629e",
|
||||
"Header 3": "\u30d8\u30c3\u30c0\u30fc 3",
|
||||
"Blocks": "\u30d6\u30ed\u30c3\u30af",
|
||||
"Undo": "\u5143\u306b\u623b\u3059",
|
||||
"Strikethrough": "\u53d6\u308a\u6d88\u3057\u7dda",
|
||||
"Bullet list": "\u7b87\u6761\u66f8\u304d",
|
||||
"Header 1": "\u30d8\u30c3\u30c0\u30fc 1",
|
||||
"Superscript": "\u4e0a\u4ed8\u304d\u6587\u5b57",
|
||||
"Clear formatting": "\u66f8\u5f0f\u3092\u30af\u30ea\u30a2",
|
||||
"Font Sizes": "\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",
|
||||
"Subscript": "\u4e0b\u4ed8\u304d\u6587\u5b57",
|
||||
"Header 6": "\u30d8\u30c3\u30c0\u30fc 6",
|
||||
"Redo": "\u3084\u308a\u76f4\u3059",
|
||||
"Paragraph": "\u6bb5\u843d",
|
||||
"Ok": "OK",
|
||||
"Bold": "\u592a\u5b57",
|
||||
"Code": "\u30b3\u30fc\u30c9",
|
||||
"Italic": "\u659c\u4f53",
|
||||
"Align center": "\u4e2d\u592e\u63c3\u3048",
|
||||
"Header 5": "\u30d8\u30c3\u30c0\u30fc 5",
|
||||
"Heading 6": "\u898b\u51fa\u3057 6",
|
||||
"Heading 3": "\u898b\u51fa\u3057 3",
|
||||
"Decrease indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059",
|
||||
"Header 4": "\u30d8\u30c3\u30c0\u30fc 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u8cbc\u308a\u4ed8\u3051\u306f\u73fe\u5728\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u3067\u3059\u3002\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30aa\u30d5\u306b\u3057\u306a\u3044\u9650\u308a\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002",
|
||||
"Underline": "\u4e0b\u7dda",
|
||||
"Cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb",
|
||||
"Justify": "\u4e21\u7aef\u63c3\u3048",
|
||||
"Inline": "\u30a4\u30f3\u30e9\u30a4\u30f3",
|
||||
"Copy": "\u30b3\u30d4\u30fc",
|
||||
"Align left": "\u5de6\u5bc4\u305b",
|
||||
"Visual aids": "\u8868\u306e\u67a0\u7dda\u3092\u70b9\u7dda\u3067\u8868\u793a",
|
||||
"Lower Greek": "\u5c0f\u6587\u5b57\u306e\u30ae\u30ea\u30b7\u30e3\u6587\u5b57",
|
||||
"Square": "\u56db\u89d2",
|
||||
"Default": "\u30c7\u30d5\u30a9\u30eb\u30c8",
|
||||
"Lower Alpha": "\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
|
||||
"Circle": "\u5186",
|
||||
"Disc": "\u70b9",
|
||||
"Upper Alpha": "\u5927\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
|
||||
"Upper Roman": "\u5927\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
|
||||
"Lower Roman": "\u5c0f\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
|
||||
"Name": "\u30a2\u30f3\u30ab\u30fc\u540d",
|
||||
"Anchor": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u307e\u3060\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5909\u66f4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u672c\u5f53\u306b\u3053\u306e\u30da\u30fc\u30b8\u3092\u96e2\u308c\u307e\u3059\u304b\uff1f",
|
||||
"Restore last draft": "\u524d\u56de\u306e\u4e0b\u66f8\u304d\u3092\u5fa9\u6d3b\u3055\u305b\u308b",
|
||||
"Special character": "\u7279\u6b8a\u6587\u5b57",
|
||||
"Source code": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "\u30ab\u30e9\u30fc",
|
||||
"Right to left": "\u53f3\u304b\u3089\u5de6",
|
||||
"Left to right": "\u5de6\u304b\u3089\u53f3",
|
||||
"Emoticons": "\u7d75\u6587\u5b57",
|
||||
"Robots": "\u30ed\u30dc\u30c3\u30c4",
|
||||
"Document properties": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
|
||||
"Title": "\u30bf\u30a4\u30c8\u30eb",
|
||||
"Keywords": "\u30ad\u30fc\u30ef\u30fc\u30c9",
|
||||
"Encoding": "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",
|
||||
"Description": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5185\u5bb9",
|
||||
"Author": "\u8457\u8005",
|
||||
"Fullscreen": "\u5168\u753b\u9762\u8868\u793a",
|
||||
"Horizontal line": "\u6c34\u5e73\u7f6b\u7dda",
|
||||
"Horizontal space": "\u6a2a\u65b9\u5411\u306e\u4f59\u767d",
|
||||
"Insert\/edit image": "\u753b\u50cf\u306e\u633f\u5165\u30fb\u7de8\u96c6",
|
||||
"General": "\u4e00\u822c",
|
||||
"Advanced": "\u8a73\u7d30\u8a2d\u5b9a",
|
||||
"Source": "\u753b\u50cf\u306e\u30bd\u30fc\u30b9",
|
||||
"Border": "\u67a0\u7dda",
|
||||
"Constrain proportions": "\u7e26\u6a2a\u6bd4\u3092\u4fdd\u6301\u3059\u308b",
|
||||
"Vertical space": "\u7e26\u65b9\u5411\u306e\u4f59\u767d",
|
||||
"Image description": "\u753b\u50cf\u306e\u8aac\u660e\u6587",
|
||||
"Style": "\u30b9\u30bf\u30a4\u30eb",
|
||||
"Dimensions": "\u753b\u50cf\u30b5\u30a4\u30ba\uff08\u6a2a\u30fb\u7e26\uff09",
|
||||
"Insert image": "\u753b\u50cf\u306e\u633f\u5165",
|
||||
"Zoom in": "\u30ba\u30fc\u30e0\u30a4\u30f3",
|
||||
"Contrast": "\u30b3\u30f3\u30c8\u30e9\u30b9\u30c8",
|
||||
"Back": "\u623b\u308b",
|
||||
"Gamma": "\u30ac\u30f3\u30de",
|
||||
"Flip horizontally": "\u6c34\u5e73\u306b\u53cd\u8ee2",
|
||||
"Resize": "\u30ea\u30b5\u30a4\u30ba",
|
||||
"Sharpen": "\u30b7\u30e3\u30fc\u30d7\u5316",
|
||||
"Zoom out": "\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8",
|
||||
"Image options": "\u753b\u50cf\u30aa\u30d7\u30b7\u30e7\u30f3",
|
||||
"Apply": "\u9069\u7528",
|
||||
"Brightness": "\u660e\u308b\u3055",
|
||||
"Rotate clockwise": "\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2",
|
||||
"Rotate counterclockwise": "\u53cd\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2",
|
||||
"Edit image": "\u753b\u50cf\u306e\u7de8\u96c6",
|
||||
"Color levels": "\u30ab\u30e9\u30fc\u30ec\u30d9\u30eb",
|
||||
"Crop": "\u30af\u30ed\u30c3\u30d7",
|
||||
"Orientation": "\u5411\u304d",
|
||||
"Flip vertically": "\u4e0a\u4e0b\u306b\u53cd\u8ee2",
|
||||
"Invert": "\u53cd\u8ee2",
|
||||
"Insert date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
|
||||
"Remove link": "\u30ea\u30f3\u30af\u306e\u524a\u9664",
|
||||
"Url": "\u30ea\u30f3\u30af\u5148URL",
|
||||
"Text to display": "\u30ea\u30f3\u30af\u5143\u30c6\u30ad\u30b9\u30c8",
|
||||
"Anchors": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
|
||||
"Insert link": "\u30ea\u30f3\u30af",
|
||||
"New window": "\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6",
|
||||
"None": "\u306a\u3057",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u5916\u90e8\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u300chttp:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
|
||||
"Target": "\u30bf\u30fc\u30b2\u30c3\u30c8\u5c5e\u6027",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u300cmailto:\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
|
||||
"Insert\/edit link": "\u30ea\u30f3\u30af\u306e\u633f\u5165\u30fb\u7de8\u96c6",
|
||||
"Insert\/edit video": "\u52d5\u753b\u306e\u633f\u5165\u30fb\u7de8\u96c6",
|
||||
"Poster": "\u4ee3\u66ff\u753b\u50cf\u306e\u5834\u6240",
|
||||
"Alternative source": "\u4ee3\u66ff\u52d5\u753b\u306e\u5834\u6240",
|
||||
"Paste your embed code below:": "\u57cb\u3081\u8fbc\u307f\u7528\u30b3\u30fc\u30c9\u3092\u4e0b\u8a18\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002",
|
||||
"Insert video": "\u52d5\u753b",
|
||||
"Embed": "\u57cb\u3081\u8fbc\u307f",
|
||||
"Nonbreaking space": "\u56fa\u5b9a\u30b9\u30da\u30fc\u30b9\uff08 \uff09",
|
||||
"Page break": "\u30da\u30fc\u30b8\u533a\u5207\u308a",
|
||||
"Paste as text": "\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051",
|
||||
"Preview": "\u30d7\u30ec\u30d3\u30e5\u30fc",
|
||||
"Print": "\u5370\u5237",
|
||||
"Save": "\u4fdd\u5b58",
|
||||
"Could not find the specified string.": "\u304a\u63a2\u3057\u306e\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
|
||||
"Replace": "\u7f6e\u304d\u63db\u3048",
|
||||
"Next": "\u6b21",
|
||||
"Whole words": "\u5358\u8a9e\u5358\u4f4d\u3067\u691c\u7d22\u3059\u308b",
|
||||
"Find and replace": "\u691c\u7d22\u3068\u7f6e\u304d\u63db\u3048",
|
||||
"Replace with": "\u7f6e\u304d\u63db\u3048\u308b\u6587\u5b57",
|
||||
"Find": "\u691c\u7d22",
|
||||
"Replace all": "\u5168\u3066\u3092\u7f6e\u304d\u63db\u3048\u308b",
|
||||
"Match case": "\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b",
|
||||
"Prev": "\u524d",
|
||||
"Spellcheck": "\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af",
|
||||
"Finish": "\u7d42\u4e86",
|
||||
"Ignore all": "\u5168\u3066\u3092\u7121\u8996",
|
||||
"Ignore": "\u7121\u8996",
|
||||
"Add to Dictionary": "\u8f9e\u66f8\u306b\u8ffd\u52a0",
|
||||
"Insert row before": "\u4e0a\u5074\u306b\u884c\u3092\u633f\u5165",
|
||||
"Rows": "\u884c\u6570",
|
||||
"Height": "\u9ad8\u3055",
|
||||
"Paste row after": "\u4e0b\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
|
||||
"Alignment": "\u914d\u7f6e",
|
||||
"Border color": "\u67a0\u7dda\u306e\u8272",
|
||||
"Column group": "\u5217\u30b0\u30eb\u30fc\u30d7",
|
||||
"Row": "\u884c",
|
||||
"Insert column before": "\u5de6\u5074\u306b\u5217\u3092\u633f\u5165",
|
||||
"Split cell": "\u30bb\u30eb\u306e\u5206\u5272",
|
||||
"Cell padding": "\u30bb\u30eb\u5185\u4f59\u767d\uff08\u30d1\u30c7\u30a3\u30f3\u30b0\uff09",
|
||||
"Cell spacing": "\u30bb\u30eb\u306e\u9593\u9694",
|
||||
"Row type": "\u884c\u30bf\u30a4\u30d7",
|
||||
"Insert table": "\u8868\u306e\u633f\u5165",
|
||||
"Body": "\u30dc\u30c7\u30a3\u30fc",
|
||||
"Caption": "\u8868\u984c",
|
||||
"Footer": "\u30d5\u30c3\u30bf\u30fc",
|
||||
"Delete row": "\u884c\u306e\u524a\u9664",
|
||||
"Paste row before": "\u4e0a\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
|
||||
"Scope": "\u30b9\u30b3\u30fc\u30d7",
|
||||
"Delete table": "\u8868\u306e\u524a\u9664",
|
||||
"H Align": "\u6c34\u5e73\u65b9\u5411\u306e\u914d\u7f6e",
|
||||
"Top": "\u4e0a",
|
||||
"Header cell": "\u30d8\u30c3\u30c0\u30fc\u30bb\u30eb",
|
||||
"Column": "\u5217",
|
||||
"Row group": "\u884c\u30b0\u30eb\u30fc\u30d7",
|
||||
"Cell": "\u30bb\u30eb",
|
||||
"Middle": "\u4e2d\u592e",
|
||||
"Cell type": "\u30bb\u30eb\u30bf\u30a4\u30d7",
|
||||
"Copy row": "\u884c\u306e\u30b3\u30d4\u30fc",
|
||||
"Row properties": "\u884c\u306e\u8a73\u7d30\u8a2d\u5b9a",
|
||||
"Table properties": "\u8868\u306e\u8a73\u7d30\u8a2d\u5b9a",
|
||||
"Bottom": "\u4e0b",
|
||||
"V Align": "\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e",
|
||||
"Header": "\u30d8\u30c3\u30c0\u30fc",
|
||||
"Right": "\u53f3\u5bc4\u305b",
|
||||
"Insert column after": "\u53f3\u5074\u306b\u5217\u3092\u633f\u5165",
|
||||
"Cols": "\u5217\u6570",
|
||||
"Insert row after": "\u4e0b\u5074\u306b\u884c\u3092\u633f\u5165",
|
||||
"Width": "\u5e45",
|
||||
"Cell properties": "\u30bb\u30eb\u306e\u8a73\u7d30\u8a2d\u5b9a",
|
||||
"Left": "\u5de6\u5bc4\u305b",
|
||||
"Cut row": "\u884c\u306e\u5207\u308a\u53d6\u308a",
|
||||
"Delete column": "\u5217\u306e\u524a\u9664",
|
||||
"Center": "\u4e2d\u592e\u63c3\u3048",
|
||||
"Merge cells": "\u30bb\u30eb\u306e\u7d50\u5408",
|
||||
"Insert template": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165",
|
||||
"Templates": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u540d",
|
||||
"Background color": "\u80cc\u666f\u8272",
|
||||
"Custom...": "\u30ab\u30b9\u30bf\u30e0...",
|
||||
"Custom color": "\u30ab\u30b9\u30bf\u30e0\u30ab\u30e9\u30fc",
|
||||
"No color": "\u30ab\u30e9\u30fc\u306a\u3057",
|
||||
"Text color": "\u30c6\u30ad\u30b9\u30c8\u306e\u8272",
|
||||
"Show blocks": "\u6587\u7ae0\u306e\u533a\u5207\u308a\u3092\u70b9\u7dda\u3067\u8868\u793a",
|
||||
"Show invisible characters": "\u4e0d\u53ef\u8996\u6587\u5b57\u3092\u8868\u793a",
|
||||
"Words: {0}": "\u5358\u8a9e\u6570: {0}",
|
||||
"Insert": "\u633f\u5165",
|
||||
"File": "\u30d5\u30a1\u30a4\u30eb",
|
||||
"Edit": "\u7de8\u96c6",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u66f8\u5f0f\u4ed8\u304d\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u753b\u9762\u3002ALT-F9\u3067\u30e1\u30cb\u30e5\u30fc\u3001ALT-F10\u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002",
|
||||
"Tools": "\u30c4\u30fc\u30eb",
|
||||
"View": "\u8868\u793a",
|
||||
"Table": "\u8868",
|
||||
"Format": "\u66f8\u5f0f"
|
||||
});
|
||||
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('nl',{
|
||||
"Cut": "Knippen",
|
||||
"Heading 5": "Kop 5",
|
||||
"Header 2": "Kop 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Uw browser ondersteunt geen toegang tot het clipboard. Gelieve ctrl+X\/C\/V sneltoetsen te gebruiken.",
|
||||
"Heading 4": "Kop 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "Kop 2",
|
||||
"Paste": "Plakken",
|
||||
"Close": "Sluiten",
|
||||
"Font Family": "Lettertype",
|
||||
"Pre": "Pre",
|
||||
"Align right": "Rechts uitlijnen",
|
||||
"New document": "Nieuw document",
|
||||
"Blockquote": "Quote",
|
||||
"Numbered list": "Nummering",
|
||||
"Heading 1": "Kop 1",
|
||||
"Headings": "Koppen",
|
||||
"Increase indent": "Inspringen vergroten",
|
||||
"Formats": "Opmaak",
|
||||
"Headers": "Kopteksten",
|
||||
"Select all": "Alles selecteren",
|
||||
"Header 3": "Kop 3",
|
||||
"Blocks": "Blok",
|
||||
"Undo": "Ongedaan maken",
|
||||
"Strikethrough": "Doorhalen",
|
||||
"Bullet list": "Opsommingsteken",
|
||||
"Header 1": "Kop 1",
|
||||
"Superscript": "Superscript",
|
||||
"Clear formatting": "Opmaak verwijderen",
|
||||
"Font Sizes": "Tekengrootte",
|
||||
"Subscript": "Subscript",
|
||||
"Header 6": "Kop 6",
|
||||
"Redo": "Opnieuw",
|
||||
"Paragraph": "Paragraaf",
|
||||
"Ok": "Ok\u00e9",
|
||||
"Bold": "Vet",
|
||||
"Code": "Code",
|
||||
"Italic": "Cursief",
|
||||
"Align center": "Centreren",
|
||||
"Header 5": "Kop 5",
|
||||
"Heading 6": "Kop 6",
|
||||
"Heading 3": "Kop 3",
|
||||
"Decrease indent": "Inspringen verkleinen",
|
||||
"Header 4": "Kop 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Plakken gebeurt nu als platte tekst. Tekst wordt nu ingevoegd zonder opmaak tot deze optie uitgeschakeld wordt.",
|
||||
"Underline": "Onderstreept",
|
||||
"Cancel": "Annuleren",
|
||||
"Justify": "Uitlijnen",
|
||||
"Inline": "Inlijn",
|
||||
"Copy": "Kopi\u00ebren",
|
||||
"Align left": "Links uitlijnen",
|
||||
"Visual aids": "Hulpmiddelen",
|
||||
"Lower Greek": "Griekse letters",
|
||||
"Square": "Vierkant",
|
||||
"Default": "Standaard",
|
||||
"Lower Alpha": "Kleine letters",
|
||||
"Circle": "Cirkel",
|
||||
"Disc": "Bolletje",
|
||||
"Upper Alpha": "Hoofdletters",
|
||||
"Upper Roman": "Romeinse cijfers groot",
|
||||
"Lower Roman": "Romeinse cijfers klein",
|
||||
"Name": "Naam",
|
||||
"Anchor": "Anker",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "U hebt niet alles opgeslagen bent u zeker dat u de pagina wenst te verlaten?",
|
||||
"Restore last draft": "Herstel het laatste concept",
|
||||
"Special character": "Speciale karakters",
|
||||
"Source code": "Broncode",
|
||||
"B": "Blauw",
|
||||
"R": "Rood",
|
||||
"G": "Groen",
|
||||
"Color": "Kleur",
|
||||
"Right to left": "Rechts naar links",
|
||||
"Left to right": "Links naar rechts",
|
||||
"Emoticons": "Emoticons",
|
||||
"Robots": "Robots",
|
||||
"Document properties": "Document eigenschappen",
|
||||
"Title": "Titel",
|
||||
"Keywords": "Sleutelwoorden",
|
||||
"Encoding": "Codering",
|
||||
"Description": "Omschrijving",
|
||||
"Author": "Auteur",
|
||||
"Fullscreen": "Volledig scherm",
|
||||
"Horizontal line": "Horizontale lijn",
|
||||
"Horizontal space": "Horizontale ruimte",
|
||||
"Insert\/edit image": "Afbeelding invoegen\/bewerken",
|
||||
"General": "Algemeen",
|
||||
"Advanced": "Geavanceerd",
|
||||
"Source": "Bron",
|
||||
"Border": "Rand",
|
||||
"Constrain proportions": "Verhoudingen behouden",
|
||||
"Vertical space": "Verticale ruimte",
|
||||
"Image description": "Afbeelding omschrijving",
|
||||
"Style": "Stijl",
|
||||
"Dimensions": "Afmetingen",
|
||||
"Insert image": "Afbeelding invoegen",
|
||||
"Zoom in": "Inzoomen",
|
||||
"Contrast": "Contrast",
|
||||
"Back": "Terug",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "Horizontaal spiegelen",
|
||||
"Resize": "Formaat aanpassen",
|
||||
"Sharpen": "Scherpte",
|
||||
"Zoom out": "Uitzoomen",
|
||||
"Image options": "Afbeelding opties",
|
||||
"Apply": "Toepassen",
|
||||
"Brightness": "Helderheid",
|
||||
"Rotate clockwise": "Rechtsom draaien",
|
||||
"Rotate counterclockwise": "Linksom draaien",
|
||||
"Edit image": "Bewerk afbeelding",
|
||||
"Color levels": "Kleurniveau's",
|
||||
"Crop": "Uitsnijden",
|
||||
"Orientation": "Orientatie",
|
||||
"Flip vertically": "Verticaal spiegelen",
|
||||
"Invert": "Omkeren",
|
||||
"Insert date\/time": "Voeg datum\/tijd in",
|
||||
"Remove link": "Link verwijderen",
|
||||
"Url": "Url",
|
||||
"Text to display": "Linktekst",
|
||||
"Anchors": "Anker",
|
||||
"Insert link": "Hyperlink invoegen",
|
||||
"New window": "Nieuw venster",
|
||||
"None": "Geen",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "De ingegeven URL verwijst naar een extern adres. Wil je er \"http:\/\/\" aan toevoegen?",
|
||||
"Target": "Doel",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "De ingegeven URL lijkt op een e-mailadres. Wil je er \"mailto:\" aan toevoegen?",
|
||||
"Insert\/edit link": "Hyperlink invoegen\/bewerken",
|
||||
"Insert\/edit video": "Video invoegen\/bewerken",
|
||||
"Poster": "Poster",
|
||||
"Alternative source": "Alternatieve bron",
|
||||
"Paste your embed code below:": "Plak u in te sluiten code hieronder:",
|
||||
"Insert video": "Video invoegen",
|
||||
"Embed": "Insluiten",
|
||||
"Nonbreaking space": "Vaste spatie invoegen",
|
||||
"Page break": "Pagina einde",
|
||||
"Paste as text": "Plakken als tekst",
|
||||
"Preview": "Voorbeeld",
|
||||
"Print": "Print",
|
||||
"Save": "Opslaan",
|
||||
"Could not find the specified string.": "Geen resultaten gevonden",
|
||||
"Replace": "Vervangen",
|
||||
"Next": "Volgende",
|
||||
"Whole words": "Alleen hele woorden",
|
||||
"Find and replace": "Zoek en vervang",
|
||||
"Replace with": "Vervangen door",
|
||||
"Find": "Zoeken",
|
||||
"Replace all": "Alles vervangen",
|
||||
"Match case": "Identieke hoofd\/kleine letters",
|
||||
"Prev": "Vorige",
|
||||
"Spellcheck": "Spellingscontrole",
|
||||
"Finish": "Einde",
|
||||
"Ignore all": "Alles negeren",
|
||||
"Ignore": "Negeren",
|
||||
"Add to Dictionary": "Toevoegen aan woordenlijst",
|
||||
"Insert row before": "Voeg rij boven toe",
|
||||
"Rows": "Rijen",
|
||||
"Height": "Hoogte",
|
||||
"Paste row after": "Plak rij onder",
|
||||
"Alignment": "Uitlijning",
|
||||
"Border color": "Randkleur",
|
||||
"Column group": "Kolomgroep",
|
||||
"Row": "Rij",
|
||||
"Insert column before": "Voeg kolom in voor",
|
||||
"Split cell": "Cel splitsen",
|
||||
"Cell padding": "Ruimte binnen cel",
|
||||
"Cell spacing": "Celruimte",
|
||||
"Row type": "Rijtype",
|
||||
"Insert table": "Tabel invoegen",
|
||||
"Body": "Body",
|
||||
"Caption": "Onderschrift",
|
||||
"Footer": "Voettekst",
|
||||
"Delete row": "Verwijder rij",
|
||||
"Paste row before": "Plak rij boven",
|
||||
"Scope": "Bereik",
|
||||
"Delete table": "Verwijder tabel",
|
||||
"H Align": "Links uitlijnen",
|
||||
"Top": "Bovenaan",
|
||||
"Header cell": "Kopcel",
|
||||
"Column": "Kolom",
|
||||
"Row group": "Rijgroep",
|
||||
"Cell": "Cel",
|
||||
"Middle": "Centreren",
|
||||
"Cell type": "Celtype",
|
||||
"Copy row": "Kopieer rij",
|
||||
"Row properties": "Rij eigenschappen",
|
||||
"Table properties": "Tabel eigenschappen",
|
||||
"Bottom": "Onderaan",
|
||||
"V Align": "Boven uitlijnen",
|
||||
"Header": "Koptekst",
|
||||
"Right": "Rechts",
|
||||
"Insert column after": "Voeg kolom in na",
|
||||
"Cols": "Kolommen",
|
||||
"Insert row after": "Voeg rij onder toe",
|
||||
"Width": "Breedte",
|
||||
"Cell properties": "Cel eigenschappen",
|
||||
"Left": "Links",
|
||||
"Cut row": "Knip rij",
|
||||
"Delete column": "Verwijder kolom",
|
||||
"Center": "Midden",
|
||||
"Merge cells": "Cellen samenvoegen",
|
||||
"Insert template": "Sjabloon invoegen",
|
||||
"Templates": "Sjablonen",
|
||||
"Background color": "Achtergrondkleur",
|
||||
"Custom...": "Eigen...",
|
||||
"Custom color": "Eigen kleur",
|
||||
"No color": "Geen kleur",
|
||||
"Text color": "Tekstkleur",
|
||||
"Show blocks": "Blokken tonen",
|
||||
"Show invisible characters": "Onzichtbare karakters tonen",
|
||||
"Words: {0}": "Woorden: {0}",
|
||||
"Insert": "Invoegen",
|
||||
"File": "Bestand",
|
||||
"Edit": "Bewerken",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Druk ALT-F9 voor het menu. Druk ALT-F10 voor de toolbar. Druk ALT-0 voor help.",
|
||||
"Tools": "Gereedschap",
|
||||
"View": "Beeld",
|
||||
"Table": "Tabel",
|
||||
"Format": "Opmaak"
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('pl',{
|
||||
"Cut": "Wytnij",
|
||||
"Heading 5": "Nag\u0142\u00f3wek 5",
|
||||
"Header 2": "Nag\u0142\u00f3wek 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.",
|
||||
"Heading 4": "Nag\u0142\u00f3wek 4",
|
||||
"Div": "Div",
|
||||
"Heading 2": "Nag\u0142\u00f3wek 2",
|
||||
"Paste": "Wklej",
|
||||
"Close": "Zamknij",
|
||||
"Font Family": "Kr\u00f3j fontu",
|
||||
"Pre": "Sformatowany tekst",
|
||||
"Align right": "Wyr\u00f3wnaj do prawej",
|
||||
"New document": "Nowy dokument",
|
||||
"Blockquote": "Blok cytatu",
|
||||
"Numbered list": "Lista numerowana",
|
||||
"Heading 1": "Nag\u0142\u00f3wek 1",
|
||||
"Headings": "Nag\u0142\u00f3wki",
|
||||
"Increase indent": "Zwi\u0119ksz wci\u0119cie",
|
||||
"Formats": "Formaty",
|
||||
"Headers": "Nag\u0142\u00f3wki",
|
||||
"Select all": "Zaznacz wszystko",
|
||||
"Header 3": "Nag\u0142\u00f3wek 3",
|
||||
"Blocks": "Bloki",
|
||||
"Undo": "Cofnij",
|
||||
"Strikethrough": "Przekre\u015blenie",
|
||||
"Bullet list": "Lista wypunktowana",
|
||||
"Header 1": "Nag\u0142\u00f3wek 1",
|
||||
"Superscript": "Indeks g\u00f3rny",
|
||||
"Clear formatting": "Wyczy\u015b\u0107 formatowanie",
|
||||
"Font Sizes": "Rozmiar fontu",
|
||||
"Subscript": "Indeks dolny",
|
||||
"Header 6": "Nag\u0142\u00f3wek 6",
|
||||
"Redo": "Pon\u00f3w",
|
||||
"Paragraph": "Akapit",
|
||||
"Ok": "Ok",
|
||||
"Bold": "Pogrubienie",
|
||||
"Code": "Kod \u017ar\u00f3d\u0142owy",
|
||||
"Italic": "Kursywa",
|
||||
"Align center": "Wyr\u00f3wnaj do \u015brodka",
|
||||
"Header 5": "Nag\u0142\u00f3wek 5",
|
||||
"Heading 6": "Nag\u0142\u00f3wek 6",
|
||||
"Heading 3": "Nag\u0142\u00f3wek 3",
|
||||
"Decrease indent": "Zmniejsz wci\u0119cie",
|
||||
"Header 4": "Nag\u0142\u00f3wek 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Wklejanie jest w trybie tekstowym. Zawarto\u015b\u0107 zostanie wklejona jako zwyk\u0142y tekst dop\u00f3ki nie wy\u0142\u0105czysz tej opcji.",
|
||||
"Underline": "Podkre\u015blenie",
|
||||
"Cancel": "Anuluj",
|
||||
"Justify": "Do lewej i prawej",
|
||||
"Inline": "W tek\u015bcie",
|
||||
"Copy": "Kopiuj",
|
||||
"Align left": "Wyr\u00f3wnaj do lewej",
|
||||
"Visual aids": "Pomoce wizualne",
|
||||
"Lower Greek": "Ma\u0142e greckie",
|
||||
"Square": "Kwadrat",
|
||||
"Default": "Domy\u015blne",
|
||||
"Lower Alpha": "Ma\u0142e litery",
|
||||
"Circle": "K\u00f3\u0142ko",
|
||||
"Disc": "Dysk",
|
||||
"Upper Alpha": "Wielkie litery",
|
||||
"Upper Roman": "Wielkie rzymskie",
|
||||
"Lower Roman": "Ma\u0142e rzymskie",
|
||||
"Name": "Nazwa",
|
||||
"Anchor": "Kotwica",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "Masz niezapisane zmiany. Czy na pewno chcesz opu\u015bci\u0107 stron\u0119?",
|
||||
"Restore last draft": "Przywr\u00f3\u0107 ostatni szkic",
|
||||
"Special character": "Znak specjalny",
|
||||
"Source code": "Kod \u017ar\u00f3d\u0142owy",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "Kolor",
|
||||
"Right to left": "Od prawej do lewej",
|
||||
"Left to right": "Od lewej do prawej",
|
||||
"Emoticons": "Ikony emocji",
|
||||
"Robots": "Roboty",
|
||||
"Document properties": "W\u0142a\u015bciwo\u015bci dokumentu",
|
||||
"Title": "Tytu\u0142",
|
||||
"Keywords": "S\u0142owa kluczowe",
|
||||
"Encoding": "Kodowanie",
|
||||
"Description": "Opis",
|
||||
"Author": "Autor",
|
||||
"Fullscreen": "Pe\u0142ny ekran",
|
||||
"Horizontal line": "Pozioma linia",
|
||||
"Horizontal space": "Odst\u0119p poziomy",
|
||||
"Insert\/edit image": "Wstaw\/edytuj obrazek",
|
||||
"General": "Og\u00f3lne",
|
||||
"Advanced": "Zaawansowane",
|
||||
"Source": "\u0179r\u00f3d\u0142o",
|
||||
"Border": "Ramka",
|
||||
"Constrain proportions": "Zachowaj proporcje",
|
||||
"Vertical space": "Odst\u0119p pionowy",
|
||||
"Image description": "Opis obrazka",
|
||||
"Style": "Styl",
|
||||
"Dimensions": "Wymiary",
|
||||
"Insert image": "Wstaw obrazek",
|
||||
"Zoom in": "Powi\u0119ksz",
|
||||
"Contrast": "Kontrast",
|
||||
"Back": "Cofnij",
|
||||
"Gamma": "Gamma",
|
||||
"Flip horizontally": "Przerzu\u0107 w poziomie",
|
||||
"Resize": "Zmiana rozmiaru",
|
||||
"Sharpen": "Wyostrz",
|
||||
"Zoom out": "Pomniejsz",
|
||||
"Image options": "Opcje obrazu",
|
||||
"Apply": "Zaakceptuj",
|
||||
"Brightness": "Jasno\u015b\u0107",
|
||||
"Rotate clockwise": "Obr\u00f3\u0107 w prawo",
|
||||
"Rotate counterclockwise": "Obr\u00f3\u0107 w lewo",
|
||||
"Edit image": "Edytuj obrazek",
|
||||
"Color levels": "Poziom koloru",
|
||||
"Crop": "Przytnij",
|
||||
"Orientation": "Orientacja",
|
||||
"Flip vertically": "Przerzu\u0107 w pionie",
|
||||
"Invert": "Odwr\u00f3\u0107",
|
||||
"Insert date\/time": "Wstaw dat\u0119\/czas",
|
||||
"Remove link": "Usu\u0144 \u0142\u0105cze",
|
||||
"Url": "URL",
|
||||
"Text to display": "Tekst do wy\u015bwietlenia",
|
||||
"Anchors": "Kotwice",
|
||||
"Insert link": "Wstaw \u0142\u0105cze",
|
||||
"New window": "Nowe okno",
|
||||
"None": "\u017baden",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na link zewn\u0119trzny. Czy chcesz doda\u0107 http:\/\/ jako prefiks?",
|
||||
"Target": "Cel",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na adres e-mail. Czy chcesz doda\u0107 mailto: jako prefiks?",
|
||||
"Insert\/edit link": "Wstaw\/edytuj \u0142\u0105cze",
|
||||
"Insert\/edit video": "Wstaw\/edytuj wideo",
|
||||
"Poster": "Plakat",
|
||||
"Alternative source": "Alternatywne \u017ar\u00f3d\u0142o",
|
||||
"Paste your embed code below:": "Wklej tutaj kod do osadzenia:",
|
||||
"Insert video": "Wstaw wideo",
|
||||
"Embed": "Osad\u017a",
|
||||
"Nonbreaking space": "Nie\u0142amliwa spacja",
|
||||
"Page break": "Podzia\u0142 strony",
|
||||
"Paste as text": "Wklej jako zwyk\u0142y tekst",
|
||||
"Preview": "Podgl\u0105d",
|
||||
"Print": "Drukuj",
|
||||
"Save": "Zapisz",
|
||||
"Could not find the specified string.": "Nie znaleziono szukanego tekstu.",
|
||||
"Replace": "Zamie\u0144",
|
||||
"Next": "Nast.",
|
||||
"Whole words": "Ca\u0142e s\u0142owa",
|
||||
"Find and replace": "Znajd\u017a i zamie\u0144",
|
||||
"Replace with": "Zamie\u0144 na",
|
||||
"Find": "Znajd\u017a",
|
||||
"Replace all": "Zamie\u0144 wszystko",
|
||||
"Match case": "Dopasuj wielko\u015b\u0107 liter",
|
||||
"Prev": "Poprz.",
|
||||
"Spellcheck": "Sprawdzanie pisowni",
|
||||
"Finish": "Zako\u0144cz",
|
||||
"Ignore all": "Ignoruj wszystko",
|
||||
"Ignore": "Ignoruj",
|
||||
"Add to Dictionary": "Dodaj do s\u0142ownika",
|
||||
"Insert row before": "Wstaw wiersz przed",
|
||||
"Rows": "Wiersz.",
|
||||
"Height": "Wysoko\u015b\u0107",
|
||||
"Paste row after": "Wklej wiersz po",
|
||||
"Alignment": "Wyr\u00f3wnanie",
|
||||
"Border color": "Kolor ramki",
|
||||
"Column group": "Grupa kolumn",
|
||||
"Row": "Wiersz",
|
||||
"Insert column before": "Wstaw kolumn\u0119 przed",
|
||||
"Split cell": "Podziel kom\u00f3rk\u0119",
|
||||
"Cell padding": "Dope\u0142nienie kom\u00f3rki",
|
||||
"Cell spacing": "Odst\u0119py kom\u00f3rek",
|
||||
"Row type": "Typ wiersza",
|
||||
"Insert table": "Wstaw tabel\u0119",
|
||||
"Body": "Tre\u015b\u0107",
|
||||
"Caption": "Tytu\u0142",
|
||||
"Footer": "Stopka",
|
||||
"Delete row": "Usu\u0144 wiersz",
|
||||
"Paste row before": "Wklej wiersz przed",
|
||||
"Scope": "Kontekst",
|
||||
"Delete table": "Usu\u0144 tabel\u0119",
|
||||
"H Align": "Wyr\u00f3wnanie w pionie",
|
||||
"Top": "G\u00f3ra",
|
||||
"Header cell": "Kom\u00f3rka nag\u0142\u00f3wka",
|
||||
"Column": "Kolumna",
|
||||
"Row group": "Grupa wierszy",
|
||||
"Cell": "Kom\u00f3rka",
|
||||
"Middle": "\u015arodek",
|
||||
"Cell type": "Typ kom\u00f3rki",
|
||||
"Copy row": "Kopiuj wiersz",
|
||||
"Row properties": "W\u0142a\u015bciwo\u015bci wiersza",
|
||||
"Table properties": "W\u0142a\u015bciwo\u015bci tabeli",
|
||||
"Bottom": "D\u00f3\u0142",
|
||||
"V Align": "Wyr\u00f3wnanie w poziomie",
|
||||
"Header": "Nag\u0142\u00f3wek",
|
||||
"Right": "Prawo",
|
||||
"Insert column after": "Wstaw kolumn\u0119 po",
|
||||
"Cols": "Kol.",
|
||||
"Insert row after": "Wstaw wiersz po",
|
||||
"Width": "Szeroko\u015b\u0107",
|
||||
"Cell properties": "W\u0142a\u015bciwo\u015bci kom\u00f3rki",
|
||||
"Left": "Lewo",
|
||||
"Cut row": "Wytnij wiersz",
|
||||
"Delete column": "Usu\u0144 kolumn\u0119",
|
||||
"Center": "\u015arodek",
|
||||
"Merge cells": "\u0141\u0105cz kom\u00f3rki",
|
||||
"Insert template": "Wstaw szablon",
|
||||
"Templates": "Szablony",
|
||||
"Background color": "Kolor t\u0142a",
|
||||
"Custom...": "Niestandardowy...",
|
||||
"Custom color": "Kolor niestandardowy",
|
||||
"No color": "Bez koloru",
|
||||
"Text color": "Kolor tekstu",
|
||||
"Show blocks": "Poka\u017c bloki",
|
||||
"Show invisible characters": "Poka\u017c niewidoczne znaki",
|
||||
"Words: {0}": "S\u0142\u00f3w: {0}",
|
||||
"Insert": "Wstaw",
|
||||
"File": "Plik",
|
||||
"Edit": "Edycja",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Obszar Edycji. ALT-F9 - menu. ALT-F10 - pasek narz\u0119dzi. ALT-0 - pomoc",
|
||||
"Tools": "Narz\u0119dzia",
|
||||
"View": "Widok",
|
||||
"Table": "Tabela",
|
||||
"Format": "Format"
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,219 @@
|
||||
tinymce.addI18n('ru',{
|
||||
"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c",
|
||||
"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
|
||||
"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448: Ctrl+X\/C\/V.",
|
||||
"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
|
||||
"Div": "\u0411\u043b\u043e\u043a",
|
||||
"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
|
||||
"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
|
||||
"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
|
||||
"Font Family": "\u0428\u0440\u0438\u0444\u0442",
|
||||
"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
|
||||
"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
|
||||
"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
|
||||
"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
|
||||
"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
|
||||
"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
|
||||
"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
|
||||
"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
|
||||
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442",
|
||||
"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
|
||||
"Select all": "\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435",
|
||||
"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
|
||||
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
|
||||
"Undo": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c",
|
||||
"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
|
||||
"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
|
||||
"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
|
||||
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
|
||||
"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442",
|
||||
"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",
|
||||
"Subscript": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
|
||||
"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
|
||||
"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
|
||||
"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
|
||||
"Ok": "\u041e\u043a",
|
||||
"Bold": "\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439",
|
||||
"Code": "\u041a\u043e\u0434",
|
||||
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
|
||||
"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
|
||||
"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
|
||||
"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
|
||||
"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
|
||||
"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
|
||||
"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e.",
|
||||
"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
|
||||
"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
|
||||
"Justify": "\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",
|
||||
"Inline": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435",
|
||||
"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
|
||||
"Align left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
|
||||
"Visual aids": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b",
|
||||
"Lower Greek": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
|
||||
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
|
||||
"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439",
|
||||
"Lower Alpha": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
|
||||
"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",
|
||||
"Disc": "\u041a\u0440\u0443\u0433\u0438",
|
||||
"Upper Alpha": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
|
||||
"Upper Roman": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
|
||||
"Lower Roman": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
|
||||
"Name": "\u0418\u043c\u044f",
|
||||
"Anchor": "\u042f\u043a\u043e\u0440\u044c",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0439\u0442\u0438?",
|
||||
"Restore last draft": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430",
|
||||
"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
|
||||
"Source code": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434",
|
||||
"B": "B",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"Color": "\u0426\u0432\u0435\u0442",
|
||||
"Right to left": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",
|
||||
"Left to right": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
|
||||
"Emoticons": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b",
|
||||
"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b",
|
||||
"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
|
||||
"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
|
||||
"Keywords": "\u041a\u043b\u044e\u0447\u0438\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430",
|
||||
"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
|
||||
"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
|
||||
"Author": "\u0410\u0432\u0442\u043e\u0440",
|
||||
"Fullscreen": "\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c",
|
||||
"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f",
|
||||
"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
|
||||
"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
|
||||
"General": "\u041e\u0431\u0449\u0435\u0435",
|
||||
"Advanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435",
|
||||
"Source": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
|
||||
"Border": "\u0420\u0430\u043c\u043a\u0430",
|
||||
"Constrain proportions": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
|
||||
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
|
||||
"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
|
||||
"Style": "\u0421\u0442\u0438\u043b\u044c",
|
||||
"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
|
||||
"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
|
||||
"Zoom in": "\u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c",
|
||||
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
|
||||
"Back": "\u041d\u0430\u0437\u0430\u0434",
|
||||
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
|
||||
"Flip horizontally": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438",
|
||||
"Resize": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",
|
||||
"Sharpen": "\u0427\u0435\u0442\u043a\u043e\u0441\u0442\u044c",
|
||||
"Zoom out": "\u041e\u0442\u0434\u0430\u043b\u0438\u0442\u044c",
|
||||
"Image options": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
|
||||
"Apply": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",
|
||||
"Brightness": "\u042f\u0440\u043a\u043e\u0441\u0442\u044c",
|
||||
"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435",
|
||||
"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438",
|
||||
"Edit image": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
|
||||
"Color levels": "\u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438",
|
||||
"Crop": "\u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c",
|
||||
"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
|
||||
"Flip vertically": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438",
|
||||
"Invert": "\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f",
|
||||
"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f",
|
||||
"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
|
||||
"Url": "\u0410\u0434\u0440\u0435\u0441 \u0441\u0441\u044b\u043b\u043a\u0438",
|
||||
"Text to display": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442",
|
||||
"Anchors": "\u042f\u043a\u043e\u0440\u044f",
|
||||
"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
|
||||
"New window": "\u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435",
|
||||
"None": "\u041d\u0435\u0442",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abhttp:\/\/\u00bb?",
|
||||
"Target": "\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abmailto:\u00bb?",
|
||||
"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
|
||||
"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
|
||||
"Poster": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
|
||||
"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
|
||||
"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435:",
|
||||
"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
|
||||
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
|
||||
"Nonbreaking space": "\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b",
|
||||
"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
|
||||
"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442",
|
||||
"Preview": "\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",
|
||||
"Print": "\u041f\u0435\u0447\u0430\u0442\u044c",
|
||||
"Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
|
||||
"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
|
||||
"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
|
||||
"Next": "\u0412\u043d\u0438\u0437",
|
||||
"Whole words": "\u0421\u043b\u043e\u0432\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c",
|
||||
"Find and replace": "\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430",
|
||||
"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",
|
||||
"Find": "\u041d\u0430\u0439\u0442\u0438",
|
||||
"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",
|
||||
"Match case": "\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
|
||||
"Prev": "\u0412\u0432\u0435\u0440\u0445",
|
||||
"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
|
||||
"Finish": "\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c",
|
||||
"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435",
|
||||
"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
|
||||
"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c",
|
||||
"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
|
||||
"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438",
|
||||
"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
|
||||
"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
|
||||
"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
|
||||
"Border color": "\u0426\u0432\u0435\u0442 \u0440\u0430\u043c\u043a\u0438",
|
||||
"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a",
|
||||
"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
|
||||
"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430",
|
||||
"Split cell": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443",
|
||||
"Cell padding": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
|
||||
"Cell spacing": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
|
||||
"Row type": "\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438",
|
||||
"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
|
||||
"Body": "\u0422\u0435\u043b\u043e",
|
||||
"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
|
||||
"Footer": "\u041d\u0438\u0437",
|
||||
"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
|
||||
"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
|
||||
"Scope": "Scope",
|
||||
"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
|
||||
"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
|
||||
"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u0443",
|
||||
"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
|
||||
"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446",
|
||||
"Row group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",
|
||||
"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430",
|
||||
"Middle": "\u041f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435",
|
||||
"Cell type": "\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438",
|
||||
"Copy row": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
|
||||
"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438",
|
||||
"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",
|
||||
"Bottom": "\u041f\u043e \u043d\u0438\u0437\u0443",
|
||||
"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
|
||||
"Header": "\u0428\u0430\u043f\u043a\u0430",
|
||||
"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
|
||||
"Insert column after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430",
|
||||
"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b",
|
||||
"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
|
||||
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
|
||||
"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438",
|
||||
"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
|
||||
"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
|
||||
"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446",
|
||||
"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
|
||||
"Merge cells": "\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",
|
||||
"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d",
|
||||
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
|
||||
"Background color": "\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",
|
||||
"Custom...": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u2026",
|
||||
"Custom color": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0446\u0432\u0435\u0442",
|
||||
"No color": "\u0411\u0435\u0437 \u0446\u0432\u0435\u0442\u0430",
|
||||
"Text color": "\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",
|
||||
"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438",
|
||||
"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
|
||||
"Words: {0}": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432: {0}",
|
||||
"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
|
||||
"File": "\u0424\u0430\u0439\u043b",
|
||||
"Edit": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9 \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, ALT-0 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u043e\u043c\u043e\u0449\u0438.",
|
||||
"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
|
||||
"View": "\u0412\u0438\u0434",
|
||||
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
|
||||
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
tinymce.addI18n('en',{
|
||||
'HTML source code': 'HTML source code',
|
||||
'Start search': 'Start search',
|
||||
'Find next': 'Find next',
|
||||
'Find previous': 'Find previous',
|
||||
'Replace': 'Replace',
|
||||
'Replace all': 'Replace all'
|
||||
});
|
||||
@@ -1,285 +1,5 @@
|
||||
/**
|
||||
* Umbraco Link Plugin, based on the original link plugin by MoxieCode
|
||||
* swapped out the dialog implementation with our own dialog service
|
||||
* and support for passing in localLinks
|
||||
*/
|
||||
|
||||
/*global tinymce:true */
|
||||
|
||||
tinymce.PluginManager.add('umbracolink', function(editor) {
|
||||
function createLinkList(callback) {
|
||||
return function() {
|
||||
var linkList = editor.settings.link_list;
|
||||
|
||||
if (typeof(linkList) == "string") {
|
||||
tinymce.util.XHR.send({
|
||||
url: linkList,
|
||||
success: function(text) {
|
||||
callback(tinymce.util.JSON.parse(text));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
callback(linkList);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function showDialog(linkList) {
|
||||
var data = {}, selection = editor.selection, dom = editor.dom, selectedElm, anchorElm, initialText;
|
||||
var win, linkListCtrl, relListCtrl, targetListCtrl;
|
||||
|
||||
function linkListChangeHandler(e) {
|
||||
var textCtrl = win.find('#text');
|
||||
|
||||
if (!textCtrl.value() || (e.lastControl && textCtrl.value() == e.lastControl.text())) {
|
||||
textCtrl.value(e.control.text());
|
||||
}
|
||||
|
||||
win.find('#href').value(e.control.value());
|
||||
}
|
||||
|
||||
function buildLinkList() {
|
||||
var linkListItems = [{text: 'None', value: ''}];
|
||||
|
||||
tinymce.each(linkList, function(link) {
|
||||
linkListItems.push({
|
||||
text: link.text || link.title,
|
||||
value: link.value || link.url,
|
||||
menu: link.menu
|
||||
});
|
||||
});
|
||||
|
||||
return linkListItems;
|
||||
}
|
||||
|
||||
function buildRelList(relValue) {
|
||||
var relListItems = [{text: 'None', value: ''}];
|
||||
|
||||
tinymce.each(editor.settings.rel_list, function(rel) {
|
||||
relListItems.push({
|
||||
text: rel.text || rel.title,
|
||||
value: rel.value,
|
||||
selected: relValue === rel.value
|
||||
});
|
||||
});
|
||||
|
||||
return relListItems;
|
||||
}
|
||||
|
||||
function buildTargetList(targetValue) {
|
||||
var targetListItems = [{text: 'None', value: ''}];
|
||||
|
||||
if (!editor.settings.target_list) {
|
||||
targetListItems.push({text: 'New window', value: '_blank'});
|
||||
}
|
||||
|
||||
tinymce.each(editor.settings.target_list, function(target) {
|
||||
targetListItems.push({
|
||||
text: target.text || target.title,
|
||||
value: target.value,
|
||||
selected: targetValue === target.value
|
||||
});
|
||||
});
|
||||
|
||||
return targetListItems;
|
||||
}
|
||||
|
||||
function buildAnchorListControl(url) {
|
||||
var anchorList = [];
|
||||
|
||||
tinymce.each(editor.dom.select('a:not([href])'), function(anchor) {
|
||||
var id = anchor.name || anchor.id;
|
||||
|
||||
if (id) {
|
||||
anchorList.push({
|
||||
text: id,
|
||||
value: '#' + id,
|
||||
selected: url.indexOf('#' + id) != -1
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (anchorList.length) {
|
||||
anchorList.unshift({text: 'None', value: ''});
|
||||
|
||||
return {
|
||||
name: 'anchor',
|
||||
type: 'listbox',
|
||||
label: 'Anchors',
|
||||
values: anchorList,
|
||||
onselect: linkListChangeHandler
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function updateText() {
|
||||
if (!initialText && data.text.length === 0) {
|
||||
this.parent().parent().find('#text')[0].value(this.value());
|
||||
}
|
||||
}
|
||||
|
||||
selectedElm = selection.getNode();
|
||||
anchorElm = dom.getParent(selectedElm, 'a[href]');
|
||||
|
||||
data.text = initialText = anchorElm ? (anchorElm.innerText || anchorElm.textContent) : selection.getContent({format: 'text'});
|
||||
data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
|
||||
data.target = anchorElm ? dom.getAttrib(anchorElm, 'target') : '';
|
||||
data.rel = anchorElm ? dom.getAttrib(anchorElm, 'rel') : '';
|
||||
|
||||
if (selectedElm.nodeName == "IMG") {
|
||||
data.text = initialText = " ";
|
||||
}
|
||||
|
||||
if (linkList) {
|
||||
linkListCtrl = {
|
||||
type: 'listbox',
|
||||
label: 'Link list',
|
||||
values: buildLinkList(),
|
||||
onselect: linkListChangeHandler
|
||||
};
|
||||
}
|
||||
|
||||
if (editor.settings.target_list !== false) {
|
||||
targetListCtrl = {
|
||||
name: 'target',
|
||||
type: 'listbox',
|
||||
label: 'Target',
|
||||
values: buildTargetList(data.target)
|
||||
};
|
||||
}
|
||||
|
||||
if (editor.settings.rel_list) {
|
||||
relListCtrl = {
|
||||
name: 'rel',
|
||||
type: 'listbox',
|
||||
label: 'Rel',
|
||||
values: buildRelList(data.rel)
|
||||
};
|
||||
}
|
||||
|
||||
var injector = angular.element(document.getElementById("umbracoMainPageBody")).injector();
|
||||
var dialogService = injector.get("dialogService");
|
||||
var currentTarget = undefined;
|
||||
|
||||
//if we already have a link selected, we want to pass that data over to the dialog
|
||||
if(anchorElm){
|
||||
var anchor = $(anchorElm);
|
||||
currentTarget = {
|
||||
name: anchor.attr("title"),
|
||||
url: anchor.attr("href"),
|
||||
target: anchor.attr("target")
|
||||
};
|
||||
|
||||
//locallink detection, we do this here, to avoid poluting the dialogservice
|
||||
//so the dialog service can just expect to get a node-like structure
|
||||
if (currentTarget.url.indexOf("localLink:") > 0) {
|
||||
var linkId = currentTarget.url.substring(currentTarget.url.indexOf(":") + 1, currentTarget.url.length - 1);
|
||||
//we need to check if this is an INT or a UDI
|
||||
var parsedIntId = parseInt(linkId, 10);
|
||||
if (isNaN(parsedIntId)) {
|
||||
//it's a UDI
|
||||
currentTarget.udi = linkId;
|
||||
}
|
||||
else {
|
||||
currentTarget.id = linkId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dialogService.linkPicker({
|
||||
currentTarget: currentTarget,
|
||||
callback: function (data) {
|
||||
if (data) {
|
||||
var href = data.url;
|
||||
// We want to use the Udi. If it is set, we use it, else fallback to id, and finally to null
|
||||
var hasUdi = data.udi ? true : false;
|
||||
var id = hasUdi ? data.udi : (data.id ? data.id : null);
|
||||
|
||||
//Create a json obj used to create the attributes for the tag
|
||||
function createElemAttributes() {
|
||||
var a = {
|
||||
href: href,
|
||||
title: data.name,
|
||||
target: data.target ? data.target : null,
|
||||
rel: data.rel ? data.rel : null
|
||||
};
|
||||
if (hasUdi) {
|
||||
a["data-udi"] = data.udi;
|
||||
}
|
||||
else if (data.id) {
|
||||
a["data-id"] = data.id;
|
||||
}
|
||||
}
|
||||
|
||||
function insertLink() {
|
||||
if (anchorElm) {
|
||||
dom.setAttribs(anchorElm, createElemAttributes());
|
||||
|
||||
selection.select(anchorElm);
|
||||
editor.execCommand('mceEndTyping');
|
||||
} else {
|
||||
editor.execCommand('mceInsertLink', false, createElemAttributes());
|
||||
}
|
||||
}
|
||||
|
||||
if (!href) {
|
||||
editor.execCommand('unlink');
|
||||
return;
|
||||
}
|
||||
|
||||
//if we have an id, it must be a locallink:id, aslong as the isMedia flag is not set
|
||||
if (id && (angular.isUndefined(data.isMedia) || !data.isMedia)){
|
||||
|
||||
href = "/{localLink:" + id + "}";
|
||||
|
||||
insertLink();
|
||||
return;
|
||||
}
|
||||
|
||||
// Is email and not //user@domain.com
|
||||
if (href.indexOf('@') > 0 && href.indexOf('//') == -1 && href.indexOf('mailto:') == -1) {
|
||||
href = 'mailto:' + href;
|
||||
insertLink();
|
||||
return;
|
||||
}
|
||||
|
||||
// Is www. prefixed
|
||||
if (/^\s*www\./i.test(href)) {
|
||||
href = 'http://' + href;
|
||||
insertLink();
|
||||
return;
|
||||
}
|
||||
insertLink();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
editor.addButton('link', {
|
||||
icon: 'link',
|
||||
tooltip: 'Insert/edit link',
|
||||
shortcut: 'Ctrl+K',
|
||||
onclick: createLinkList(showDialog),
|
||||
stateSelector: 'a[href]'
|
||||
});
|
||||
|
||||
editor.addButton('unlink', {
|
||||
icon: 'unlink',
|
||||
tooltip: 'Remove link',
|
||||
cmd: 'unlink',
|
||||
stateSelector: 'a[href]'
|
||||
});
|
||||
|
||||
editor.addShortcut('Ctrl+K', '', createLinkList(showDialog));
|
||||
this.showDialog = showDialog;
|
||||
|
||||
editor.addMenuItem('link', {
|
||||
icon: 'link',
|
||||
text: 'Insert link',
|
||||
shortcut: 'Ctrl+K',
|
||||
onclick: createLinkList(showDialog),
|
||||
stateSelector: 'a[href]',
|
||||
context: 'insert',
|
||||
prependToContext: true
|
||||
});
|
||||
});
|
||||
* This file is intentionally left empty
|
||||
* For reference, see: http://issues.umbraco.org/issue/U4-9724
|
||||
* The logic for the umbracoLink plugin now lives in ~/Umbraco/Js/umbraco.services.js
|
||||
*/
|
||||
+252
@@ -0,0 +1,252 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
function ContentEditController($rootScope, $scope, $routeParams, $q, $timeout, $window, appState, contentResource, entityResource, navigationService, notificationsService, angularHelper, serverValidationManager, contentEditingHelper, treeService, fileManager, formHelper, umbRequestHelper, keyboardService, umbModelMapper, editorState, $http) {
|
||||
|
||||
//setup scope vars
|
||||
$scope.defaultButton = null;
|
||||
$scope.subButtons = [];
|
||||
|
||||
$scope.page = {};
|
||||
$scope.page.loading = false;
|
||||
$scope.page.menu = {};
|
||||
$scope.page.menu.currentNode = null;
|
||||
$scope.page.menu.currentSection = appState.getSectionState("currentSection");
|
||||
$scope.page.listViewPath = null;
|
||||
$scope.page.isNew = $scope.isNew ? true : false;
|
||||
$scope.page.buttonGroupState = "init";
|
||||
|
||||
function init(content) {
|
||||
|
||||
var buttons = contentEditingHelper.configureContentEditorButtons({
|
||||
create: $scope.page.isNew,
|
||||
content: content,
|
||||
methods: {
|
||||
saveAndPublish: $scope.saveAndPublish,
|
||||
sendToPublish: $scope.sendToPublish,
|
||||
save: $scope.save,
|
||||
unPublish: $scope.unPublish
|
||||
}
|
||||
});
|
||||
$scope.defaultButton = buttons.defaultButton;
|
||||
$scope.subButtons = buttons.subButtons;
|
||||
|
||||
editorState.set($scope.content);
|
||||
|
||||
//We fetch all ancestors of the node to generate the footer breadcrumb navigation
|
||||
if (!$scope.page.isNew) {
|
||||
if (content.parentId && content.parentId !== -1) {
|
||||
entityResource.getAncestors(content.id, "document")
|
||||
.then(function (anc) {
|
||||
$scope.ancestors = anc;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Syncs the content item to it's tree node - this occurs on first load and after saving */
|
||||
function syncTreeNode(content, path, initialLoad) {
|
||||
|
||||
if (!$scope.content.isChildOfListView) {
|
||||
navigationService.syncTree({ tree: $scope.treeAlias, path: path.split(","), forceReload: initialLoad !== true }).then(function (syncArgs) {
|
||||
$scope.page.menu.currentNode = syncArgs.node;
|
||||
});
|
||||
}
|
||||
else if (initialLoad === true) {
|
||||
|
||||
//it's a child item, just sync the ui node to the parent
|
||||
navigationService.syncTree({ tree: $scope.treeAlias, path: path.substring(0, path.lastIndexOf(",")).split(","), forceReload: initialLoad !== true });
|
||||
|
||||
//if this is a child of a list view and it's the initial load of the editor, we need to get the tree node
|
||||
// from the server so that we can load in the actions menu.
|
||||
umbRequestHelper.resourcePromise(
|
||||
$http.get(content.treeNodeUrl),
|
||||
'Failed to retrieve data for child node ' + content.id).then(function (node) {
|
||||
$scope.page.menu.currentNode = node;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// This is a helper method to reduce the amount of code repitition for actions: Save, Publish, SendToPublish
|
||||
function performSave(args) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
$scope.page.buttonGroupState = "busy";
|
||||
|
||||
contentEditingHelper.contentEditorPerformSave({
|
||||
statusMessage: args.statusMessage,
|
||||
saveMethod: args.saveMethod,
|
||||
scope: $scope,
|
||||
content: $scope.content,
|
||||
action: args.action
|
||||
}).then(function (data) {
|
||||
//success
|
||||
init($scope.content);
|
||||
syncTreeNode($scope.content, data.path);
|
||||
|
||||
$scope.page.buttonGroupState = "success";
|
||||
|
||||
deferred.resolve(data);
|
||||
}, function (err) {
|
||||
//error
|
||||
if (err) {
|
||||
editorState.set($scope.content);
|
||||
}
|
||||
|
||||
$scope.page.buttonGroupState = "error";
|
||||
|
||||
deferred.reject(err);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function resetLastListPageNumber(content) {
|
||||
// We're using rootScope to store the page number for list views, so if returning to the list
|
||||
// we can restore the page. If we've moved on to edit a piece of content that's not the list or it's children
|
||||
// we should remove this so as not to confuse if navigating to a different list
|
||||
if (!content.isChildOfListView && !content.isContainer) {
|
||||
$rootScope.lastListViewPageViewed = null;
|
||||
}
|
||||
}
|
||||
|
||||
if ($scope.page.isNew) {
|
||||
|
||||
$scope.page.loading = true;
|
||||
|
||||
//we are creating so get an empty content item
|
||||
$scope.getScaffoldMethod()()
|
||||
.then(function (data) {
|
||||
|
||||
$scope.content = data;
|
||||
|
||||
init($scope.content);
|
||||
|
||||
resetLastListPageNumber($scope.content);
|
||||
|
||||
$scope.page.loading = false;
|
||||
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
$scope.page.loading = true;
|
||||
|
||||
//we are editing so get the content item from the server
|
||||
$scope.getMethod()($scope.contentId)
|
||||
.then(function (data) {
|
||||
|
||||
$scope.content = data;
|
||||
|
||||
if (data.isChildOfListView && data.trashed === false) {
|
||||
$scope.page.listViewPath = ($routeParams.page) ?
|
||||
"/content/content/edit/" + data.parentId + "?page=" + $routeParams.page :
|
||||
"/content/content/edit/" + data.parentId;
|
||||
}
|
||||
|
||||
init($scope.content);
|
||||
|
||||
//in one particular special case, after we've created a new item we redirect back to the edit
|
||||
// route but there might be server validation errors in the collection which we need to display
|
||||
// after the redirect, so we will bind all subscriptions which will show the server validation errors
|
||||
// if there are any and then clear them so the collection no longer persists them.
|
||||
serverValidationManager.executeAndClearAllSubscriptions();
|
||||
|
||||
syncTreeNode($scope.content, data.path, true);
|
||||
|
||||
resetLastListPageNumber($scope.content);
|
||||
|
||||
$scope.page.loading = false;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$scope.unPublish = function () {
|
||||
|
||||
if (formHelper.submitForm({ scope: $scope, statusMessage: "Unpublishing...", skipValidation: true })) {
|
||||
|
||||
$scope.page.buttonGroupState = "busy";
|
||||
|
||||
contentResource.unPublish($scope.content.id)
|
||||
.then(function (data) {
|
||||
|
||||
formHelper.resetForm({ scope: $scope, notifications: data.notifications });
|
||||
|
||||
contentEditingHelper.handleSuccessfulSave({
|
||||
scope: $scope,
|
||||
savedContent: data,
|
||||
rebindCallback: contentEditingHelper.reBindChangedProperties($scope.content, data)
|
||||
});
|
||||
|
||||
init($scope.content);
|
||||
|
||||
syncTreeNode($scope.content, data.path);
|
||||
|
||||
$scope.page.buttonGroupState = "success";
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$scope.sendToPublish = function () {
|
||||
return performSave({ saveMethod: contentResource.sendToPublish, statusMessage: "Sending...", action: "sendToPublish" });
|
||||
};
|
||||
|
||||
$scope.saveAndPublish = function () {
|
||||
return performSave({ saveMethod: contentResource.publish, statusMessage: "Publishing...", action: "publish" });
|
||||
};
|
||||
|
||||
$scope.save = function () {
|
||||
return performSave({ saveMethod: $scope.saveMethod(), statusMessage: "Saving...", action: "save" });
|
||||
};
|
||||
|
||||
$scope.preview = function (content) {
|
||||
|
||||
|
||||
if (!$scope.busy) {
|
||||
|
||||
// Chromes popup blocker will kick in if a window is opened
|
||||
// outwith the initial scoped request. This trick will fix that.
|
||||
//
|
||||
var previewWindow = $window.open('preview/?id=' + content.id, 'umbpreview');
|
||||
$scope.save().then(function (data) {
|
||||
// Build the correct path so both /#/ and #/ work.
|
||||
var redirect = Umbraco.Sys.ServerVariables.umbracoSettings.umbracoPath + '/preview/?id=' + data.id;
|
||||
previewWindow.location.href = redirect;
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
function createDirective() {
|
||||
|
||||
var directive = {
|
||||
restrict: 'E',
|
||||
replace: true,
|
||||
templateUrl: 'views/components/content/edit.html',
|
||||
controller: 'Umbraco.Editors.Content.EditorDirectiveController',
|
||||
scope: {
|
||||
contentId: "=",
|
||||
isNew: "=?",
|
||||
treeAlias: "@",
|
||||
page: "=?",
|
||||
saveMethod: "&",
|
||||
getMethod: "&",
|
||||
getScaffoldMethod: "&?"
|
||||
}
|
||||
};
|
||||
|
||||
return directive;
|
||||
|
||||
}
|
||||
|
||||
angular.module('umbraco.directives').controller('Umbraco.Editors.Content.EditorDirectiveController', ContentEditController);
|
||||
angular.module('umbraco.directives').directive('contentEditor', createDirective);
|
||||
|
||||
})();
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
angular.module("umbraco.directives").directive('nestedContentEditor', [
|
||||
angular.module("umbraco.directives").directive('umbNestedContentEditor', [
|
||||
|
||||
function () {
|
||||
|
||||
|
||||
+3
-3
@@ -86,7 +86,7 @@ Use this directive to generate a pagination.
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
function PaginationDirective() {
|
||||
function PaginationDirective(localizationService) {
|
||||
|
||||
function link(scope, el, attr, ctrl) {
|
||||
|
||||
@@ -123,12 +123,12 @@ Use this directive to generate a pagination.
|
||||
|
||||
//now, if the start is greater than 0 then '1' will not be displayed, so do the elipses thing
|
||||
if (start > 0) {
|
||||
scope.pagination.unshift({ name: "First", val: 1, isActive: false }, {val: "...",isActive: false});
|
||||
scope.pagination.unshift({ name: localizationService.localize("general_first"), val: 1, isActive: false }, {val: "...",isActive: false});
|
||||
}
|
||||
|
||||
//same for the end
|
||||
if (start < maxIndex) {
|
||||
scope.pagination.push({ val: "...", isActive: false }, { name: "Last", val: scope.totalPages, isActive: false });
|
||||
scope.pagination.push({ val: "...", isActive: false }, { name: localizationService.localize("general_last"), val: scope.totalPages, isActive: false });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -122,7 +122,7 @@
|
||||
});
|
||||
|
||||
$scope.showReset = function () {
|
||||
return $scope.config.hasPassword && $scope.config.enableReset;
|
||||
return $scope.config.enableReset;
|
||||
};
|
||||
|
||||
$scope.showOldPass = function () {
|
||||
|
||||
@@ -26,11 +26,9 @@
|
||||
function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
|
||||
/** internal method process the saving of data and post processing the result */
|
||||
function saveContentItem(content, action, files) {
|
||||
function saveContentItem(content, action, files, restApiUrl) {
|
||||
return umbRequestHelper.postSaveContent({
|
||||
restApiUrl: umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"PostSave"),
|
||||
restApiUrl: restApiUrl,
|
||||
content: content,
|
||||
action: action,
|
||||
files: files,
|
||||
@@ -269,6 +267,16 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
'Failed to delete item ' + id);
|
||||
},
|
||||
|
||||
deleteBlueprint: function (id) {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.post(
|
||||
umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"DeleteBlueprint",
|
||||
[{ id: id }])),
|
||||
'Failed to delete blueprint ' + id);
|
||||
},
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name umbraco.resources.contentResource#getById
|
||||
@@ -300,6 +308,16 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
'Failed to retrieve data for content id ' + id);
|
||||
},
|
||||
|
||||
getBlueprintById: function (id) {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get(
|
||||
umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"GetBlueprintById",
|
||||
[{ id: id }])),
|
||||
'Failed to retrieve data for content id ' + id);
|
||||
},
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name umbraco.resources.contentResource#getByIds
|
||||
@@ -381,6 +399,17 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
'Failed to retrieve data for empty content item type ' + alias);
|
||||
},
|
||||
|
||||
getBlueprintScaffold: function (blueprintId) {
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get(
|
||||
umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"GetEmpty",
|
||||
[{ blueprintId: blueprintId }])),
|
||||
'Failed to retrieve blueprint for id ' + blueprintId);
|
||||
},
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name umbraco.resources.contentResource#getNiceUrl
|
||||
@@ -564,9 +593,18 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
*
|
||||
*/
|
||||
save: function (content, isNew, files) {
|
||||
return saveContentItem(content, "save" + (isNew ? "New" : ""), files);
|
||||
var endpoint = umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"PostSave");
|
||||
return saveContentItem(content, "save" + (isNew ? "New" : ""), files, endpoint);
|
||||
},
|
||||
|
||||
saveBlueprint: function (content, isNew, files) {
|
||||
var endpoint = umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"PostSaveBlueprint");
|
||||
return saveContentItem(content, "save" + (isNew ? "New" : ""), files, endpoint);
|
||||
},
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
@@ -597,7 +635,10 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
*
|
||||
*/
|
||||
publish: function (content, isNew, files) {
|
||||
return saveContentItem(content, "publish" + (isNew ? "New" : ""), files);
|
||||
var endpoint = umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"PostSave");
|
||||
return saveContentItem(content, "publish" + (isNew ? "New" : ""), files, endpoint);
|
||||
},
|
||||
|
||||
|
||||
@@ -628,7 +669,10 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
*
|
||||
*/
|
||||
sendToPublish: function (content, isNew, files) {
|
||||
return saveContentItem(content, "sendPublish" + (isNew ? "New" : ""), files);
|
||||
var endpoint = umbRequestHelper.getApiUrl(
|
||||
"contentApiBaseUrl",
|
||||
"PostSave");
|
||||
return saveContentItem(content, "sendPublish" + (isNew ? "New" : ""), files, endpoint);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -665,6 +709,17 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
[{ id: id }])),
|
||||
'Failed to publish content with id ' + id);
|
||||
|
||||
},
|
||||
|
||||
createBlueprintFromContent: function (contentId, name) {
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.post(
|
||||
umbRequestHelper.getApiUrl("contentApiBaseUrl", "CreateBlueprintFromContent", {
|
||||
contentId: contentId, name: name
|
||||
})
|
||||
),
|
||||
"Failed to create blueprint from content with id " + contentId
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -123,6 +123,16 @@ function packageResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
'Failed to install package. Error during the step "InstallFiles" ');
|
||||
},
|
||||
|
||||
checkRestart: function (package) {
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.post(
|
||||
umbRequestHelper.getApiUrl(
|
||||
"packageInstallApiBaseUrl",
|
||||
"CheckRestart"), package),
|
||||
'Failed to install package. Error during the step "CheckRestart" ');
|
||||
},
|
||||
|
||||
installData: function (package) {
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
|
||||
@@ -290,10 +290,10 @@
|
||||
var propTemplate = _.find(genericTab.properties, function (item) {
|
||||
return item.alias === "_umb_template";
|
||||
});
|
||||
saveModel.expireDate = propExpireDate.value;
|
||||
saveModel.releaseDate = propReleaseDate.value;
|
||||
saveModel.templateAlias = propTemplate.value;
|
||||
|
||||
saveModel.expireDate = propExpireDate ? propExpireDate.value : null;
|
||||
saveModel.releaseDate = propReleaseDate ? propReleaseDate.value : null;
|
||||
saveModel.templateAlias = propTemplate ? propTemplate.value : null;
|
||||
|
||||
return saveModel;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,9 +1,25 @@
|
||||
.nested-content
|
||||
.nested-content
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.nested-content__item
|
||||
.nested-content--not-supported
|
||||
{
|
||||
opacity: 0.3;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.nested-content-overlay
|
||||
{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.nested-content__item
|
||||
{
|
||||
position: relative;
|
||||
text-align: left;
|
||||
@@ -18,7 +34,7 @@
|
||||
background: #f8f8f8;
|
||||
}
|
||||
|
||||
.nested-content__item.ui-sortable-placeholder
|
||||
.nested-content__item.ui-sortable-placeholder
|
||||
{
|
||||
background: #f8f8f8;
|
||||
border: 1px dashed #d9d9d9;
|
||||
@@ -37,18 +53,18 @@
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.nested-content__header-bar
|
||||
.nested-content__header-bar
|
||||
{
|
||||
padding: 15px 20px;
|
||||
padding: 15px 20px;
|
||||
border-bottom: 1px dashed #e0e0e0;
|
||||
text-align: right;
|
||||
cursor: pointer;
|
||||
background-color: white;
|
||||
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
}
|
||||
|
||||
.nested-content__heading
|
||||
@@ -57,14 +73,14 @@
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.nested-content__heading i
|
||||
.nested-content__heading i
|
||||
{
|
||||
vertical-align: text-top;
|
||||
color: #999; /* same icon color as the icons in the item type picker */
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.nested-content__icons
|
||||
.nested-content__icons
|
||||
{
|
||||
margin: -6px 0;
|
||||
opacity: 0;
|
||||
@@ -116,19 +132,19 @@
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nested-content__icon--disabled
|
||||
.nested-content__icon--disabled
|
||||
{
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
|
||||
.nested-content__footer-bar
|
||||
.nested-content__footer-bar
|
||||
{
|
||||
text-align: center;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.nested-content__content
|
||||
.nested-content__content
|
||||
{
|
||||
border-bottom: 1px dashed #e0e0e0;
|
||||
}
|
||||
@@ -142,7 +158,7 @@
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.nested-content__help-text
|
||||
.nested-content__help-text
|
||||
{
|
||||
display: inline-block;
|
||||
padding: 10px 20px 10px 20px;
|
||||
@@ -171,7 +187,7 @@
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.form-horizontal .nested-content--narrow .controls-row
|
||||
.form-horizontal .nested-content--narrow .controls-row
|
||||
{
|
||||
margin-left: 40% !important;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
style="width: 100%"
|
||||
ng-model="searchTerm"
|
||||
class="umb-search-field search-query input-block-level"
|
||||
placeholder="Filter..."
|
||||
localize="plceholder"
|
||||
placeholder="@placeholders_filter"
|
||||
no-dirty-check>
|
||||
</div>
|
||||
</div>
|
||||
@@ -17,12 +18,12 @@
|
||||
|
||||
<div class="umb-control-group">
|
||||
<select ng-model="color" class="input-block-level">
|
||||
<option value="">Black</option>
|
||||
<option value="color-green">Green</option>
|
||||
<option value="color-yellow">Yellow</option>
|
||||
<option value="color-orange">Orange</option>
|
||||
<option value="color-blue">Blue</option>
|
||||
<option value="color-red">Red</option>
|
||||
<option value=""><localize key="colors_black">Black</localize></option>
|
||||
<option value="color-green"><localize key="colors_green">Green</localize></option>
|
||||
<option value="color-yellow"><localize key="colors_yellow">Yellow</localize></option>
|
||||
<option value="color-orange"><localize key="colors_orange">Orange</localize></option>
|
||||
<option value="color-blue"><localize key="colors_blue">Blue</localize></option>
|
||||
<option value="color-red"><localize key="colors_red">Red</localize></option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
<div class="umb-pane">
|
||||
<p>
|
||||
Are you sure you want to delete <strong>{{currentNode.name}}</strong> ?
|
||||
<localize key="defaultdialogs_confirmdelete">Are you sure you want to delete</localize> <strong>{{currentNode.name}}</strong> ?
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<umb-control-group label="@content_target">
|
||||
<select class="umb-editor umb-dropdown" ng-model="target.target">
|
||||
<option value=""></option>
|
||||
<option value="_blank">Opens the linked document in a new window or tab</option>
|
||||
<option value="_blank"><localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize></option>
|
||||
<option value="_top">Opens the linked document in the full body of the window</option>
|
||||
<option value="_parent">Opens the linked document in the parent frame</option>
|
||||
</select>
|
||||
@@ -63,7 +63,7 @@
|
||||
<localize key="general_cancel">Cancel</localize>
|
||||
</a>
|
||||
|
||||
<a href ng-click="switchToMediaPicker()" class="btn">Link to file</a>
|
||||
<a href ng-click="switchToMediaPicker()" class="btn"><localize key="defaultdialogs_linkToFile">Link to file</localize></a>
|
||||
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@@ -73,4 +73,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -75,7 +75,8 @@
|
||||
<input type="text"
|
||||
ng-model="searchTerm"
|
||||
class="umb-search-field search-query"
|
||||
placeholder="Filter...">
|
||||
localize="placeholder"
|
||||
placeholder="@placeholders_filter">
|
||||
</div>
|
||||
|
||||
<div class="upload-button">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form ng-controller="Umbraco.Dialogs.RteEmbedController" val-form-manager>
|
||||
<form ng-controller="Umbraco.Dialogs.RteEmbedController" val-form-manager>
|
||||
<div class="umb-panel">
|
||||
<div class="umb-panel-body no-header with-footer">
|
||||
<umb-pane>
|
||||
@@ -11,7 +11,7 @@
|
||||
<umb-control-group label="Size">
|
||||
<input type="text" ng-model="form.width" on-blur="changeSize('width')" style="width:50px"/> x <input type="text" ng-model="form.height" on-blur="changeSize('height')" style="width:50px"/>
|
||||
|
||||
<label for="constrain" style="display:inline">Constrain:</label>
|
||||
<label for="constrain" style="display:inline"><localize key="general_constrain">Constrain</localize>:</label>
|
||||
<input id="constrain" type="checkbox" ng-model="form.constrain" style="margin-bottom: 10px;"/>
|
||||
</umb-control-group>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<div class="umb-panel">
|
||||
|
||||
<div class="umb-panel-header">
|
||||
<h1 class="headline" style="margin: 10px 0 0 0">Build a query</h1>
|
||||
<h1 class="headline" style="margin: 10px 0 0 0"><localize key="template_buildQuery">Build a query</localize></h1>
|
||||
</div>
|
||||
|
||||
<div class="umb-panel-body with-footer umb-querybuilder">
|
||||
@@ -149,10 +149,10 @@
|
||||
<localize key="general_close">Close</localize>
|
||||
</a>
|
||||
|
||||
<a href ng-click="submit(result.queryExpression)" class="btn btn-primary">Insert</a>
|
||||
<a href ng-click="submit(result.queryExpression)" class="btn btn-primary"><localize key="general_insert">Insert</localize></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<a href ng-click="close()" class="btn btn-link">
|
||||
<localize key="general_close">Close</localize>
|
||||
</a>
|
||||
<a href ng-click="submit(section)" class="btn btn-primary">Insert</a>
|
||||
<a href ng-click="submit(section)" class="btn btn-primary"><localize key="general_insert">Insert</localize></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
<div class="umb-pane external-logins" ng-if="externalLoginProviders.length > 0 && !showPasswordFields">
|
||||
|
||||
<h5>External login providers</h5>
|
||||
<h5><localize key="defaultdialogs_externalLoginProviders">External login providers</localize></h5>
|
||||
|
||||
<div ng-repeat="login in externalLoginProviders">
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
onclick="document.forms.oauthloginform.submit();">
|
||||
|
||||
<i class="fa" ng-class="login.properties.SocialIcon"></i>
|
||||
Link your {{login.caption}} account
|
||||
<localize key="defaultdialogs_linkYour">Link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
name="provider"
|
||||
value="{{login.authType}}">
|
||||
<i class="fa" ng-class="login.properties.SocialIcon"></i>
|
||||
Un-link your {{login.caption}} account
|
||||
<localize key="defaultdialogs_unLinkYour">Un-link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
+3
-2
@@ -69,12 +69,13 @@
|
||||
</label>
|
||||
|
||||
<select class="umb-dropdown" ng-options="validationType.name for validationType in vm.validationTypes" ng-model="vm.selectedValidationType" ng-change="vm.changeValidationType(vm.selectedValidationType)">
|
||||
<option value="">Validation</option>
|
||||
<option value=""><localize key="validation_validation">Validation</localize></option>
|
||||
</select>
|
||||
|
||||
<textarea
|
||||
class="editor-validation-pattern"
|
||||
placeholder="Enter a regular expression"
|
||||
localize="placeholder"
|
||||
placeholder="@validation_validationRegExp"
|
||||
ng-model="model.property.validation.pattern"
|
||||
ng-change="vm.changeValidationPattern()"
|
||||
ng-if="vm.showValidationPattern"
|
||||
|
||||
@@ -17,22 +17,22 @@
|
||||
<div class="umb-control-group">
|
||||
<select ng-model="color" class="input-block-level">
|
||||
<option value="">
|
||||
<localize key="color_black">Black</localize>
|
||||
<localize key="colors_black">Black</localize>
|
||||
</option>
|
||||
<option value="color-green">
|
||||
<localize key="color_green">Green</localize>
|
||||
<localize key="colors_green">Green</localize>
|
||||
</option>
|
||||
<option value="color-yellow">
|
||||
<localize key="color_yellow">Yellow</localize>
|
||||
<localize key="colors_yellow">Yellow</localize>
|
||||
</option>
|
||||
<option value="color-orange">
|
||||
<localize key="color_orange">Orange</localize>
|
||||
<localize key="colors_orange">Orange</localize>
|
||||
</option>
|
||||
<option value="color-blue">
|
||||
<localize key="color_blue">Blue</localize>
|
||||
<localize key="colors_blue">Blue</localize>
|
||||
</option>
|
||||
<option value="color-red">
|
||||
<localize key="color_red">Red</localize>
|
||||
<localize key="colors_red">Red</localize>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!-- select field -->
|
||||
<div class="control-group umb-control-group -no-border">
|
||||
<div class="umb-el-wrap">
|
||||
<label class="control-label" for="chooseField">Choose field</label>
|
||||
<label class="control-label" for="chooseField"><localize key="templateEditor_chooseField">Choose field</localize></label>
|
||||
<div class="controls">
|
||||
<select ng-model="vm.field">
|
||||
<optgroup localize="label" label="@templateEditor_customFields">
|
||||
@@ -25,11 +25,11 @@
|
||||
<!-- Fallback field -->
|
||||
<div>
|
||||
<i class="icon icon-add blue" ng-hide="vm.showAltField"></i>
|
||||
<a href="" ng-click="vm.showAltField=true" ng-hide="vm.showAltField">Add fallback field</a>
|
||||
<a href="" ng-click="vm.showAltField=true" ng-hide="vm.showAltField"><localize key="templateEditor_addFallbackField">Add fallback field</localize></a>
|
||||
|
||||
<div class="control-group umb-control-group -no-border" ng-hide="!vm.showAltField">
|
||||
<div class="umb-el-wrap">
|
||||
<label class="control-label" for="altField">Fallback field</label>
|
||||
<label class="control-label" for="altField"><localize key="templateEditor_fallbackField">Fallback field</localize></label>
|
||||
<div class="controls">
|
||||
<select ng-model="vm.altField" >
|
||||
<optgroup localize="label" label="@templateEditor_customFields">
|
||||
@@ -48,12 +48,12 @@
|
||||
<div>
|
||||
<div style="margin-bottom: 20px;">
|
||||
<i class="icon icon-add blue" ng-hide="vm.showAltText"></i>
|
||||
<a href="" ng-click="vm.showAltText=true" ng-hide="vm.showAltText">Add default value</a>
|
||||
<a href="" ng-click="vm.showAltText=true" ng-hide="vm.showAltText"><localize key="templateEditor_addDefaultValue">Add default value</localize></a>
|
||||
</div>
|
||||
|
||||
<div class="control-group umb-control-group -no-border" ng-hide="!vm.showAltText">
|
||||
<div class="umb-el-wrap">
|
||||
<label class="control-label" for="altText">Default value</label>
|
||||
<label class="control-label" for="altText"><localize key="templateEditor_defaultValue">Default value</localize></label>
|
||||
<div class="controls">
|
||||
<input type="text" name="altText" ng-model="vm.altText" umb-auto-focus>
|
||||
</div>
|
||||
@@ -66,15 +66,15 @@
|
||||
<div class="umb-el-wrap">
|
||||
<div class="controls">
|
||||
<label class="control-label" for="recursive">
|
||||
Recursive
|
||||
<localize key="templateEditor_recursive">Recursive</localize>
|
||||
</label>
|
||||
<input type="checkbox" name="recursive" ng-model="vm.recursive">
|
||||
Yes, make it recursive
|
||||
<localize key="templateEditor_recursiveDescr">Yes, make it recursive</localize>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5>Format and encoding</h5>
|
||||
<h5><localize key="templateEditor_formatAndEncoding">Format and encoding</localize></h5>
|
||||
|
||||
<!-- Format as date -->
|
||||
<div class="control-group umb-control-group">
|
||||
@@ -82,13 +82,13 @@
|
||||
<div class="controls">
|
||||
<div>
|
||||
<label class="control-label">
|
||||
Format as date
|
||||
<small>Format the value as a date, or a date with time, accoring to the active culture.</small>
|
||||
<localize key="templateEditor_formatAsDate">Format as date</localize>
|
||||
<small><localize key="templateEditor_formatAsDateDescr">Format the value as a date, or a date with time, accoring to the active culture</localize>.</small>
|
||||
</label>
|
||||
</div>
|
||||
<a href ng-click="vm.setDateOption('date')" class="btn"><i class="icon icon-check" ng-if="vm.date"></i> Date only</a>
|
||||
<a href ng-click="vm.setDateOption('dateWithTime')" class="btn"><i class="icon icon-check" ng-if="vm.dateTime"></i> Date and time</a>
|
||||
<input type="text" ng-model="vm.dateTimeSeparator" ng-hide="!vm.dateTime" placeholder="separator">
|
||||
<a href ng-click="vm.setDateOption('date')" class="btn"><i class="icon icon-check" ng-if="vm.date"></i> <localize key="templateEditor_dateOnly">Date only</localize></a>
|
||||
<a href ng-click="vm.setDateOption('dateWithTime')" class="btn"><i class="icon icon-check" ng-if="vm.dateTime"></i> <localize key="templateEditor_withTime">Date and time</localize></a>
|
||||
<input type="text" ng-model="vm.dateTimeSeparator" ng-hide="!vm.dateTime" localize="placeholder" placeholder="@templateEditor_separator">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -99,11 +99,11 @@
|
||||
<div class="controls">
|
||||
<div>
|
||||
<label class="control-label">
|
||||
Casing
|
||||
<localize key="templateEditor_casing">Casing</localize>
|
||||
</label>
|
||||
</div>
|
||||
<a href ng-click="vm.setCasingOption('uppercase')" class="btn" style="text-transform: uppercase;"><i class="icon icon-check" ng-if="vm.casingUpper"></i> Uppercase</a>
|
||||
<a href ng-click="vm.setCasingOption('lowercase')" class="btn"style="text-transform: lowercase;"><i class="icon icon-check" ng-if="vm.casingLower"></i> Lowercase</a>
|
||||
<a href ng-click="vm.setCasingOption('uppercase')" class="btn" style="text-transform: uppercase;"><i class="icon icon-check" ng-if="vm.casingUpper"></i> <localize key="templateEditor_uppercase">Uppercase</localize></a>
|
||||
<a href ng-click="vm.setCasingOption('lowercase')" class="btn"style="text-transform: lowercase;"><i class="icon icon-check" ng-if="vm.casingLower"></i> <localize key="templateEditor_lowercase">Lowercase</localize></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -114,8 +114,8 @@
|
||||
<div class="controls">
|
||||
<div>
|
||||
<label class="control-label">
|
||||
Encoding
|
||||
<small>Will format special characters in URLs</small>
|
||||
<localize key="templateEditor_encoding">Encoding</localize>
|
||||
<small><localize key="templateEditor_urlEncodeHelp">Will format special characters in URLs</localize></small>
|
||||
</label>
|
||||
</div>
|
||||
<a href ng-click="vm.setEncodingOption('html')" class="btn"><i class="icon icon-check" ng-if="vm.encodeHtml"></i> HTML</a>
|
||||
@@ -124,14 +124,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h5>Modify output</h5>
|
||||
<h5><localize key="templateEditor_modifyOutput">Modify output</localize></h5>
|
||||
|
||||
<!-- Insert Before -->
|
||||
<div class="control-group umb-control-group -no-border ng-scope">
|
||||
<div class="umb-el-wrap">
|
||||
<label class="control-label" for="insertBefore">
|
||||
Insert before field
|
||||
<small>Will be inserted before the field value</small>
|
||||
<localize key="templateEditor_preContent">Insert before field</localize>
|
||||
<small><localize key="templateEditor_insertedBefore">Will be inserted before the field value</localize></small>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="insertBefore" class="-full-width-input" ng-model="vm.insertBefore">
|
||||
@@ -143,8 +143,8 @@
|
||||
<div class="control-group umb-control-group">
|
||||
<div class="umb-el-wrap">
|
||||
<label class="control-label" for="insertAfter">
|
||||
Insert after field
|
||||
<small>Will be inserted after the field value</small>
|
||||
<localize key="templateEditor_postContent">Insert after field</localize>
|
||||
<small><localize key="templateEditor_insertedAfter">Will be inserted after the field value</localize></small>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="insertAfter" class="-full-width-input" ng-model="vm.insertAfter">
|
||||
@@ -158,12 +158,12 @@
|
||||
<div class="controls">
|
||||
<div>
|
||||
<label class="control-label" for="linebreaks">
|
||||
Convert line breaks
|
||||
<small>Replaces line breaks with break html tag</small>
|
||||
<localize key="templateEditor_convertLineBreaks">Convert line breaks</localize>
|
||||
<small><localize key="templateEditor_convertLineBreaksHelp">Replaces line breaks with break html tag</localize></small>
|
||||
</label>
|
||||
</div>
|
||||
<input type="checkbox" name="linebreaks" ng-model="vm.convertLinebreaks">
|
||||
Yes, convert line breaks
|
||||
<localize key="templateEditor_convertLineBreaksDescription">Yes, convert line breaks</localize>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -174,12 +174,12 @@
|
||||
<div class="controls">
|
||||
<div>
|
||||
<label class="control-label" for="paragraph">
|
||||
Remove paragraph tags
|
||||
<small>Will remove any paragraph tag in the beginning and end of the text</small>
|
||||
<localize key="templateEditor_removeParagraph">Remove paragraph tags</localize>
|
||||
<small><localize key="templateEditor_removeParagraphHelp">Will remove any paragraph tag in the beginning and end of the text</localize></small>
|
||||
</label>
|
||||
</div>
|
||||
<input type="checkbox" name="paragraph" ng-model="vm.removeParagraphTags">
|
||||
Yes, remove paragraph tags
|
||||
<localize key="templateEditor_removeParagraphDescription">Yes, remove paragraph tags</localize>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -188,7 +188,7 @@
|
||||
<div class="control-group umb-control-group -no-border">
|
||||
<div class="umb-el-wrap">
|
||||
<div class="controls">
|
||||
<label class="control-label">Output sample</label>
|
||||
<label class="control-label"><localize key="templateEditor_outputSample">Output sample</localize></label>
|
||||
<pre>{{ vm.generateOutputSample() }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -196,4 +196,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
<div>
|
||||
|
||||
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
|
||||
|
||||
<form name="contentForm"
|
||||
ng-submit="save()"
|
||||
novalidate
|
||||
val-form-manager>
|
||||
|
||||
<umb-editor-view ng-if="!page.loading" umb-tabs>
|
||||
|
||||
<umb-editor-header
|
||||
menu="page.menu"
|
||||
name="content.name"
|
||||
tabs="content.tabs"
|
||||
hide-icon="true"
|
||||
hide-description="true"
|
||||
hide-alias="true">
|
||||
</umb-editor-header>
|
||||
|
||||
|
||||
<umb-editor-container>
|
||||
|
||||
<umb-tabs-content class="form-horizontal" view="true">
|
||||
<umb-tab id="tab{{tab.id}}" ng-repeat="tab in content.tabs" rel="{{tab.id}}">
|
||||
|
||||
<umb-property ng-repeat="property in tab.properties" property="property">
|
||||
<umb-editor model="property"></umb-editor>
|
||||
</umb-property>
|
||||
|
||||
</umb-tab>
|
||||
</umb-tabs-content>
|
||||
|
||||
</umb-editor-container>
|
||||
|
||||
|
||||
<umb-editor-footer>
|
||||
|
||||
<umb-editor-footer-content-left>
|
||||
|
||||
<umb-breadcrumbs
|
||||
ng-if="ancestors && ancestors.length > 0"
|
||||
ancestors="ancestors"
|
||||
entity-type="content">
|
||||
</umb-breadcrumbs>
|
||||
|
||||
</umb-editor-footer-content-left>
|
||||
|
||||
|
||||
<umb-editor-footer-content-right>
|
||||
|
||||
<umb-button
|
||||
ng-if="page.listViewPath"
|
||||
type="link"
|
||||
href="#{{page.listViewPath}}"
|
||||
label="Return to list"
|
||||
label-key="buttons_returnToList">
|
||||
</umb-button>
|
||||
|
||||
<umb-button
|
||||
ng-if="!page.isNew && content.allowPreview"
|
||||
type="button"
|
||||
button-style="info"
|
||||
action="preview(content)"
|
||||
label="Preview page"
|
||||
label-key="buttons_showPage">
|
||||
</umb-button>
|
||||
|
||||
<umb-button-group
|
||||
ng-if="defaultButton"
|
||||
default-button="defaultButton"
|
||||
sub-buttons="subButtons"
|
||||
state="page.buttonGroupState"
|
||||
direction="up"
|
||||
float="right">
|
||||
</umb-button-group>
|
||||
|
||||
|
||||
</umb-editor-footer-content-right>
|
||||
|
||||
</umb-editor-footer>
|
||||
|
||||
</umb-editor-view>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<a ng-if="showBackButton()" href="" class="umb-mini-list-view__back" ng-click="exitMiniListView()">
|
||||
<i class="icon-arrow-left umb-mini-list-view__back-icon"></i>
|
||||
<span class="umb-mini-list-view__back-text">Back</span> /
|
||||
<span class="umb-mini-list-view__back-text"><localize key="general_back">Back</localize></span> /
|
||||
</a>
|
||||
|
||||
<umb-breadcrumbs
|
||||
@@ -98,4 +98,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<div ng-if="description" class="umb-node-preview__description">{{ description }}</div>
|
||||
</div>
|
||||
<div class="umb-node-preview__actions">
|
||||
<a class="umb-node-preview__action" title="Open" href="" ng-if="allowOpen" ng-click="onOpen()">Open</a>
|
||||
<a class="umb-node-preview__action umb-node-preview__action--red" title="Remove" href="" ng-if="allowRemove" ng-click="onRemove()">Remove</i></a>
|
||||
<a class="umb-node-preview__action" title="Open" href="" ng-if="allowOpen" ng-click="onOpen()"><localize key="general_open">Open</localize></a>
|
||||
<a class="umb-node-preview__action umb-node-preview__action--red" title="Remove" href="" ng-if="allowRemove" ng-click="onRemove()"><localize key="general_remove">Remove</localize></i></a>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,11 +6,67 @@
|
||||
* @description
|
||||
* The controller for the content creation dialog
|
||||
*/
|
||||
function contentCreateController($scope, $routeParams, contentTypeResource, iconHelper) {
|
||||
|
||||
contentTypeResource.getAllowedTypes($scope.currentNode.id).then(function(data) {
|
||||
$scope.allowedTypes = iconHelper.formatContentTypeIcons(data);
|
||||
function contentCreateController($scope,
|
||||
$routeParams,
|
||||
contentTypeResource,
|
||||
iconHelper,
|
||||
$location,
|
||||
navigationService,
|
||||
blueprintConfig) {
|
||||
|
||||
function initialize() {
|
||||
contentTypeResource.getAllowedTypes($scope.currentNode.id).then(function (data) {
|
||||
$scope.allowedTypes = iconHelper.formatContentTypeIcons(data);
|
||||
});
|
||||
|
||||
$scope.selectContentType = true;
|
||||
$scope.selectBlueprint = false;
|
||||
$scope.allowBlank = blueprintConfig.allowBlank;
|
||||
}
|
||||
|
||||
function close() {
|
||||
navigationService.hideMenu();
|
||||
}
|
||||
|
||||
function createBlank(docType) {
|
||||
$location
|
||||
.path("/content/content/edit/" + $scope.currentNode.id)
|
||||
.search("doctype=" + docType.alias + "&create=true");
|
||||
close();
|
||||
}
|
||||
|
||||
function createOrSelectBlueprintIfAny(docType) {
|
||||
var blueprintIds = _.keys(docType.blueprints || {});
|
||||
$scope.docType = docType;
|
||||
if (blueprintIds.length) {
|
||||
if (blueprintConfig.skipSelect) {
|
||||
createFromBlueprint(blueprintIds[0]);
|
||||
} else {
|
||||
$scope.selectContentType = false;
|
||||
$scope.selectBlueprint = true;
|
||||
}
|
||||
} else {
|
||||
createBlank(docType);
|
||||
}
|
||||
}
|
||||
|
||||
function createFromBlueprint(blueprintId) {
|
||||
$location
|
||||
.path("/content/content/edit/" + $scope.currentNode.id)
|
||||
.search("doctype=" + $scope.docType.alias + "&create=true&blueprintId=" + blueprintId);
|
||||
close();
|
||||
}
|
||||
|
||||
$scope.createBlank = createBlank;
|
||||
$scope.createOrSelectBlueprintIfAny = createOrSelectBlueprintIfAny;
|
||||
$scope.createFromBlueprint = createFromBlueprint;
|
||||
|
||||
initialize();
|
||||
}
|
||||
|
||||
angular.module('umbraco').controller("Umbraco.Editors.Content.CreateController", contentCreateController);
|
||||
angular.module("umbraco").controller("Umbraco.Editors.Content.CreateController", contentCreateController);
|
||||
|
||||
angular.module("umbraco").value("blueprintConfig", {
|
||||
skipSelect: false,
|
||||
allowBlank: true
|
||||
});
|
||||
@@ -0,0 +1,56 @@
|
||||
(function () {
|
||||
|
||||
function CreateBlueprintController(
|
||||
$scope,
|
||||
contentResource,
|
||||
notificationsService,
|
||||
navigationService,
|
||||
localizationService,
|
||||
formHelper,
|
||||
contentEditingHelper) {
|
||||
|
||||
$scope.message = {
|
||||
name: $scope.currentNode.name
|
||||
};
|
||||
|
||||
var successText = {};
|
||||
localizationService.localize("content_createBlueprintFrom", [$scope.message.name]).then(function (localizedVal) {
|
||||
$scope.label = localizedVal;
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.cancel = function () {
|
||||
navigationService.hideMenu();
|
||||
};
|
||||
|
||||
$scope.create = function () {
|
||||
if (formHelper.submitForm({
|
||||
scope: $scope,
|
||||
formCtrl: this.blueprintForm,
|
||||
statusMessage: "Creating blueprint..."
|
||||
})) {
|
||||
|
||||
contentResource.createBlueprintFromContent($scope.currentNode.id, $scope.message.name)
|
||||
.then(function(data) {
|
||||
|
||||
formHelper.resetForm({ scope: $scope, notifications: data.notifications });
|
||||
|
||||
navigationService.hideMenu();
|
||||
},
|
||||
function(err) {
|
||||
|
||||
contentEditingHelper.handleSaveError({
|
||||
redirectOnFailure: false,
|
||||
err: err
|
||||
});
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
angular.module("umbraco").controller("Umbraco.Editors.Content.CreateBlueprintController", CreateBlueprintController);
|
||||
|
||||
}());
|
||||
@@ -6,227 +6,21 @@
|
||||
* @description
|
||||
* The controller for the content editor
|
||||
*/
|
||||
function ContentEditController($scope, $rootScope, $routeParams, $q, $timeout, $window, appState, contentResource, entityResource, navigationService, notificationsService, angularHelper, serverValidationManager, contentEditingHelper, treeService, fileManager, formHelper, umbRequestHelper, keyboardService, umbModelMapper, editorState, $http) {
|
||||
function ContentEditController($scope, $routeParams, contentResource) {
|
||||
|
||||
//setup scope vars
|
||||
$scope.defaultButton = null;
|
||||
$scope.subButtons = [];
|
||||
|
||||
$scope.page = {};
|
||||
$scope.page.loading = false;
|
||||
$scope.page.menu = {};
|
||||
$scope.page.menu.currentNode = null;
|
||||
$scope.page.menu.currentSection = appState.getSectionState("currentSection");
|
||||
$scope.page.listViewPath = null;
|
||||
$scope.page.isNew = $routeParams.create;
|
||||
$scope.page.buttonGroupState = "init";
|
||||
|
||||
function init(content) {
|
||||
|
||||
var buttons = contentEditingHelper.configureContentEditorButtons({
|
||||
create: $routeParams.create,
|
||||
content: content,
|
||||
methods: {
|
||||
saveAndPublish: $scope.saveAndPublish,
|
||||
sendToPublish: $scope.sendToPublish,
|
||||
save: $scope.save,
|
||||
unPublish: $scope.unPublish
|
||||
}
|
||||
});
|
||||
$scope.defaultButton = buttons.defaultButton;
|
||||
$scope.subButtons = buttons.subButtons;
|
||||
|
||||
editorState.set($scope.content);
|
||||
|
||||
//We fetch all ancestors of the node to generate the footer breadcrumb navigation
|
||||
if (!$routeParams.create) {
|
||||
if (content.parentId && content.parentId != -1) {
|
||||
entityResource.getAncestors(content.id, "document")
|
||||
.then(function (anc) {
|
||||
$scope.ancestors = anc;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Syncs the content item to it's tree node - this occurs on first load and after saving */
|
||||
function syncTreeNode(content, path, initialLoad) {
|
||||
|
||||
if (!$scope.content.isChildOfListView) {
|
||||
navigationService.syncTree({ tree: "content", path: path.split(","), forceReload: initialLoad !== true }).then(function (syncArgs) {
|
||||
$scope.page.menu.currentNode = syncArgs.node;
|
||||
});
|
||||
}
|
||||
else if (initialLoad === true) {
|
||||
|
||||
//it's a child item, just sync the ui node to the parent
|
||||
navigationService.syncTree({ tree: "content", path: path.substring(0, path.lastIndexOf(",")).split(","), forceReload: initialLoad !== true });
|
||||
|
||||
//if this is a child of a list view and it's the initial load of the editor, we need to get the tree node
|
||||
// from the server so that we can load in the actions menu.
|
||||
umbRequestHelper.resourcePromise(
|
||||
$http.get(content.treeNodeUrl),
|
||||
'Failed to retrieve data for child node ' + content.id).then(function (node) {
|
||||
$scope.page.menu.currentNode = node;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// This is a helper method to reduce the amount of code repitition for actions: Save, Publish, SendToPublish
|
||||
function performSave(args) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
$scope.page.buttonGroupState = "busy";
|
||||
|
||||
contentEditingHelper.contentEditorPerformSave({
|
||||
statusMessage: args.statusMessage,
|
||||
saveMethod: args.saveMethod,
|
||||
scope: $scope,
|
||||
content: $scope.content,
|
||||
action: args.action
|
||||
}).then(function (data) {
|
||||
//success
|
||||
init($scope.content);
|
||||
syncTreeNode($scope.content, data.path);
|
||||
|
||||
$scope.page.buttonGroupState = "success";
|
||||
|
||||
deferred.resolve(data);
|
||||
}, function (err) {
|
||||
//error
|
||||
if (err) {
|
||||
editorState.set($scope.content);
|
||||
}
|
||||
|
||||
$scope.page.buttonGroupState = "error";
|
||||
|
||||
deferred.reject(err);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function resetLastListPageNumber(content) {
|
||||
// We're using rootScope to store the page number for list views, so if returning to the list
|
||||
// we can restore the page. If we've moved on to edit a piece of content that's not the list or it's children
|
||||
// we should remove this so as not to confuse if navigating to a different list
|
||||
if (!content.isChildOfListView && !content.isContainer) {
|
||||
$rootScope.lastListViewPageViewed = null;
|
||||
}
|
||||
}
|
||||
|
||||
if ($routeParams.create) {
|
||||
|
||||
$scope.page.loading = true;
|
||||
|
||||
//we are creating so get an empty content item
|
||||
contentResource.getScaffold($routeParams.id, $routeParams.doctype)
|
||||
.then(function (data) {
|
||||
|
||||
$scope.content = data;
|
||||
|
||||
init($scope.content);
|
||||
|
||||
resetLastListPageNumber($scope.content);
|
||||
|
||||
$scope.page.loading = false;
|
||||
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
$scope.page.loading = true;
|
||||
|
||||
//we are editing so get the content item from the server
|
||||
contentResource.getById($routeParams.id)
|
||||
.then(function (data) {
|
||||
|
||||
$scope.content = data;
|
||||
|
||||
if (data.isChildOfListView && data.trashed === false) {
|
||||
$scope.page.listViewPath = ($routeParams.page)
|
||||
? "/content/content/edit/" + data.parentId + "?page=" + $routeParams.page
|
||||
: "/content/content/edit/" + data.parentId;
|
||||
}
|
||||
|
||||
init($scope.content);
|
||||
|
||||
//in one particular special case, after we've created a new item we redirect back to the edit
|
||||
// route but there might be server validation errors in the collection which we need to display
|
||||
// after the redirect, so we will bind all subscriptions which will show the server validation errors
|
||||
// if there are any and then clear them so the collection no longer persists them.
|
||||
serverValidationManager.executeAndClearAllSubscriptions();
|
||||
|
||||
syncTreeNode($scope.content, data.path, true);
|
||||
|
||||
resetLastListPageNumber($scope.content);
|
||||
|
||||
$scope.page.loading = false;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$scope.unPublish = function () {
|
||||
|
||||
if (formHelper.submitForm({ scope: $scope, statusMessage: "Unpublishing...", skipValidation: true })) {
|
||||
|
||||
$scope.page.buttonGroupState = "busy";
|
||||
|
||||
contentResource.unPublish($scope.content.id)
|
||||
.then(function (data) {
|
||||
|
||||
formHelper.resetForm({ scope: $scope, notifications: data.notifications });
|
||||
|
||||
contentEditingHelper.handleSuccessfulSave({
|
||||
scope: $scope,
|
||||
savedContent: data,
|
||||
rebindCallback: contentEditingHelper.reBindChangedProperties($scope.content, data)
|
||||
});
|
||||
|
||||
init($scope.content);
|
||||
|
||||
syncTreeNode($scope.content, data.path);
|
||||
|
||||
$scope.page.buttonGroupState = "success";
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$scope.sendToPublish = function () {
|
||||
return performSave({ saveMethod: contentResource.sendToPublish, statusMessage: "Sending...", action: "sendToPublish" });
|
||||
};
|
||||
|
||||
$scope.saveAndPublish = function () {
|
||||
return performSave({ saveMethod: contentResource.publish, statusMessage: "Publishing...", action: "publish" });
|
||||
};
|
||||
|
||||
$scope.save = function () {
|
||||
return performSave({ saveMethod: contentResource.save, statusMessage: "Saving...", action: "save" });
|
||||
};
|
||||
|
||||
$scope.preview = function (content) {
|
||||
|
||||
|
||||
if (!$scope.busy) {
|
||||
|
||||
// Chromes popup blocker will kick in if a window is opened
|
||||
// outwith the initial scoped request. This trick will fix that.
|
||||
//
|
||||
var previewWindow = $window.open('preview/?id=' + content.id, 'umbpreview');
|
||||
$scope.save().then(function (data) {
|
||||
// Build the correct path so both /#/ and #/ work.
|
||||
var redirect = Umbraco.Sys.ServerVariables.umbracoSettings.umbracoPath + '/preview/?id=' + data.id;
|
||||
previewWindow.location.href = redirect;
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
function scaffoldEmpty() {
|
||||
return contentResource.getScaffold($routeParams.id, $routeParams.doctype);
|
||||
}
|
||||
function scaffoldBlueprint() {
|
||||
return contentResource.getBlueprintScaffold($routeParams.blueprintId);
|
||||
}
|
||||
|
||||
$scope.contentId = $routeParams.id;
|
||||
$scope.saveMethod = contentResource.save;
|
||||
$scope.getMethod = contentResource.getById;
|
||||
$scope.getScaffoldMethod = $routeParams.blueprintId ? scaffoldBlueprint : scaffoldEmpty;
|
||||
$scope.page = $routeParams.page;
|
||||
$scope.isNew = $routeParams.create;
|
||||
}
|
||||
|
||||
angular.module("umbraco").controller("Umbraco.Editors.Content.EditController", ContentEditController);
|
||||
|
||||
@@ -1,45 +1,53 @@
|
||||
<div class="umb-dialog-body with-footer" ng-controller="Umbraco.Editors.Content.CreateController" ng-cloak>
|
||||
|
||||
<div class="umb-pane">
|
||||
<h5><localize key="create_createUnder">Create a page under</localize> {{currentNode.name}}</h5>
|
||||
|
||||
<p class="abstract" ng-if="allowedTypes && allowedTypes.length === 0">
|
||||
<localize key="create_noDocumentTypes" />
|
||||
</p>
|
||||
<div class="umb-pane">
|
||||
<h5 ng-show="selectContentType"><localize key="create_createUnder">Create a page under</localize> {{currentNode.name}}</h5>
|
||||
<h5 ng-show="selectBlueprint"><localize key="content_selectBlueprint">Select a blueprint</localize></h5>
|
||||
|
||||
<ul class="umb-actions umb-actions-child">
|
||||
<p class="abstract" ng-if="allowedTypes && allowedTypes.length === 0">
|
||||
<localize key="create_noDocumentTypes" />
|
||||
</p>
|
||||
|
||||
<li ng-repeat="docType in allowedTypes | orderBy:'name':false">
|
||||
<a href="#content/content/edit/{{currentNode.id}}?doctype={{docType.alias}}&create=true" ng-click="nav.hideNavigation()">
|
||||
|
||||
<i class="large {{docType.icon}}"></i>
|
||||
<ul class="umb-actions umb-actions-child" ng-show="selectContentType">
|
||||
|
||||
<span class="menu-label">
|
||||
{{docType.name}}
|
||||
<small>
|
||||
{{docType.description}}
|
||||
</small>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<!--
|
||||
<li class="add">
|
||||
<a href="#settings/documenttype/create/{{currentNode.id}}?doctype={{docType.alias}}&create=true" ng-click="nav.hideNavigation()">
|
||||
<i class="large icon-add"></i>
|
||||
<span class="menu-label">
|
||||
Create a new document type
|
||||
<small>
|
||||
Design and configure a new document type
|
||||
</small>
|
||||
</span>
|
||||
</a>
|
||||
</li> -->
|
||||
</ul>
|
||||
</div>
|
||||
<li ng-repeat="docType in allowedTypes | orderBy:'name':false">
|
||||
<a ng-click="createOrSelectBlueprintIfAny(docType)">
|
||||
<i class="large {{docType.icon}}"></i>
|
||||
<span class="menu-label">
|
||||
{{docType.name}}
|
||||
<small>
|
||||
{{docType.description}}
|
||||
</small>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul class="umb-actions umb-actions-child" ng-show="selectBlueprint">
|
||||
|
||||
<li ng-repeat="(key, value) in docType.blueprints | orderBy:'name':false">
|
||||
<a ng-click="createFromBlueprint(key)">
|
||||
<i class="large {{docType.icon}}"></i>
|
||||
<span class="menu-label">
|
||||
{{value}}
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li ng-show="allowBlank">
|
||||
<a ng-click="createBlank(docType)">
|
||||
<i class="large {{docType.icon}}"></i>
|
||||
<span class="menu-label">
|
||||
<localize key="content_blankBlueprint">Blank</localize>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="umb-dialog-footer btn-toolbar umb-btn-toolbar">
|
||||
<button class="btn btn-info" ng-click="nav.hideDialog(true)">
|
||||
<localize key="buttons_somethingElse">Do something else</localize>
|
||||
</button>
|
||||
<button class="btn btn-info" ng-click="nav.hideDialog(true)">
|
||||
<localize key="buttons_somethingElse">Do something else</localize>
|
||||
</button>
|
||||
</div>
|
||||
@@ -0,0 +1,32 @@
|
||||
<div ng-controller="Umbraco.Editors.Content.CreateBlueprintController">
|
||||
|
||||
<form name="blueprintForm"
|
||||
novalidate
|
||||
ng-submit="create()"
|
||||
val-form-manager>
|
||||
|
||||
<div class="umbracoDialog umb-dialog-body with-footer"
|
||||
ng-cloak>
|
||||
<div class="umb-pane">
|
||||
<umb-control-group label="{{label}}" hide-label="false">
|
||||
<input type="text" name="name" ng-model="message.name" class="umb-textstring textstring input-block-level"
|
||||
val-server-field="name"
|
||||
required />
|
||||
<span class="help-inline" val-msg-for="name" val-toggle-msg="required"><localize key="required" /></span>
|
||||
<span class="help-inline" val-msg-for="name" val-toggle-msg="valServerField"></span>
|
||||
</umb-control-group>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="umb-dialog-footer btn-toolbar umb-btn-toolbar">
|
||||
<button type="button" class="btn umb-button btn-info" ng-click="cancel()">
|
||||
<localize key="general_cancel">Cancel</localize>
|
||||
</button>
|
||||
<button type="submit" class="btn umb-button btn-success">
|
||||
<localize key="general_create">Create blueprint</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,86 +1,11 @@
|
||||
<div ng-controller="Umbraco.Editors.Content.EditController">
|
||||
|
||||
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
|
||||
|
||||
<form name="contentForm"
|
||||
ng-submit="save()"
|
||||
novalidate
|
||||
val-form-manager>
|
||||
|
||||
<umb-editor-view ng-if="!page.loading" umb-tabs>
|
||||
|
||||
<umb-editor-header
|
||||
menu="page.menu"
|
||||
name="content.name"
|
||||
tabs="content.tabs"
|
||||
hide-icon="true"
|
||||
hide-description="true"
|
||||
hide-alias="true">
|
||||
</umb-editor-header>
|
||||
|
||||
|
||||
<umb-editor-container>
|
||||
|
||||
<umb-tabs-content class="form-horizontal" view="true">
|
||||
<umb-tab id="tab{{tab.id}}" ng-repeat="tab in content.tabs" rel="{{tab.id}}">
|
||||
|
||||
<umb-property ng-repeat="property in tab.properties" property="property">
|
||||
<umb-editor model="property"></umb-editor>
|
||||
</umb-property>
|
||||
|
||||
</umb-tab>
|
||||
</umb-tabs-content>
|
||||
|
||||
</umb-editor-container>
|
||||
|
||||
|
||||
<umb-editor-footer>
|
||||
|
||||
<umb-editor-footer-content-left>
|
||||
|
||||
<umb-breadcrumbs
|
||||
ng-if="ancestors && ancestors.length > 0"
|
||||
ancestors="ancestors"
|
||||
entity-type="content">
|
||||
</umb-breadcrumbs>
|
||||
|
||||
</umb-editor-footer-content-left>
|
||||
|
||||
|
||||
<umb-editor-footer-content-right>
|
||||
|
||||
<umb-button
|
||||
ng-if="page.listViewPath"
|
||||
type="link"
|
||||
href="#{{page.listViewPath}}"
|
||||
label="Return to list"
|
||||
label-key="buttons_returnToList">
|
||||
</umb-button>
|
||||
|
||||
<umb-button
|
||||
ng-if="!page.isNew && content.allowPreview"
|
||||
type="button"
|
||||
button-style="info"
|
||||
action="preview(content)"
|
||||
label="Preview page"
|
||||
label-key="buttons_showPage">
|
||||
</umb-button>
|
||||
|
||||
<umb-button-group
|
||||
ng-if="defaultButton"
|
||||
default-button="defaultButton"
|
||||
sub-buttons="subButtons"
|
||||
state="page.buttonGroupState"
|
||||
direction="up"
|
||||
float="right">
|
||||
</umb-button-group>
|
||||
|
||||
|
||||
</umb-editor-footer-content-right>
|
||||
|
||||
</umb-editor-footer>
|
||||
|
||||
</umb-editor-view>
|
||||
|
||||
</form>
|
||||
<content-editor create-options="createOptions"
|
||||
content-id="contentId"
|
||||
page="page"
|
||||
save-method="saveMethod"
|
||||
get-method="getMethod"
|
||||
get-scaffold-method="getScaffoldMethod"
|
||||
tree-alias="content"
|
||||
is-new="isNew">
|
||||
</content-editor>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* @ngdoc controller
|
||||
* @name Umbraco.Editors.ContentBlueprint.DeleteController
|
||||
* @function
|
||||
*
|
||||
* @description
|
||||
* The controller for deleting content blueprints
|
||||
*/
|
||||
function ContentBlueprintDeleteController($scope, contentResource, treeService, navigationService) {
|
||||
|
||||
$scope.performDelete = function() {
|
||||
|
||||
//mark it for deletion (used in the UI)
|
||||
$scope.currentNode.loading = true;
|
||||
|
||||
contentResource.deleteBlueprint($scope.currentNode.id)
|
||||
.then(function() {
|
||||
$scope.currentNode.loading = false;
|
||||
//get the root node before we remove it
|
||||
var rootNode = treeService.getTreeRoot($scope.currentNode);
|
||||
//TODO: Need to sync tree, etc...
|
||||
treeService.removeNode($scope.currentNode);
|
||||
navigationService.hideMenu();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.cancel = function() {
|
||||
navigationService.hideDialog();
|
||||
};
|
||||
}
|
||||
|
||||
angular.module("umbraco").controller("Umbraco.Editors.ContentBlueprint.DeleteController", ContentBlueprintDeleteController);
|
||||
@@ -0,0 +1,12 @@
|
||||
<div class="umb-dialog umb-pane" ng-controller="Umbraco.Editors.ContentBlueprint.DeleteController">
|
||||
<div class="umb-dialog-body">
|
||||
|
||||
<p class="umb-abstract">
|
||||
<localize key="defaultdialogs_confirmdelete">Are you sure you want to delete</localize> <strong>{{currentNode.name}}</strong> ?
|
||||
</p>
|
||||
|
||||
<umb-confirm on-confirm="performDelete" on-cancel="cancel">
|
||||
</umb-confirm>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* @ngdoc controller
|
||||
* @name Umbraco.Editors.Content.EditController
|
||||
* @function
|
||||
*
|
||||
* @description
|
||||
* The controller for the content editor
|
||||
*/
|
||||
function ContentBlueprintEditController($scope, $routeParams, contentResource) {
|
||||
var excludedProps = ["_umb_urls", "_umb_releasedate", "_umb_expiredate", "_umb_template"];
|
||||
|
||||
function getScaffold() {
|
||||
return contentResource.getScaffold(-1, $routeParams.doctype)
|
||||
.then(function (scaffold) {
|
||||
var lastTab = scaffold.tabs[scaffold.tabs.length - 1];
|
||||
lastTab.properties = _.filter(lastTab.properties,
|
||||
function(p) {
|
||||
return excludedProps.indexOf(p.alias) === -1;
|
||||
});
|
||||
scaffold.allowPreview = false;
|
||||
scaffold.allowedActions = ["A", "S", "C"];
|
||||
|
||||
return scaffold;
|
||||
});
|
||||
}
|
||||
|
||||
$scope.contentId = $routeParams.id;
|
||||
$scope.isNew = $routeParams.id === "-1";
|
||||
$scope.saveMethod = contentResource.saveBlueprint;
|
||||
$scope.getMethod = contentResource.getBlueprintById;
|
||||
$scope.getScaffoldMethod = getScaffold;
|
||||
}
|
||||
|
||||
angular.module("umbraco").controller("Umbraco.Editors.ContentBlueprint.EditController", ContentBlueprintEditController);
|
||||
@@ -0,0 +1,9 @@
|
||||
<div ng-controller="Umbraco.Editors.ContentBlueprint.EditController">
|
||||
<content-editor content-id="contentId"
|
||||
save-method="saveMethod"
|
||||
get-method="getMethod"
|
||||
get-scaffold-method="getScaffoldMethod"
|
||||
is-new="isNew"
|
||||
tree-alias="contentblueprints">
|
||||
</content-editor>
|
||||
</div>
|
||||
@@ -14,15 +14,15 @@
|
||||
|
||||
<div ng-switch-default>
|
||||
<p>
|
||||
<i class="icon-alert red"></i> <strong class="red">All property types & property data</strong>
|
||||
using this data type will be deleted permanently, please confirm you want to delete these as well.
|
||||
<i class="icon-alert red"></i> <strong class="red"><localize key="editdatatype_allPropTypes">All property types & property data</localize></strong>
|
||||
<localize key="editdatatype_willBeDeleted">using this data type will be deleted permanently, please confirm you want to delete these as well</localize>.
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" ng-model="confirmed" />
|
||||
Yes, delete {{currentNode.name}} and all property types & property data using this data type
|
||||
<localize key="editdatatype_yesDelete">Yes, delete</localize> <strong>{{currentNode.name}}</strong> <localize key="editdatatype_andAllRelated">and all property types & property data using this data type</localize>
|
||||
</label>
|
||||
|
||||
<umb-confirm ng-if="confirmed" on-confirm="performDelete" on-cancel="cancel">
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
<umb-editor-header
|
||||
menu="page.menu"
|
||||
name="content.name"
|
||||
key="content.key"
|
||||
name-locked="page.nameLocked"
|
||||
hide-icon="true"
|
||||
hide-description="true"
|
||||
@@ -28,7 +27,7 @@
|
||||
ng-model="content.selectedEditor"
|
||||
required
|
||||
ng-options="e.alias as e.name for e in content.availableEditors"></select>
|
||||
<span class="help-inline" val-msg-for="selectedEditor" val-toggle-msg="required">Required</span>
|
||||
<span class="help-inline" val-msg-for="selectedEditor" val-toggle-msg="required"><localize key="general_required">Required</localize></span>
|
||||
</div>
|
||||
|
||||
</umb-property>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="umb-pane">
|
||||
|
||||
<p class="abstract" ng-hide="success">
|
||||
Select the folder to move <strong>{{currentNode.name}}</strong> to in the tree structure below
|
||||
<localize key="editdatatype_selectFolder">Select the folder to move</localize> <strong>{{currentNode.name}}</strong> <localize key="editdatatype_inTheTree">to in the tree structure below</localize>
|
||||
</p>
|
||||
|
||||
<div class="umb-loader-wrapper" ng-show="busy">
|
||||
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
|
||||
<div ng-show="success">
|
||||
<h5 class="text-success"><strong>{{currentNode.name}}</strong> was moved underneath <strong>{{target.name}}</strong></h5>
|
||||
<h5 class="text-success"><strong>{{currentNode.name}}</strong> <localize key="editdatatype_wasMoved">was moved underneath</localize> <strong>{{target.name}}</strong></h5>
|
||||
<button class="btn btn-primary" ng-click="nav.hideDialog()">Ok</button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
|
||||
<div class="umb-dialog-footer btn-toolbar umb-btn-toolbar" ng-hide="success">
|
||||
<a class="btn btn-link" ng-click="nav.hideDialog()">Cancel</a>
|
||||
<button class="btn btn-primary" ng-click="move()">Move</button>
|
||||
<a class="btn btn-link" ng-click="nav.hideDialog()"><localize key="general_cancel">Cancel</localize></a>
|
||||
<button class="btn btn-primary" ng-click="move()"><localize key="actions_move">Move</localize></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
function PackagesInstallLocalController($scope, $route, $location, Upload, umbRequestHelper, packageResource, localStorageService, $timeout, $window, localizationService) {
|
||||
function PackagesInstallLocalController($scope, $route, $location, Upload, umbRequestHelper, packageResource, localStorageService, $timeout, $window, localizationService, $q) {
|
||||
|
||||
var vm = this;
|
||||
vm.state = "upload";
|
||||
@@ -117,10 +117,37 @@
|
||||
.then(function(pack) {
|
||||
vm.installState.progress = "25";
|
||||
vm.installState.status = localizationService.localize("packager_installStateInstalling");
|
||||
vm.installState.progress = "50";
|
||||
return packageResource.installFiles(pack);
|
||||
},
|
||||
installError)
|
||||
.then(function(pack) {
|
||||
vm.installState.status = localizationService.localize("packager_installStateRestarting");
|
||||
vm.installState.progress = "50";
|
||||
var deferred = $q.defer();
|
||||
|
||||
//check if the app domain is restarted ever 2 seconds
|
||||
var count = 0;
|
||||
function checkRestart() {
|
||||
$timeout(function () {
|
||||
packageResource.checkRestart(pack).then(function (d) {
|
||||
count++;
|
||||
//if there is an id it means it's not restarted yet but we'll limit it to only check 10 times
|
||||
if (d.isRestarting && count < 10) {
|
||||
checkRestart();
|
||||
}
|
||||
else {
|
||||
//it's restarted!
|
||||
deferred.resolve(d);
|
||||
}
|
||||
},
|
||||
installError);
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
checkRestart();
|
||||
|
||||
return deferred.promise;
|
||||
}, installError)
|
||||
.then(function(pack) {
|
||||
vm.installState.status = localizationService.localize("packager_installStateRestarting");
|
||||
vm.installState.progress = "75";
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<!-- Drag and drop illustration -->
|
||||
<i class="icon-box" draggable="false"></i>
|
||||
<small class="faded" draggable="false"><strong>Drop to upload</strong></small>
|
||||
<small class="faded" draggable="false"><strong><localize key="packager_dropHere">Drop to upload</localize></strong></small>
|
||||
|
||||
<!-- Select files -->
|
||||
<div class="umb-upload-local__select-file"
|
||||
@@ -34,7 +34,7 @@
|
||||
ngf-multiple="true"
|
||||
ngf-pattern="*.zip"
|
||||
ngf-max-size="{{ maxFileSize }}">
|
||||
- <localize key="media_orClickHereToUpload">or click here to choose files</localize>
|
||||
- <localize key="packager_orClickHereToUpload">or click here to choose files</localize>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -42,9 +42,9 @@
|
||||
</div>
|
||||
|
||||
|
||||
<h3><strong>Upload package</strong></h3>
|
||||
<h3><strong><localize key="packager_uploadPackage">Upload package</localize></strong></h3>
|
||||
<p class="faded">
|
||||
Install a local package by selecting it from your machine. Only install packages from sources you know and trust.
|
||||
<localize key="packager_localPackageDescription">Install a local package by selecting it from your machine. Only install packages from sources you know and trust</localize>.
|
||||
</p>
|
||||
|
||||
</form>
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
<umb-editor-sub-header>
|
||||
<umb-editor-sub-header-content-left>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'upload'">← Upload another package</a>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'upload'">← <localize key="packager_uploadAnother">Upload another package</localize></a>
|
||||
</umb-editor-sub-header-content-left>
|
||||
</umb-editor-sub-header>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
</div>
|
||||
<div class="umb-package-info">
|
||||
|
||||
<h4 class="umb-info-local-item"><strong>Uploading package</strong></h4>
|
||||
<h4 class="umb-info-local-item"><strong><localize key="packager_installStateUploading">Uploading package...</localize></strong></h4>
|
||||
|
||||
<umb-progress-bar
|
||||
percentage="{{vm.zipFile.uploadProgress}}">
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
<umb-editor-sub-header>
|
||||
<umb-editor-sub-header-content-left>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'upload'">← Cancel and upload another package</a>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'upload'">← <localize key="packager_cancelAndAnother">Cancel and upload another package</localize></a>
|
||||
</umb-editor-sub-header-content-left>
|
||||
</umb-editor-sub-header>
|
||||
|
||||
@@ -111,22 +111,22 @@
|
||||
<h4 class="umb-info-local-item"><strong>{{ vm.localPackage.name }}</strong></h4>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Author</strong>
|
||||
<strong><localize key="packager_packageAuthor">Author</localize></strong>
|
||||
<a href="{{ vm.localPackage.authorUrl }}" target="_blank">{{ vm.localPackage.author }}</a>
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Version</strong>
|
||||
<strong><localize key="packager_packageVersion">Version</localize></strong>
|
||||
{{ vm.localPackage.version }}
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>License</strong>
|
||||
<strong><localize key="packager_packageLicense">License</localize></strong>
|
||||
<a href="{{ vm.localPackage.licenseUrl }}" target="_blank">{{ vm.localPackage.license }}</a>
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Read me</strong>
|
||||
<strong><localize key="packager_packageReadme">Read me</localize></strong>
|
||||
<br>
|
||||
<small ng-bind-html-unsafe="vm.localPackage.readMe"></small>
|
||||
</div>
|
||||
@@ -134,14 +134,14 @@
|
||||
<div class="umb-info-local-item mt4 flex items-center flex-column" ng-if="vm.installState.status == '' && vm.localPackage.isCompatible">
|
||||
<label for="license-accepts" class="umb-package-installer-label">
|
||||
<input type="checkbox" id="license-accepts" ng-model="vm.localPackage.packageLicenseAccept" required no-dirty-check>
|
||||
<strong class="label-text">I accept <a href="{{ vm.localPackage.licenseUrl }}" target="_blank">terms of use</a></strong>
|
||||
<strong class="label-text"><localize key="packager_accept">I accept</localize> <a href="{{ vm.localPackage.licenseUrl }}" target="_blank"><localize key="packager_termsOfUse">terms of use</localize></a></strong>
|
||||
</label>
|
||||
<button type="button"
|
||||
ng-class="{'-inactive' : localPackageForm.$invalid}"
|
||||
ng-disabled="localPackageForm.$invalid"
|
||||
class="umb-era-button -green flex-inline mt3"
|
||||
ng-click="vm.installPackage()">
|
||||
Install package
|
||||
<localize key="packager_packageInstall">Install package</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item text-error" ng-if="!vm.localPackage.isCompatible">
|
||||
This package cannot be installed, it requires a minimum Umbraco version of {{vm.localPackage.umbracoVersion}}
|
||||
<localize key="packager_targetVersionMismatch">This package cannot be installed, it requires a minimum Umbraco version of</localize> {{vm.localPackage.umbracoVersion}}
|
||||
</div>
|
||||
<div class="umb-info-local-item text-info">
|
||||
<p>{{vm.installState.status}}</p>
|
||||
@@ -168,7 +168,7 @@
|
||||
|
||||
class="btn btn-success flex-inline mt3"
|
||||
ng-click="vm.reloadPage()">
|
||||
Finish
|
||||
<localize key="packager_installFinish">Finish</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<div ng-if="vm.installedPackages.length > 0">
|
||||
|
||||
<div class="umb-packages-view-title">Installed packages</div>
|
||||
<div class="umb-packages-view-title"><localize key="packager_installedPackages">Installed packages</localize></div>
|
||||
|
||||
<div class="umb-package-list">
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-package-list__item-actions">
|
||||
<a class="umb-package-list__item-action" href="" ng-click="vm.confirmUninstall(installedPackage)">Uninstall</a>
|
||||
<a class="umb-package-list__item-action" href="" ng-click="vm.confirmUninstall(installedPackage)"><localize key="packager_packageUninstallHeader">Uninstall</localize></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -36,8 +36,8 @@
|
||||
<umb-empty-state
|
||||
ng-if="vm.installedPackages.length === 0"
|
||||
position="center">
|
||||
<h4><strong>You don’t have any packages installed.</strong></h4>
|
||||
<p class="faded">You don’t have any packages installed. Either install a local package by selecting it from your machine, or browse through available packages using the "Package" icon in the top right of your screen."</p>
|
||||
<h4><strong><localize key="packager_noPackages">You don’t have any packages installed</localize>.</strong></h4>
|
||||
<p class="faded"><localize key="packager_noPackagesDescription">You don’t have any packages installed. Either install a local package by selecting it from your machine, or browse through available packages using the "Packages" icon in the top right of your screen</localize>.</p>
|
||||
</umb-empty-state>
|
||||
|
||||
</div>
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
<umb-editor-sub-header>
|
||||
<umb-editor-sub-header-content-left>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'list'">← Take me back</a>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'list'">← <localize key="general_back">Back</localize></a>
|
||||
</umb-editor-sub-header-content-left>
|
||||
</umb-editor-sub-header>
|
||||
|
||||
@@ -66,22 +66,22 @@
|
||||
<h4 class="umb-info-local-item"><strong>{{ vm.package.name }}</strong></h4>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Author</strong>
|
||||
<strong><localize key="packager_packageAuthor">Author</localize></strong>
|
||||
<a href="{{ vm.package.authorLink }}" target="_blank">{{ vm.package.author }}</a>
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Version</strong>
|
||||
<strong><localize key="packager_packageVersion">Version</localize></strong>
|
||||
{{ vm.package.version }}
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>License</strong>
|
||||
<strong><localize key="packager_packageLicense">License</localize></strong>
|
||||
<a href="{{ vm.package.licenseUrl }}" target="_blank">{{ vm.package.license }}</a>
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Read me</strong>
|
||||
<strong><localize key="packager_packageReadme">Read me</localize></strong>
|
||||
<br>
|
||||
<small> {{ vm.package.readme }} </small>
|
||||
</div>
|
||||
@@ -89,14 +89,14 @@
|
||||
<div class="umb-info-local-item mt4 flex items-center flex-column" ng-if="vm.installState.status == ''">
|
||||
<label for="confirm-uninstall" class="umb-package-installer-label">
|
||||
<input type="checkbox" id="confirm-uninstall" ng-model="vm.package.confirmUninstall" required no-dirty-check>
|
||||
<strong class="label-text">Confirm package uninstall</strong>
|
||||
<strong class="label-text"><localize key="packager_packageUninstallConfirm">Confirm package uninstall</localize></strong>
|
||||
</label>
|
||||
<button type="button"
|
||||
ng-class="{'-inactive' : uninstallForm.$invalid}"
|
||||
ng-disabled="uninstallForm.$invalid"
|
||||
class="umb-era-button -green flex-inline mt3"
|
||||
ng-click="vm.uninstallPackage(vm.package)">
|
||||
Uninstall package
|
||||
<localize key="packager_packageUninstallHeader">Uninstall package</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -193,13 +193,41 @@
|
||||
.import(selectedPackage)
|
||||
.then(function(pack) {
|
||||
vm.installState.status = localizationService.localize("packager_installStateInstalling");
|
||||
vm.installState.progress = "33";
|
||||
vm.installState.progress = "25";
|
||||
return packageResource.installFiles(pack);
|
||||
},
|
||||
error)
|
||||
.then(function(pack) {
|
||||
vm.installState.status = localizationService.localize("packager_installStateRestarting");
|
||||
vm.installState.progress = "66";
|
||||
vm.installState.progress = "50";
|
||||
var deferred = $q.defer();
|
||||
|
||||
//check if the app domain is restarted ever 2 seconds
|
||||
var count = 0;
|
||||
function checkRestart() {
|
||||
$timeout(function () {
|
||||
packageResource.checkRestart(pack).then(function (d) {
|
||||
count++;
|
||||
//if there is an id it means it's not restarted yet but we'll limit it to only check 10 times
|
||||
if (d.isRestarting && count < 10) {
|
||||
checkRestart();
|
||||
}
|
||||
else {
|
||||
//it's restarted!
|
||||
deferred.resolve(d);
|
||||
}
|
||||
},
|
||||
error);
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
checkRestart();
|
||||
|
||||
return deferred.promise;
|
||||
}, error)
|
||||
.then(function (pack) {
|
||||
vm.installState.status = localizationService.localize("packager_installStateRestarting");
|
||||
vm.installState.progress = "75";
|
||||
return packageResource.installData(pack);
|
||||
},
|
||||
error)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
<div class="umb-packages-section">
|
||||
<div class="umb-packages-search">
|
||||
<input class="-full-width-input" type="text" name="query" placeholder="Search for packages" umb-auto-focus ng-model="vm.searchQuery" ng-change="vm.search()" no-dirty-check>
|
||||
<input class="-full-width-input" type="text" name="query" localize="placeholder" placeholder="@packager_packageSearch" umb-auto-focus ng-model="vm.searchQuery" ng-change="vm.search()" no-dirty-check>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-packages-section" ng-if="vm.searchQuery == ''">
|
||||
<h4><strong>Popular</strong></h4>
|
||||
<h4><strong><localize key="packager_packagesPopular">Popular</localize></strong></h4>
|
||||
<div class="umb-packages clearfix">
|
||||
|
||||
<div class="umb-package" ng-repeat="package in vm.popular">
|
||||
@@ -58,8 +58,8 @@
|
||||
|
||||
<div class="umb-packages-section" ng-if="vm.packages.length > 0">
|
||||
|
||||
<h4 ng-if="vm.searchQuery === ''"><strong>New Releases</strong></h4>
|
||||
<h4 ng-if="vm.searchQuery !== ''"><strong>Results for '{{ vm.searchQuery }}'</strong></h4>
|
||||
<h4 ng-if="vm.searchQuery === ''"><strong><localize key="packager_packagesNew">New Releases</localize></strong></h4>
|
||||
<h4 ng-if="vm.searchQuery !== ''"><strong><localize key="packager_packageSearchResults">Results for</localize> '{{ vm.searchQuery }}'</strong></h4>
|
||||
|
||||
<div class="umb-packages clearfix">
|
||||
|
||||
@@ -105,8 +105,8 @@
|
||||
<umb-empty-state
|
||||
ng-if="vm.packages.length === 0 && vm.loading === false && vm.searchQuery !== ''"
|
||||
position="center">
|
||||
<h4><strong>We couldn't find anything for '{{ vm.searchQuery }}'</strong></h4>
|
||||
<p class="faded">Please try searching for another package or browse through the categories.</p>
|
||||
<h4><strong><localize key="packager_packageNoResults">We couldn't find anything for</localize> '{{ vm.searchQuery }}'</strong></h4>
|
||||
<p class="faded"><localize key="packager_packageNoResultsDescription">Please try searching for another package or browse through the categories</localize>.</p>
|
||||
</umb-empty-state>
|
||||
|
||||
</div>
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
<umb-editor-sub-header>
|
||||
<umb-editor-sub-header-content-left>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.setPackageViewState('packageList');">← Take me back</a>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.setPackageViewState('packageList');">← <localize key="general_back">Back</localize></a>
|
||||
</umb-editor-sub-header-content-left>
|
||||
</umb-editor-sub-header>
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
<div class="umb-package-details__section">
|
||||
<button class="umb-era-button -green -full-width"
|
||||
ng-if="vm.package.isValid === true"
|
||||
ng-click="vm.downloadPackage(vm.package)">Install package</button>
|
||||
ng-click="vm.downloadPackage(vm.package)"><localize key="packager_packageInstall">Install package</localize></button>
|
||||
|
||||
<button class="umb-era-button -inactive -full-width" ng-if="vm.package.isValid === false" disabled>
|
||||
<localize key="packager_packageAlreadyInstalled">Package is already installed</localize>
|
||||
@@ -175,55 +175,55 @@
|
||||
<div>
|
||||
<div class="umb-package-details__owner-profile-name">{{ vm.package.ownerInfo.owner }}</div>
|
||||
<div class="umb-package-details__owner-profile-karma">
|
||||
{{ vm.package.ownerInfo.owner }} has <strong>{{ vm.package.ownerInfo.karma }}</strong> karma points
|
||||
{{ vm.package.ownerInfo.owner }} <localize key="packager_packageHas">has</localize> <strong>{{ vm.package.ownerInfo.karma }}</strong> <localize key="packager_packageKarmaPoints">karma points</localize>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__section">
|
||||
<div class="umb-package-details__section-title">Information</div>
|
||||
<div class="umb-package-details__section-title"><localize key="packager_packageInfo">Information</localize></div>
|
||||
<div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.ownerInfo.owner">
|
||||
<div class="umb-package-details__information-item-label">Owner:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageOwner">Owner</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.ownerInfo.owner}}</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.ownerInfo.contributors">
|
||||
<div class="umb-package-details__information-item-label">Contributors:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageContrib">Contributors</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">
|
||||
<span ng-repeat="contributor in vm.package.ownerInfo.contributors">{{ contributor }}<span ng-if="!$last">, </span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.created">
|
||||
<div class="umb-package-details__information-item-label">Created:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageCreated">Created</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.created | date:'yyyy-MM-dd HH:mm:ss'}}</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.latestVersion">
|
||||
<div class="umb-package-details__information-item-label">Current version:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageCurrentVersion">Current version</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.latestVersion}}</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.information.netVersion">
|
||||
<div class="umb-package-details__information-item-label">.Net Version:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageNetVersion">.NET Version</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.information.netVersion}}</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.licenseName">
|
||||
<div class="umb-package-details__information-item-label">License:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageLicense">License</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.licenseName}}</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.downloads">
|
||||
<div class="umb-package-details__information-item-label">Downloads:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageDownloads">Downloads</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.downloads}}</div>
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__information-item" ng-if="vm.package.ownerInfo.karma">
|
||||
<div class="umb-package-details__information-item-label">Likes:</div>
|
||||
<div class="umb-package-details__information-item-label"><localize key="packager_packageLikes">Likes</localize>:</div>
|
||||
<div class="umb-package-details__information-item-content">{{vm.package.likes}}</div>
|
||||
</div>
|
||||
|
||||
@@ -231,8 +231,8 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__section">
|
||||
<div class="umb-package-details__section-title">Compatibility</div>
|
||||
<div class="umb-package-details__section-description">This package is compatible with the following versions of Umbraco, as reported by community members. Full compatability cannot be gauranteed for versions reported below 100%</div>
|
||||
<div class="umb-package-details__section-title"><localize key="packager_packageCompatibility">Compatibility</localize></div>
|
||||
<div class="umb-package-details__section-description"><localize key="packager_packageCompatibilityDescription">This package is compatible with the following versions of Umbraco, as reported by community members. Full compatability cannot be gauranteed for versions reported below 100%</localize></div>
|
||||
<div class="umb-package-details__compatability" ng-repeat="compatibility in vm.package.compatibility | filter:percentage > 0">
|
||||
<div class="umb-package-details__compatability-label">
|
||||
<span class="umb-package-details__information-item-label">{{compatibility.version}}</span>
|
||||
@@ -247,7 +247,7 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-package-details__section" ng-if="vm.package.externalSources">
|
||||
<div class="umb-package-details__section-title">External sources</div>
|
||||
<div class="umb-package-details__section-title"><localize key="packager_packageExternalSources">External sources</localize></div>
|
||||
<div>
|
||||
<div class="umb-package-details__information-item" ng-repeat="externalSource in vm.package.externalSources">
|
||||
<a class="umb-package-details__link" target="_blank" href="{{ externalSource.url }}">
|
||||
@@ -269,7 +269,7 @@
|
||||
<div ng-if="vm.packageViewState === 'packageInstall' && vm.loading === false">
|
||||
<umb-editor-sub-header>
|
||||
<umb-editor-sub-header-content-left>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.setPackageViewState('packageDetails');">← Take me back</a>
|
||||
<a class="umb-package-details__back-link" href="" ng-click="vm.setPackageViewState('packageDetails');">← <localize key="general_back">Back</localize></a>
|
||||
</umb-editor-sub-header-content-left>
|
||||
</umb-editor-sub-header>
|
||||
|
||||
@@ -295,17 +295,17 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Version</strong>
|
||||
<strong><localize key="packager_packageVersion">Version</localize></strong>
|
||||
{{ vm.localPackage.version }}
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>License</strong>
|
||||
<strong><localize key="packager_packageLicense">License</localize></strong>
|
||||
<a href="{{ vm.localPackage.licenseUrl }}" target="_blank">{{ vm.localPackage.license }}</a>
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item">
|
||||
<strong>Read me</strong>
|
||||
<strong><localize key="packager_packageReadme">Read me</localize></strong>
|
||||
<br>
|
||||
<small ng-bind-html-unsafe="vm.localPackage.readMe"></small>
|
||||
</div>
|
||||
@@ -313,7 +313,7 @@
|
||||
<div class="umb-info-local-item mt4 flex items-center flex-column" ng-if="vm.installState.status == '' && vm.localPackage.isCompatible">
|
||||
<label for="license-accept" class="umb-package-installer-label">
|
||||
<input type="checkbox" id="license-accept" ng-model="vm.localPackage.packageLicenseAccept" required no-dirty-check>
|
||||
<strong class="label-text">I accept <a href="{{ vm.localPackage.licenseUrl }}" target="_blank">terms of use</a></strong>
|
||||
<strong class="label-text"><localize key="packager_accept">I accept</localize> <a href="{{ vm.localPackage.licenseUrl }}" target="_blank"><localize key="packager_termsOfUse">terms of use</localize></a></strong>
|
||||
</label>
|
||||
<button type="button"
|
||||
ng-if="vm.installState.type !== 'error'"
|
||||
@@ -321,7 +321,7 @@
|
||||
ng-disabled="localPackageForm.$invalid"
|
||||
class="umb-era-button -green flex-inline mt3"
|
||||
ng-click="vm.installPackage(vm.localPackage)">
|
||||
Install package
|
||||
<localize key="packager_packageInstall">Install package</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -333,7 +333,7 @@
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item text-error" ng-if="!vm.localPackage.isCompatible">
|
||||
This package cannot be installed, it requires a minimum Umbraco version of {{vm.localPackage.umbracoVersion}}
|
||||
<localize key="packager_targetVersionMismatch">This package cannot be installed, it requires a minimum Umbraco version of</localize> {{vm.localPackage.umbracoVersion}}
|
||||
</div>
|
||||
|
||||
<div class="umb-info-local-item text-info" ng-class="{'text-info' : vm.installState.type !== 'error'}">
|
||||
@@ -346,7 +346,7 @@
|
||||
<button type="button"
|
||||
class="btn btn-success flex-inline mt3"
|
||||
ng-click="vm.reloadPage()">
|
||||
Finish
|
||||
<localize key="packager_installFinish">Finish</localize>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<!-- Snippets list -->
|
||||
<div ng-if="vm.showSnippets">
|
||||
|
||||
<h5>Select snippet</h5>
|
||||
<h5><localize key="defaultdialogs_selectSnippet">Select snippet</localize></h5>
|
||||
|
||||
<ul class="umb-actions umb-actions-child">
|
||||
<li ng-repeat="snippet in vm.snippets">
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
type="button"
|
||||
class="umb-era-button umb-button--s"
|
||||
ng-click="vm.openInsertOverlay()">
|
||||
<i class="icon icon-add"></i> Insert
|
||||
<i class="icon icon-add"></i> <localize key="template_insert">Insert</localize>
|
||||
</button>
|
||||
|
||||
<a class="umb-era-button umb-button--s dropdown-toggle umb-button-group__toggle" data-toggle="dropdown">
|
||||
@@ -37,9 +37,9 @@
|
||||
</a>
|
||||
|
||||
<ul aria-labelledby="dLabel" class="dropdown-menu bottom-up umb-button-group__sub-buttons" role="menu">
|
||||
<li><a href="" ng-click="vm.openPageFieldOverlay()">Value</a></li>
|
||||
<li><a href="" ng-click="vm.openMacroOverlay()">Macro</a></li>
|
||||
<li><a href="" ng-click="vm.openDictionaryItemOverlay()">Dictionary</a></li>
|
||||
<li><a href="" ng-click="vm.openPageFieldOverlay()"><localize key="template_insertPageField">Value</localize></a></li>
|
||||
<li><a href="" ng-click="vm.openMacroOverlay()"><localize key="template_insertMacro">Macro</localize></a></li>
|
||||
<li><a href="" ng-click="vm.openDictionaryItemOverlay()"><localize key="template_insertDictionaryItem">Dictionary item</localize></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@@ -49,7 +49,7 @@
|
||||
style="margin-right: 10px;"
|
||||
class="umb-era-button umb-button--s"
|
||||
ng-click="vm.openQueryBuilderOverlay()">
|
||||
<i class="icon icon-wand"></i> Query builder
|
||||
<i class="icon icon-wand"></i> <localize key="template_queryBuilder">Query builder</localize>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
@@ -120,4 +120,4 @@
|
||||
view="vm.queryBuilderOverlay.view">
|
||||
</umb-overlay>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user