Your IP : 216.73.217.13


Current Path : /var/www/surf/TYPO3/vendor/typo3/cms-form/Resources/Public/JavaScript/backend/
Upload File :
Current File : /var/www/surf/TYPO3/vendor/typo3/cms-form/Resources/Public/JavaScript/backend/form-editor.js

/*
 * This file is part of the TYPO3 CMS project.
 *
 * It is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License, either version 2
 * of the License, or any later version.
 *
 * For the full copyright and license information, please read the
 * LICENSE.txt file that was distributed with this source code.
 *
 * The TYPO3 project - inspiring people to share!
 */
import $ from"jquery";import Notification from"@typo3/backend/notification.js";import*as Core from"@typo3/form/backend/form-editor/core.js";const assert=Core.assert;export class FormEditor{constructor(e,t,i){this.isRunning=!1,this.unsavedContent=!1,this.configuration=e||{},this.mediator=t,this.viewModel=i}getPublisherSubscriber(){return Core.getPublisherSubscriber()}undoApplicationState(){this.getApplicationStateStack().incrementCurrentStackPointer()}redoApplicationState(){this.getApplicationStateStack().decrementCurrentStackPointer()}getMaximalApplicationStates(){return this.getApplicationStateStack().getMaximalStackSize()}getCurrentApplicationStates(){return this.getApplicationStateStack().getCurrentStackSize()}getCurrentApplicationStatePosition(){return this.getApplicationStateStack().getCurrentStackPointer()}setFormDefinition(e){assert("object"===$.type(e),'Invalid parameter "formDefinition"',1519855175),this.getApplicationStateStack().setCurrentState("formDefinition",this.getFactory().createFormElement(e,void 0,void 0,!0))}getRunningAjaxRequest(e){return assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "type"',1475378543),Core.getRunningAjaxRequest(e)}getUtility(){return Core.getUtility()}assert(e,t,i){this.getUtility().assert(e,t,i)}buildPropertyPath(e,t,i,r,n){this.getUtility().isUndefinedOrNull(r)&&(r=this.getCurrentlySelectedFormElement());const o=this.getRepository().findFormElement(r);return this.getUtility().buildPropertyPath(e,t,i,o,n)}addPropertyValidationValidator(e,t){this.getPropertyValidationService().addValidator(e,t)}validateCurrentlySelectedFormElementProperty(e){return this.validateFormElementProperty(this.getCurrentlySelectedFormElement(),e)}validateFormElementProperty(e,t){const i=this.getRepository().findFormElement(e);return this.getPropertyValidationService().validateFormElementProperty(i,t)}validateFormElement(e){const t=this.getRepository().findFormElement(e);return this.getPropertyValidationService().validateFormElement(t)}validationResultsHasErrors(e){return this.getPropertyValidationService().validationResultsHasErrors(e)}validateFormElementRecursive(e,t){const i=this.getRepository().findFormElement(e);return this.getPropertyValidationService().validateFormElementRecursive(i,t)}setUnsavedContent(e){assert("boolean"===$.type(e),'Invalid parameter "unsavedContent"',1475378544),this.unsavedContent=e}getUnsavedContent(){return this.unsavedContent}getRootFormElement(){return this.getRepository().getRootFormElement()}getCurrentlySelectedFormElement(){return this.getRepository().findFormElementByIdentifierPath(this.getApplicationStateStack().getCurrentState("currentlySelectedFormElementIdentifierPath"))}setCurrentlySelectedFormElement(e,t){t=!!t;const i=this.getRepository().findFormElement(e);this.getApplicationStateStack().setCurrentState("currentlySelectedFormElementIdentifierPath",i.get("__identifierPath")),t||this.refreshCurrentlySelectedPageIndex(),this.getPublisherSubscriber().publish("core/currentlySelectedFormElementChanged",[i])}getFormElementByIdentifierPath(e){return assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "identifierPath"',1475378545),this.getRepository().findFormElementByIdentifierPath(e)}isFormElementIdentifierUsed(e){return this.getRepository().isFormElementIdentifierUsed(e)}createAndAddFormElement(e,t,i){const r=this.addFormElement(this.createFormElement(e,i),t,i);return r.set("renderables",r.get("renderables")),r}addFormElement(e,t,i){this.saveApplicationState(),this.getUtility().isUndefinedOrNull(t)&&(t=this.getCurrentlySelectedFormElement());const r=this.getRepository().findFormElement(t);return assert("object"===$.type(e),'Invalid parameter "formElement"',1475434337),this.getRepository().addFormElement(e,r,!0,i)}createFormElement(e,t){assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "formElementType"',1475434336);const i=this.getRepository().getNextFreeFormElementIdentifier(e),r=this.getFormElementDefinitionByType(e,void 0);return this.getFactory().createFormElement({type:e,identifier:i,label:r.label||e},void 0,void 0,void 0,t)}removeFormElement(e,t){this.saveApplicationState();const i=this.getRepository().findFormElement(e),r=i.get("__parentRenderable");return this.getRepository().removeFormElement(i,!0,t),r}moveFormElement(e,t,i,r){this.saveApplicationState();let n=this.getRepository().findFormElement(e);const o=this.getRepository().findFormElement(i);return assert("after"===t||"before"===t||"inside"===t,'Invalid position "'+t+'"',1475378551),n=this.getRepository().moveFormElement(n,t,o,!0),(r=!!r)||n.get("__parentRenderable").set("renderables",n.get("__parentRenderable").get("renderables")),n}getPropertyCollectionElementConfiguration(e,t,i){let r,n;this.getUtility().isUndefinedOrNull(i)&&(i=this.getCurrentlySelectedFormElement());const o=this.getRepository().findFormElement(i);assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "collectionElementIdentifier"',1475378555),assert(this.getUtility().isNonEmptyString(t),'Invalid parameter "collectionName"',1475378556);const a=this.getFormElementDefinitionByType(o.get("type"),void 0);return this.getUtility().isUndefinedOrNull(a.propertyCollections)?{}:(r=a.propertyCollections[t],assert(!this.getUtility().isUndefinedOrNull(r),'Invalid collection name "'+t+'"',1475446108),n=this.getRepository().findCollectionElementByIdentifierPath(e,r),$.extend(!0,{},n))}getIndexFromPropertyCollectionElement(e,t,i){this.getUtility().isUndefinedOrNull(i)&&(i=this.getCurrentlySelectedFormElement());const r=this.getRepository().findFormElement(i);assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "collectionElementIdentifier"',1475378557),assert(this.getUtility().isNonEmptyString(t),'Invalid parameter "collectionName"',1475378558);return this.getRepository().getIndexFromPropertyCollectionElementByIdentifier(e,t,r)}createAndAddPropertyCollectionElement(e,t,i,r,n){return this.addPropertyCollectionElement(this.createPropertyCollectionElement(e,t,r),t,i,n)}addPropertyCollectionElement(e,t,i,r){let n;this.saveApplicationState(),this.getUtility().isUndefinedOrNull(i)&&(i=this.getCurrentlySelectedFormElement());const o=this.getRepository().findFormElement(i);return assert("object"===$.type(e),'Invalid parameter "collectionElement"',1475443301),assert(this.getUtility().isNonEmptyString(t),'Invalid parameter "collectionName"',1475443300),this.getUtility().isUndefinedOrNull(r)&&(n=o.get(t),"array"===$.type(n)&&n.length>0&&(r=n[n.length-1].identifier)),this.getRepository().addPropertyCollectionElement(e,t,o,r,!1)}createPropertyCollectionElement(e,t,i){return assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "collectionElementIdentifier"',1475378559),assert(this.getUtility().isNonEmptyString(t),'Invalid parameter "collectionName"',1475378560),"object"!==$.type(i)&&(i={}),this.getFactory().createPropertyCollectionElement(e,i,t)}removePropertyCollectionElement(e,t,i,r){this.saveApplicationState(),this.getUtility().isUndefinedOrNull(i)&&(i=this.getCurrentlySelectedFormElement());const n=this.getRepository().findFormElement(i);assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "collectionElementIdentifier"',1475378561),assert(this.getUtility().isNonEmptyString(t),'Invalid parameter "collectionName"',1475378562),this.getRepository().removePropertyCollectionElementByIdentifier(n,e,t,!0),(r=!!r)||this.getPublisherSubscriber().publish("core/formElement/somePropertyChanged",["__fakeProperty"])}movePropertyCollectionElement(e,t,i,r,n,o){this.saveApplicationState(),n=this.getRepository().findFormElement(n),assert("string"===$.type(e),'Invalid parameter "collectionElementToMove"',1477404352),assert("string"===$.type(i),'Invalid parameter "referenceCollectionElement"',1477404353),assert("after"===t||"before"===t,'Invalid position "'+t+'"',1477404354),assert(this.getUtility().isNonEmptyString(r),'Invalid parameter "collectionName"',1477404355),this.getRepository().movePropertyCollectionElement(e,t,i,r,n,o)}getFormElementDefinitionByType(e,t){assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "elementType"',1475378563);const i=this.getRepository().getFormEditorDefinition("formElements",e);if(void 0!==t){const e=i[t];return null!==e&&"object"==typeof e?$.extend(!0,{},e):e}return null!==i&&"object"==typeof i?$.extend(!0,{},i):i}getFormElementDefinition(e,t){return e=this.getRepository().findFormElement(e),this.getFormElementDefinitionByType(e.get("type"),t)}getFormEditorDefinition(e,t){return this.getRepository().getFormEditorDefinition(e,t)}getFormElementPropertyValidatorDefinition(e){assert(this.getUtility().isNonEmptyString(e),'Invalid parameter "validatorIdentifier"',1475672362);const t=this.getRepository().getFormEditorDefinition("formElementPropertyValidators",e);return $.extend(!0,{},t)}getCurrentlySelectedPageIndex(){return this.getApplicationStateStack().getCurrentState("currentlySelectedPageIndex")}refreshCurrentlySelectedPageIndex(){this.getApplicationStateStack().setCurrentState("currentlySelectedPageIndex",this.getPageIndexFromFormElement(this.getCurrentlySelectedFormElement()))}getCurrentlySelectedPage(){const e=this.getRepository().getRootFormElement().get("renderables")[this.getCurrentlySelectedPageIndex()];return assert("object"===$.type(e),"No page found",1477786068),e}getLastTopLevelElementOnCurrentPage(){const e=this.getCurrentlySelectedPage().get("renderables");if(!this.getUtility().isUndefinedOrNull(e))return e[e.length-1]}getLastFormElementWithinParentFormElement(e){return(e=this.getRepository().findFormElement(e)).get("__identifierPath")===this.getRootFormElement().get("__identifierPath")?e:e.get("__parentRenderable").get("renderables")[e.get("__parentRenderable").get("renderables").length-1]}getPageIndexFromFormElement(e){return e=this.getRepository().findFormElement(e),this.getRepository().getIndexForEnclosingCompositeFormElementWhichIsOnTopLevelForFormElement(e)}renderCurrentFormPage(){this.renderFormPage(this.getCurrentlySelectedPageIndex())}renderFormPage(e){assert("number"===$.type(e),'Invalid parameter "pageIndex"',1475446442),this.getDataBackend().renderFormDefinitionPage(e)}findEnclosingCompositeFormElementWhichIsNotOnTopLevel(e){return this.getRepository().findEnclosingCompositeFormElementWhichIsNotOnTopLevel(this.getRepository().findFormElement(e))}findEnclosingGridRowFormElement(e){return this.getRepository().findEnclosingGridRowFormElement(this.getRepository().findFormElement(e))}getNonCompositeNonToplevelFormElements(){return this.getRepository().getNonCompositeNonToplevelFormElements()}isRootFormElementSelected(){return this.getCurrentlySelectedFormElement().get("__identifierPath")===this.getRootFormElement().get("__identifierPath")}getViewModel(){return this.viewModel}saveFormDefinition(){this.getDataBackend().saveFormDefinition()}run(){if(this.isRunning)throw"You can not run the app twice (1473200696)";try{this.bootstrap(),this.isRunning=!0}catch(e){Notification.error(TYPO3.lang["formEditor.error.headline"],TYPO3.lang["formEditor.error.message"]+"\r\n\r\n"+TYPO3.lang["formEditor.error.technicalReason"]+"\r\n"+e.message)}return this}saveApplicationState(){this.getApplicationStateStack().addAndReset({formDefinition:this.getApplicationStateStack().getCurrentState("formDefinition").clone(),currentlySelectedPageIndex:this.getApplicationStateStack().getCurrentState("currentlySelectedPageIndex"),currentlySelectedFormElementIdentifierPath:this.getApplicationStateStack().getCurrentState("currentlySelectedFormElementIdentifierPath")})}getDataBackend(){return Core.getDataBackend()}getFactory(){return Core.getFactory()}getRepository(){return Core.getRepository()}getPropertyValidationService(){return Core.getPropertyValidationService()}getApplicationStateStack(){return Core.getApplicationStateStack()}ajaxSetup(){$.ajaxSetup({beforeSend:()=>{this.getPublisherSubscriber().publish("ajax/beforeSend")},complete:()=>{this.getPublisherSubscriber().publish("ajax/complete")}})}dataBackendSetup(e,t,i){assert("object"===$.type(e),'Invalid parameter "endpoints"',1475379748),assert(this.getUtility().isNonEmptyString(t),'Invalid parameter "prototypeName"',1475927876),assert(this.getUtility().isNonEmptyString(i),'Invalid parameter "formPersistenceIdentifier"',1475379749),Core.getDataBackend().setEndpoints(e),Core.getDataBackend().setPrototypeName(t),Core.getDataBackend().setPersistenceIdentifier(i)}repositorySetup(e){assert("object"===$.type(e),'Invalid parameter "formEditorDefinitions"',1475379750),this.getRepository().setFormEditorDefinitions(e)}viewSetup(e){assert("function"===$.type(this.viewModel.bootstrap),'The view model does not implement the method "bootstrap"',1475492374),this.getUtility().isUndefinedOrNull(e)&&(e=[]),this.viewModel.bootstrap(formEditorInstance,e)}mediatorSetup(){assert("function"===$.type(this.mediator.bootstrap),'The mediator does not implement the method "bootstrap"',1475492032),this.mediator.bootstrap(formEditorInstance,this.viewModel)}applicationStateStackSetup(e,t){assert("object"===$.type(e),'Invalid parameter "rootFormElement"',1475379751),"number"!==$.type(t)&&(t=10),this.getApplicationStateStack().setMaximalStackSize(t),this.getApplicationStateStack().addAndReset({currentlySelectedPageIndex:0,currentlySelectedFormElementIdentifierPath:e.identifier},!0),this.getApplicationStateStack().setCurrentState("formDefinition",this.getFactory().createFormElement(e,void 0,void 0,!0))}bootstrap(){this.mediatorSetup(),this.ajaxSetup(),this.dataBackendSetup(this.configuration.endpoints,this.configuration.prototypeName,this.configuration.formPersistenceIdentifier),this.repositorySetup(this.configuration.formEditorDefinitions),this.applicationStateStackSetup(this.configuration.formDefinition,this.configuration.maximumUndoSteps),this.setCurrentlySelectedFormElement(this.getRepository().getRootFormElement()),this.viewSetup(this.configuration.additionalViewModelModules)}}let formEditorInstance=null;export function getInstance(e,t,i){return null===formEditorInstance&&(formEditorInstance=new FormEditor(e,t,i)),formEditorInstance}