Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc3c1a72a8 | |||
| 3a30c7ba40 | |||
| fb305c9d0e | |||
| b71564bfb5 | |||
| ba8a6cf65c | |||
| 394572a8fc | |||
| c7114b63f5 | |||
| 9704a8b591 | |||
| 0b6af3b4e1 | |||
| 4b874dc5b5 | |||
| a081d97546 | |||
| 6b79a508bb | |||
| e1f67a738b | |||
| 4410f1bb81 | |||
| 5c2a99987a | |||
| 715a2bf6d5 | |||
| d9ffb4b097 | |||
| c409922469 | |||
| e33eb863e6 | |||
| a424a7e4f3 | |||
| 75fa2bb1bb | |||
| 5585244d32 | |||
| 9336f4508a | |||
| 8f7024c32a | |||
| dea307ff8e | |||
| d69a10de48 | |||
| b93df7a4c0 | |||
| 48dbdebec5 | |||
| 65837fa74c | |||
| 29a73336e3 | |||
| 0584c4eda5 |
@@ -10,6 +10,8 @@ Install the selected <a href='https://github.com/imulus/Archetype/releases'>rele
|
||||
## Official Docs ##
|
||||
https://github.com/kgiszewski/ArchetypeManual
|
||||
|
||||
|
||||
##News and Updates##
|
||||
Follow us on Twitter https://twitter.com/ArchetypeKit
|
||||
|
||||
##Core Team##
|
||||
|
||||
@@ -23,6 +23,12 @@ namespace Archetype.Models
|
||||
[JsonProperty("id")]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
[JsonProperty("releaseDate")]
|
||||
public DateTime? ReleaseDate { get; set; }
|
||||
|
||||
[JsonProperty("expireDate")]
|
||||
public DateTime? ExpireDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ArchetypeFieldsetModel"/> class.
|
||||
/// </summary>
|
||||
@@ -129,6 +135,17 @@ namespace Archetype.Models
|
||||
return Properties.FirstOrDefault(p => p.Alias.InvariantEquals(propertyAlias));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is this fieldset disabled, either explicitly or by other means?
|
||||
/// </summary>
|
||||
/// <returns>true if this fieldset is disabled, false otherwise</returns>
|
||||
internal bool IsDisabled()
|
||||
{
|
||||
return Disabled
|
||||
|| (ReleaseDate.HasValue && ReleaseDate > DateTime.UtcNow)
|
||||
|| (ExpireDate.HasValue && DateTime.UtcNow > ExpireDate);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace Archetype.Models
|
||||
/// </returns>
|
||||
public IEnumerator<ArchetypeFieldsetModel> GetEnumerator()
|
||||
{
|
||||
return this.Fieldsets.Where(f => f.Disabled == false).GetEnumerator();
|
||||
return this.Fieldsets.Where(f => f.IsDisabled() == false).GetEnumerator();
|
||||
}
|
||||
|
||||
//possibly obsolete?
|
||||
|
||||
@@ -31,6 +31,9 @@ namespace Archetype.Models
|
||||
[JsonProperty("enableDisabling")]
|
||||
public bool EnableDisabling { get; set; }
|
||||
|
||||
[JsonProperty("enablePublishing")]
|
||||
public bool EnablePublishing { get; set; }
|
||||
|
||||
[JsonProperty("hideFieldsetControls")]
|
||||
public bool HideFieldsetControls { get; set; }
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace Archetype.Models
|
||||
|
||||
public bool IsDraft
|
||||
{
|
||||
get { return _fieldset.Disabled; }
|
||||
get { return _fieldset.IsDisabled(); }
|
||||
}
|
||||
|
||||
public PublishedItemType ItemType
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Archetype.Models
|
||||
var count = archetype.Fieldsets.Count();
|
||||
|
||||
_items = archetype.Fieldsets
|
||||
.Where(x => x.Disabled == false)
|
||||
.Where(x => x.IsDisabled() == false)
|
||||
.Select(x => new ArchetypePublishedContent(x, this))
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyVersion("1.12.4")]
|
||||
[assembly: AssemblyFileVersion("1.12.4")]
|
||||
[assembly: AssemblyVersion("1.13.0")]
|
||||
[assembly: AssemblyFileVersion("1.13.0")]
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace Archetype.PropertyEditors
|
||||
if(propDef == null || propDef.DataTypeGuid == null) continue;
|
||||
var dtd = ArchetypeHelper.Instance.GetDataTypeByGuid(Guid.Parse(propDef.DataTypeGuid));
|
||||
var propType = new PropertyType(dtd) {Alias = propDef.Alias};
|
||||
var prop = new Property(propType, propDef.Value);
|
||||
var prop = new Property(propType, (propDef.Value != null) ? propDef.Value.ToString() : null);
|
||||
var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias);
|
||||
propDef.Value = propEditor.ValueEditor.ConvertDbToString(prop, propType, dataTypeService);
|
||||
}
|
||||
@@ -135,7 +135,7 @@ namespace Archetype.PropertyEditors
|
||||
{
|
||||
var dtd = ArchetypeHelper.Instance.GetDataTypeByGuid(Guid.Parse(propDef.DataTypeGuid));
|
||||
var propType = new PropertyType(dtd) {Alias = propDef.Alias};
|
||||
var prop = new Property(propType, propDef.Value);
|
||||
var prop = new Property(propType, (propDef.Value != null) ? propDef.Value.ToString() : null);
|
||||
var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias);
|
||||
propDef.Value = propEditor.ValueEditor.ConvertDbToEditor(prop, propType, dataTypeService);
|
||||
}
|
||||
@@ -175,6 +175,10 @@ namespace Archetype.PropertyEditors
|
||||
var uploadedFiles = editorValue.AdditionalData.ContainsKey("files") ? editorValue.AdditionalData["files"] as IEnumerable<ContentItemFile> : null;
|
||||
foreach (var fieldset in archetype.Fieldsets)
|
||||
{
|
||||
// make sure the publishing dates are in UTC
|
||||
fieldset.ReleaseDate = EnsureUtcDate(fieldset.ReleaseDate);
|
||||
fieldset.ExpireDate = EnsureUtcDate(fieldset.ExpireDate);
|
||||
|
||||
// assign an id to the fieldset if it has none (e.g. newly created fieldset)
|
||||
fieldset.Id = fieldset.Id == Guid.Empty ? Guid.NewGuid() : fieldset.Id;
|
||||
// find the corresponding fieldset in the current Archetype value (if any)
|
||||
@@ -211,7 +215,7 @@ namespace Archetype.PropertyEditors
|
||||
var propData = new ContentPropertyData(propDef.Value, preValues, additionalData);
|
||||
var propEditor = PropertyEditorResolver.Current.GetByAlias(dtd.PropertyEditorAlias);
|
||||
// make sure to send the current property value (if any) to the PE ValueEditor
|
||||
propDef.Value = propEditor.ValueEditor.ConvertEditorToDb(propData, currentProperty != null ? currentProperty.Value : null);
|
||||
propDef.Value = propEditor.ValueEditor.ConvertEditorToDb(propData, currentProperty != null ? (currentProperty.Value != null) ? currentProperty.Value.ToString() : null : null);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -237,6 +241,20 @@ namespace Archetype.PropertyEditors
|
||||
? new ArchetypePropertyEditor()
|
||||
: (PropertyEditor) new TextboxPropertyEditor();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures that a datetime is in UTC
|
||||
/// </summary>
|
||||
/// <param name="dateTime">The datetime</param>
|
||||
/// <returns>The datetime in UTC (or null if it's not set)</returns>
|
||||
private DateTime? EnsureUtcDate(DateTime? dateTime)
|
||||
{
|
||||
if(dateTime.HasValue == false || dateTime.Value.Kind == DateTimeKind.Utc)
|
||||
{
|
||||
return dateTime;
|
||||
}
|
||||
return new DateTime(dateTime.Value.Ticks, DateTimeKind.Utc);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -6,7 +6,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio
|
||||
//define empty items
|
||||
var newPropertyModel = '{"alias": "", "remove": false, "collapse": false, "label": "", "helpText": "", "dataTypeGuid": "0cc0eba1-9960-42c9-bf9b-60e150b429ae", "value": ""}';
|
||||
var newFieldsetModel = '{"alias": "", "remove": false, "collapse": false, "labelTemplate": "", "icon": "", "label": "", "properties": [' + newPropertyModel + '], "group": null}';
|
||||
var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "startWithAddButton": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hidePropertyLabel": false, "maxFieldsets": null, "enableCollapsing": true, "enableCloning": false, "enableDisabling": true, "enableDeepDatatypeRequests": false, "fieldsets": [' + newFieldsetModel + '], "fieldsetGroups": []}');
|
||||
var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "startWithAddButton": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hidePropertyLabel": false, "maxFieldsets": null, "enableCollapsing": true, "enableCloning": false, "enableDisabling": true, "enableDeepDatatypeRequests": false, "enablePublishing": false, "fieldsets": [' + newFieldsetModel + '], "fieldsetGroups": []}');
|
||||
|
||||
//ini the model
|
||||
$scope.model.value = $scope.model.value || defaultFieldsetConfigModel;
|
||||
|
||||
@@ -148,6 +148,8 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
}
|
||||
}
|
||||
|
||||
addCustomPropertiesToFieldset(newFieldset);
|
||||
|
||||
$scope.setDirty();
|
||||
|
||||
$scope.$broadcast("archetypeAddFieldset", {index: $index, visible: countVisible()});
|
||||
@@ -239,6 +241,66 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
///&& $scope.model.config.fieldsets.length == 1;
|
||||
}
|
||||
|
||||
//helper that returns if an item can use publishing
|
||||
$scope.canPublish = function () {
|
||||
return $scope.model.config.enablePublishing;
|
||||
}
|
||||
|
||||
//helper that returns if the "misc fieldset configuration" section should be visible
|
||||
$scope.canConfigure = function () {
|
||||
// currently the only thing in the "misc fieldset configuration" section is the publishing setup
|
||||
return $scope.canPublish();
|
||||
}
|
||||
|
||||
$scope.showDisableIcon = function (fieldset) {
|
||||
if ($scope.canDisable() == false) {
|
||||
return false;
|
||||
}
|
||||
// disabled state takes precedence over publishing
|
||||
if (fieldset.disabled) {
|
||||
return true;
|
||||
}
|
||||
return $scope.isDisabledByPublishing(fieldset) == false;
|
||||
}
|
||||
|
||||
$scope.showPublishingIcon = function (fieldset) {
|
||||
if ($scope.canPublish() == false) {
|
||||
return false;
|
||||
}
|
||||
if ($scope.canDisable()) {
|
||||
// disabled state takes precedence over publishing
|
||||
if (fieldset.disabled) {
|
||||
return false;
|
||||
}
|
||||
return $scope.isDisabledByPublishing(fieldset);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
$scope.isDisabledByPublishing = function(fieldset) {
|
||||
if ($scope.canPublish() === false) {
|
||||
return false;
|
||||
}
|
||||
// NOTE: all comparison is done in local datetime
|
||||
// - that's fine because the selected local datetimes will be converted to UTC datetimes when submitted
|
||||
if (fieldset.expireDateModel && fieldset.expireDateModel.value && (moment() > moment(fieldset.expireDateModel.value))) {
|
||||
// an expired release affects the fieldset
|
||||
return true;
|
||||
}
|
||||
if (fieldset.releaseDateModel && fieldset.releaseDateModel.value && (moment(fieldset.releaseDateModel.value) > moment())) {
|
||||
// a pending release affects the fieldset
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$scope.isDisabled = function(fieldset) {
|
||||
if (fieldset.disabled) {
|
||||
return true;
|
||||
}
|
||||
return $scope.isDisabledByPublishing(fieldset);
|
||||
}
|
||||
|
||||
//helper, ini the render model from the server (model.value)
|
||||
function init() {
|
||||
$scope.model.value = removeNulls($scope.model.value);
|
||||
@@ -254,6 +316,30 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
});
|
||||
}
|
||||
|
||||
function addCustomProperties(fieldsets) {
|
||||
// make sure we have loaded moment.js before using it
|
||||
assetsService.loadJs("lib/moment/moment-with-locales.js").then(function() {
|
||||
_.each(fieldsets, function(fieldset) {
|
||||
addCustomPropertiesToFieldset(fieldset);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function addCustomPropertiesToFieldset(fieldset) {
|
||||
// create models for publish configuration (utilizing the built-in datepicker data type)
|
||||
// NOTE: all datetimes must be converted from UTC to local
|
||||
fieldset.releaseDateModel = {
|
||||
alias: _.uniqueId("archetypeReleaseDate_"),
|
||||
view: "datepicker",
|
||||
value: fromUtc(fieldset.releaseDate)
|
||||
};
|
||||
fieldset.expireDateModel = {
|
||||
alias: _.uniqueId("archetypeExpireDate_"),
|
||||
view: "datepicker",
|
||||
value: fromUtc(fieldset.expireDate)
|
||||
};
|
||||
}
|
||||
|
||||
//helper to get the correct fieldset from config
|
||||
$scope.getConfigFieldsetByAlias = function(alias) {
|
||||
return _.find($scope.model.config.fieldsets, function(fieldset){
|
||||
@@ -278,6 +364,12 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
return fieldset.collapse;
|
||||
}
|
||||
|
||||
// added to track loaded fieldsets
|
||||
$scope.loadedFieldsets = [];
|
||||
$scope.isLoaded = function (fieldset) {
|
||||
return $scope.loadedFieldsets.indexOf(fieldset) >= 0;
|
||||
}
|
||||
|
||||
//helper for expanding/collapsing fieldsets
|
||||
$scope.focusFieldset = function(fieldset){
|
||||
fixDisableSelection();
|
||||
@@ -300,12 +392,14 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
if(!fieldset && $scope.model.value.fieldsets.length == 1)
|
||||
{
|
||||
$scope.model.value.fieldsets[0].collapse = false;
|
||||
$scope.loadedFieldsets.push($scope.model.value.fieldsets[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(iniState && fieldset)
|
||||
{
|
||||
fieldset.collapse = !iniState;
|
||||
$scope.loadedFieldsets.push(fieldset);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,6 +455,12 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
|
||||
// reset submit watcher counter on save
|
||||
$scope.activeSubmitWatcher = 0;
|
||||
|
||||
// init loaded fieldsets tracking
|
||||
$scope.loadedFieldsets = _.where($scope.model.value.fieldsets, { collapse: false });
|
||||
|
||||
// create properties needed for the backoffice to work (data that is not serialized to DB)
|
||||
addCustomProperties($scope.model.value.fieldsets);
|
||||
});
|
||||
|
||||
//helper to count what is visible
|
||||
@@ -473,4 +573,28 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc
|
||||
$scope.submitWatcherOnSubmit = function (args) {
|
||||
$scope.$broadcast("archetypeFormSubmitting", args);
|
||||
}
|
||||
|
||||
// we'll use our own "archetypeFormSubmitting" event to save custom properties, as at least some
|
||||
// of the editors store their values back to the model on the core "formSubmitting" event
|
||||
$scope.$on("archetypeFormSubmitting", function (ev, args) {
|
||||
_.each($scope.model.value.fieldsets, function (fieldset) {
|
||||
// extract the publish configuration from the fieldsets (and convert local datetimes to UTC)
|
||||
fieldset.releaseDate = toUtc(fieldset.releaseDateModel.value);
|
||||
fieldset.expireDate = toUtc(fieldset.expireDateModel.value);
|
||||
});
|
||||
});
|
||||
|
||||
function toUtc(date) {
|
||||
if (!date) {
|
||||
return null;
|
||||
}
|
||||
return moment(date, "YYYY-MM-DD HH:mm:ss").utc().toDate();
|
||||
}
|
||||
|
||||
function fromUtc(date) {
|
||||
if (!date) {
|
||||
return null;
|
||||
}
|
||||
return moment(moment.utc(date).toDate()).format("YYYY-MM-DD HH:mm:ss")
|
||||
}
|
||||
});
|
||||
|
||||
@@ -93,9 +93,11 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c
|
||||
}
|
||||
}
|
||||
|
||||
//upload, colorpicker datatype hack
|
||||
if(view.indexOf('fileupload.html') != -1 || view.indexOf('colorpicker.html') != -1) {
|
||||
//hacks for various built-in datatyps including upload, colorpicker and tags
|
||||
if (!scope.propertyForm) {
|
||||
scope.propertyForm = scope.form;
|
||||
}
|
||||
if (!scope.model.validation) {
|
||||
scope.model.validation = {};
|
||||
scope.model.validation.mandatory = 0;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
angular.module("umbraco.directives").directive('archetypeSubmitWatcher', function ($rootScope) {
|
||||
var linker = function (scope, element, attrs, ngModelCtrl) {
|
||||
// call the load callback on scope to obtain the ID of this submit watcher
|
||||
var id = scope.loadCallback();
|
||||
scope.$on("formSubmitting", function (ev, args) {
|
||||
var id = scope.loadCallback ? scope.loadCallback() : 0;
|
||||
|
||||
scope.$on("formSubmitting", function (ev, args) {
|
||||
// on the "formSubmitting" event, call the submit callback on scope to notify the Archetype controller to do it's magic
|
||||
if (id == scope.activeSubmitWatcher) {
|
||||
scope.submitCallback(args);
|
||||
@@ -22,4 +22,4 @@ angular.module("umbraco.directives").directive('archetypeSubmitWatcher', functio
|
||||
activeSubmitWatcher: '='
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
+8
-1
@@ -44,5 +44,12 @@
|
||||
"fieldsetGroups":"Fieldset-grupper",
|
||||
"fieldsetGroupsDescription":"Hvis du har mange fieldsets, skal du måske overveje at gruppere dem i fieldset-vælgeren. Når du først har defineret dine grupper her, vil en gruppe-vælger dukke op i fieldset-editoren, og du kan derefter vælge grupper for alle dine fieldsets.",
|
||||
"fieldsetGroupName":"Navn",
|
||||
"addFieldsetGroup":"Tilføj gruppe"
|
||||
"addFieldsetGroup":"Tilføj gruppe",
|
||||
"enablePublishing": "Aktivér fieldset-publicering?",
|
||||
"enablePublishingDescription": "Tillad automatisk udgivelse og udløb for fieldsets",
|
||||
"publish": "Publicering",
|
||||
"publishHelpText": "Konfigurér udgivelses- og udløbsdato for dette element",
|
||||
"publishReleaseDate": "Udgivelsesdato",
|
||||
"publishExpireDate": "Udløbsdato",
|
||||
"settings": "Indstillinger"
|
||||
}
|
||||
|
||||
+8
-1
@@ -44,5 +44,12 @@
|
||||
"fieldsetGroups":"Fieldset-grupper",
|
||||
"fieldsetGroupsDescription":"Hvis du har mange fieldsets, skal du måske overveje at gruppere dem i fieldset-vælgeren. Når du først har defineret dine grupper her, vil en gruppe-vælger dukke op i fieldset-editoren, og du kan derefter vælge grupper for alle dine fieldsets.",
|
||||
"fieldsetGroupName":"Navn",
|
||||
"addFieldsetGroup":"Tilføj gruppe"
|
||||
"addFieldsetGroup":"Tilføj gruppe",
|
||||
"enablePublishing": "Aktivér fieldset-publicering?",
|
||||
"enablePublishingDescription": "Tillad automatisk udgivelse og udløb for fieldsets",
|
||||
"publish": "Publicering",
|
||||
"publishHelpText": "Konfigurér udgivelses- og udløbsdato for dette element",
|
||||
"publishReleaseDate": "Udgivelsesdato",
|
||||
"publishExpireDate": "Udløbsdato",
|
||||
"settings": "Indstillinger"
|
||||
}
|
||||
|
||||
+65
-10
@@ -40,6 +40,17 @@
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.caret {
|
||||
margin: 8px 1px 0 2px;
|
||||
&.caret-right {
|
||||
border-bottom: 4px solid transparent;
|
||||
border-top: 4px solid transparent;
|
||||
border-left: 4px solid #ddd;
|
||||
content: "";
|
||||
margin-top: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border-bottom: 1px dashed #dddddd;
|
||||
padding: 0;
|
||||
@@ -64,6 +75,19 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.publishOptions {
|
||||
.publishDate {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin-right: 20px;
|
||||
|
||||
label {
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.archetypeFieldsetLabel {
|
||||
@@ -115,16 +139,7 @@
|
||||
}
|
||||
|
||||
.caret {
|
||||
margin: 8px 1px 0 2px;
|
||||
position: absolute;
|
||||
|
||||
&.caret-right {
|
||||
border-bottom: 4px solid transparent;
|
||||
border-top: 4px solid transparent;
|
||||
border-left: 4px solid #ddd;
|
||||
content: "";
|
||||
margin-top: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
@@ -162,8 +177,19 @@
|
||||
&.icon-delete:hover {
|
||||
color: #b94a48;
|
||||
}
|
||||
&.icon-disabled {
|
||||
cursor: default;
|
||||
&:hover {
|
||||
color: #ddd;
|
||||
}
|
||||
}
|
||||
&.icon-active {
|
||||
color: #333;
|
||||
&:hover {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@@ -285,6 +311,34 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.settingsWrapper {
|
||||
&:hover {
|
||||
caret {
|
||||
background-color: #333;
|
||||
}
|
||||
}
|
||||
.settingsHeader {
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
label {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.caret-right {
|
||||
border-left-color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
.settings {
|
||||
padding: 14px;
|
||||
background-color: #f8f8f8;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.archetypeEditor, .archetypeConfig {
|
||||
@@ -340,6 +394,7 @@
|
||||
|
||||
label {
|
||||
width: 120px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.archetypeEditorControls {
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
<div>
|
||||
<label for="archetypeAdvancedOptionsDisabling"><input type="checkbox" id="archetypeAdvancedOptionsDisabling" ng-model="dialogData.model.enableDisabling" /><archetype-localize key="enableDisabling">Enable Fieldset Disabling?</archetype-localize><small><archetype-localize key="enableDisablingDescription">Allows fieldsets to be individually enabled/disabled.</archetype-localize></small></label>
|
||||
</div>
|
||||
<div>
|
||||
<label for="archetypeAdvancedOptionsPublishing"><input type="checkbox" id="archetypeAdvancedOptionsPublishing" ng-model="dialogData.model.enablePublishing" /><archetype-localize key="enablePublishing">Enable Fieldset Publishing?</archetype-localize><small><archetype-localize key="enablePublishingDescription">Allows fieldsets to be automatically published and/or unpublished.</archetype-localize></small></label>
|
||||
</div>
|
||||
|
||||
<h4><archetype-localize key="multipleFieldsets">Multiple fieldsets</archetype-localize></h4>
|
||||
<div>
|
||||
|
||||
@@ -6,9 +6,8 @@
|
||||
<fieldset ng-class="['archetype-fieldset-' + fieldset.alias, (getFieldsetValidity(fieldset) == false ? 'archetypeFieldsetError' : '')]" ng-init="fieldsetConfigModel = getConfigFieldsetByAlias(fieldset.alias)">
|
||||
<div class="archetypeFieldsetLabel" ng-class="{enableCollapsing: model.config.enableCollapsing}">
|
||||
<div ng-click="focusFieldset(fieldset)" class="label-sub module-label">
|
||||
<span class="caret" ng-hide="fieldset.collapse || !model.config.enableCollapsing"></span>
|
||||
<span class="caret caret-right" ng-show="fieldset.collapse && model.config.enableCollapsing"></span>
|
||||
<label ng-class="{dimmed: fieldset.disabled}">
|
||||
<span class="caret" ng-class="{'caret-right': isCollapsed(fieldset)}" ng-show="model.config.enableCollapsing"></span>
|
||||
<label ng-class="{dimmed: isDisabled(fieldset)}">
|
||||
<i class="fieldsetIcon icon ng-class:fieldsetConfigModel.icon"></i>
|
||||
<span ng-bind="getFieldsetTitle(fieldsetConfigModel, $index)"></span>
|
||||
</label>
|
||||
@@ -17,11 +16,12 @@
|
||||
<i class="icon icon-add" ng-show="canAdd()" ng-click="openFieldsetPicker($index, $event)"></i>
|
||||
<i class="icon icon-navigation handle" ng-show="canSort()"></i>
|
||||
<i class="icon icon-documents" ng-click="cloneRow($index)" ng-show="canClone()"></i>
|
||||
<i class="icon icon-power" ng-click="enableDisable(fieldset)" ng-show="canDisable()"></i>
|
||||
<i class="icon icon-power" ng-class="{'icon-active': fieldset.disabled}" ng-click="enableDisable(fieldset)" ng-show="showDisableIcon(fieldset)"></i>
|
||||
<i class="icon icon-time icon-disabled" ng-class="{'icon-active': isDisabledByPublishing(fieldset)}" ng-show="showPublishingIcon(fieldset)"></i>
|
||||
<i class="icon icon-delete" ng-click="removeRow($index)" ng-show="canRemove()"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="archetypeCollapser animate-hide" ng-hide="model.config.enableCollapsing && isCollapsed(fieldset)" ng-if="!isCollapsed(fieldset)">
|
||||
<div class="archetypeCollapser animate-hide" ng-hide="model.config.enableCollapsing && isCollapsed(fieldset)" ng-if="isLoaded(fieldset)">
|
||||
<form class="form-inline">
|
||||
<div ng-class="[('archetype-property-' + property.alias), (getPropertyValidity($parent.$index, property.alias) === false ? 'archetypePropertyError' : '')]" class="archetypeProperty control-group" ng-repeat="property in fieldsetConfigModel.properties">
|
||||
<label ng-hide="model.config.hidePropertyLabels == '1'" class="control-label" for="archetype-property-{{model.alias}}-f{{$parent.$index}}-{{property.alias}}-p{{$index}}" ng-attr-title="{{ isDebuggingEnabled || model.config.developerMode ? property.alias : null }}">
|
||||
@@ -36,6 +36,42 @@
|
||||
<archetype-submit-watcher active-submit-watcher="activeSubmitWatcher" load-callback="submitWatcherOnLoad" submit-callback="submitWatcherOnSubmit"></archetype-submit-watcher>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group archetypeProperty settingsWrapper" ng-show="canConfigure()">
|
||||
<div ng-click="showSettings = !showSettings" class="settingsHeader">
|
||||
<span class="caret" ng-show="showSettings"></span>
|
||||
<span class="caret caret-right" ng-hide="showSettings"></span>
|
||||
<label>
|
||||
<span><archetype-localize key="settings">Settings</archetype-localize></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="settings" ng-show="showSettings">
|
||||
<!-- misc fieldset settings go here -->
|
||||
<div ng-if="fieldset.releaseDateModel" ng-show="canPublish()">
|
||||
<label ng-hide="model.config.hidePropertyLabels == '1'" class="control-label">
|
||||
<span><archetype-localize key="publish">Publishing</archetype-localize></span>
|
||||
<div class="archetypeFieldsetHelpText">
|
||||
<small><archetype-localize key="publishHelpText">Configure automatic publishing and/or unpublishing of this item</archetype-localize></small>
|
||||
</div>
|
||||
</label>
|
||||
<div class="publishOptions" ng-class="[(model.config.hidePropertyLabels == '1' ? 'controls-no-label' : 'controls')]">
|
||||
<div class="publishDate">
|
||||
<label for="{{fieldset.releaseDateModel.alias}}">
|
||||
<archetype-localize key="publishReleaseDate">Publish at</archetype-localize>
|
||||
</label>
|
||||
<umb-editor model="fieldset.releaseDateModel"></umb-editor>
|
||||
</div>
|
||||
<div class="publishDate">
|
||||
<label for="{{fieldset.expireDateModel.alias}}">
|
||||
<archetype-localize key="publishExpireDate">Unpublish at</archetype-localize>
|
||||
</label>
|
||||
<umb-editor model="fieldset.expireDateModel"></umb-editor>
|
||||
</div>
|
||||
<!-- we need a submit watcher here to make sure the publish dates are saved back to their models -->
|
||||
<archetype-submit-watcher active-submit-watcher="activeSubmitWatcher" load-callback="submitWatcherOnLoad" submit-callback="submitWatcherOnSubmit"></archetype-submit-watcher>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Archetype",
|
||||
"version": "1.12.4",
|
||||
"version": "1.13.0",
|
||||
"url": "http://github.com/imulus/archetype/",
|
||||
"author": "Imulus - Kevin Giszewski - Tom Fulton - Lee Kelleher - Matt Brailsford - Kenn Jacobsen - Et. Al.",
|
||||
"authorUrl": "http://imulus.com/",
|
||||
|
||||
Reference in New Issue
Block a user