-
Notifications
You must be signed in to change notification settings - Fork 0
cabservicesag/cabag_extbase
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This extension can be thought of as a central library for extbase extenions and provides the following: ------------------------------------------------------------------------------------------------------- Alternative API-Classes: ------------------------ Tx_CabagExtbase_Persistence_Repository Make your repositories extend from this class to add setQuerySettings() and getQuerySettings() functions. Using setQuerySettings() you can set the query settings on a per repository basis. !! This may slow down your queries because for each new query the caller object has to be retrieved !! Tx_CabagExtbase_MVC_Controller_ActionController Use this ActionController which enables mapping from different get/post vars to each other Typoscript Example: settings { GPMapping { mainSearchWord { from = tx_idcsupport_supportsearchmain|sword to = tx_idcsupport_supportsearch|sword } searchWord { from = tx_idcsupport_supportsearch|sword to = tx_idcsupport_supportsearchmain|sword } } } Tx_CabagExtBase_Persistence_Storage_CabagTypo3DbBackend This Db Backend allows you to sort over multiples fields when using concat. The syntax has to be like "concat(field1,field2,field3) as fieldxy. To use this, modify config.extbase like this: config.tx_extbase { objects { Tx_Extbase_Persistence_Storage_BackendInterface { className = Tx_CabagExtbase_Persistence_Storage_CabagTypo3DbBackend } } } Tx_CabagExtbase_Controller_BaseController This alternative to Tx_Extbase_MVC_Controller_ActionController adds some extra functions to a controller. Currently these are: ->translate($key, $arguments = null) Automatically adds the extension key to the localization request. ->ensureLogin($loginPage, $logout = false) Makes sure that the user is logged in, if $logout is set, the user will be logged out first. ->callActionMethod() Allows an alternate action to be called when an exception is thrown inside the action. The action is defined by the typoscript key plugin.tx_myext.settings.exceptionAction. This action must return any content to be displayed directly. By default this feature is off. - plugin.tx_myext.settings.exceptionAction = 1 -> errorAction() is called - plugin.tx_myext.settings.exceptionAction = error -> errorAction() is called - plugin.tx_myext.settings.exceptionAction = errorAction -> errorAction() is called - plugin.tx_myext.settings.exceptionAction = myFancyErrorHandler -> myFancyErrorHandlerAction() is called Also allows to add the exceptions the flash messages. - plugin.tx_myext.settings.addExceptionToFlashMessage -> adds the Exception message as a flash message. - plugin.tx_myext.settings.addStackTraceToFlashMessage -> adds the stack trace as a flash message (only thought to be used during development). When an exception is caught this way, it will be written into $this->lastException. Extbase domain model and repository: ------------------------------------ - static_country table - Tx_CabagExtbase_Domain_Model_StaticCountry - Tx_CabagExtbase_Domain_Repository_StaticCountryRepository !! You must include the extension TypoScript in order for this to work !! ViewHelpers: ------------ - Tx_CabagExtbase_ViewHelpers_CdataViewHelper Renders a <![CDATA[...]]> around the content, as cdata tags are removed by the fluid engine. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:cdata>This will be a HTML-comment and wrapped with a CDATA tag.</c:cdata> - Tx_CabagExtbase_ViewHelpers_RawViewHelper Renders the content of the 'raw' attribute without letting fluid apply htmlspecialchars. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:raw raw="{someVariableThatContainsHTMLTags}" /> {c:raw(raw: someVariableThatContainsHTMLTags)} - Tx_CabagExtbase_ViewHelpers_IfErrorViewHelper Renders the content if a form error occurred for the given property. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:ifError for="myObject.myProperty"> <div class="errorMessage">This is an error message!</div> </c:ifError> - Tx_CabagExtbase_ViewHelpers_JsonViewHelper Renders the content into a json array. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:json value="{some: 'array'}" /> - Tx_CabagExtbase_ViewHelpers_IfContainsViewHelper Renders content if value (or one value in array) is found in another value (string,array,object) {namespace c=Tx_CabagExtbase_ViewHelpers} <c:ifContains value="objectOrArrayOrString" in="objectOrArrayOrString"> <div class="doSomething">Do something if found.</div> </c:ifContains> - Tx_CabagExtbase_ViewHelpers_StrftimeViewHelper Renders a DateTime object (or constructor) using strftime formatting. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:strftime date="@1234567890" format="%d.%m.%Y" /> - Tx_CabagExtbase_ViewHelpers_ObjectAccessorViewHelper Allows to execute a string path on a given object. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:objectAccessor subject="{someModelObject}" path="field.subfield.someTextField" /> c:objectAccessor(subject: someModelObject, path: 'field.subfield.someTextField') -> this returns the same as {someModelObject.field.subfield.someTextField}, but the path can be retrieved from a dynamic variable - Tx_CabagExtbase_ViewHelpers_Date2CalViewHelper Renders a date2cal javascript date picker. <c:date2Cal id="wishedEndDateTime" prefix="tx_jamesservices" name="tx_jamesservices_pi1[newOrder][singleorders][{service.uid}][wishedEndDateTime]" /> - Tx_CabagExtbase_ViewHelpers_ImplodeViewHelper Implodes a given array. <c:implode value="{0: 'some', 1: 'text'}" glue=", " /> -> some, text <c:implode value="{0: 'b', 1: 'c', 2: 'a'}" glue="|" sort="1" /> -> a|b|c <c:implode value="{3: 'b', 1: 'c', 0: 'a'}" glue=":" sort="numeric" reverse="1" sortByKeys="1" /> -> b:c:a - Tx_CabagExtbase_ViewHelpers_PregReplaceViewHelper Replaces text in the content with a regex. <c:pregReplace from="/<[^>]*>([^<]*)<\/[^>]>/" to="$1">...</c:pregReplace> - Tx_CabagExtbase_ViewHelpers_EscapeViewHelper Allows certain html entities to pass through. To use it instead of the default escape viewhelper from the intercepter (for text nodes for example), add the following to the typoscript: config.tx_extbase { objects { Tx_Fluid_ViewHelpers_EscapeViewHelper { className = Tx_CabagExtbase_ViewHelpers_EscapeViewHelper } } } - Tx_CabagExtbase_ViewHelpers_FormViewHelper Adds several options to the default form viewhelper <c:form method="GET"... dontRenderHmac="1" dontRenderReferrer="1" dontRenderTrusted="1" ...></c:form> <c:form method="POST"... renderArgumentsAsHidden="1"...></c:form> - dontRenderReferrer: If set supresses rendering of the referrer information - dontRenderHmac: If set supresses rendering of the hmac information - dontRenderTrusted: If set supresses rendering of the __trustedProperties information - renderArgumentsAsHidden takes the GET parameters of the action and renders them as hidden fields at the top of the form - Tx_CabagExtbase_ViewHelpers_DebugViewHelper Does and works the same as <f:debug>{bla}</f:debug> but instead also works the same in a backend module. - Tx_CabagExtbase_ViewHelpers_SelectViewHelper Adds several options to the default select viewhelper <c:select property="topic" options="{topics}" optionLabelField="title" emptyOption="{f:translate(key: 'form.topics.empty')}" emptyOptionValue="0" /> - Tx_CabagExtbase_ViewHelpers_TypoLinkViewHelper Renders a link from a standard typolink-field. Works for internal, external, mailto and file links. {namespace c=Tx_CabagExtbase_ViewHelpers} <c:TypoLink link="{linkfield}">...</c:TypoLink> Validators: ----------- - Tx_CabagExtbase_Validator_TwiceValidator Allows to make sure two properties are equal. /** * The E-Mail adress. * * @var string * @validate NotEmpty * @validate EmailAddress * @validate Tx_CabagExtbase_Validator_TwiceValidator(key="email") */ protected $email; /** * The E-Mail adress again. * * @var string * @validate NotEmpty * @validate EmailAddress * @validate Tx_CabagExtbase_Validator_TwiceValidator(key="email") */ protected $emailAgain; - Tx_CabagExtbase_Validator_BoundNotEmptyValidator Allows to make sure at least X of many fields is not empty. /** * Phone 1 * * @var string * @validate Tx_CabagExtbase_Validator_BoundNotEmptyValidator(key="email", total="2", minimum="1") */ protected $phone1; /** * Phone 2 * * @var string * @validate Tx_CabagExtbase_Validator_BoundNotEmptyValidator(key="email", total="2", minimum="1") */ protected $phone2; Utility: -------- - Tx_CabagExtbase_Utility_File Simplifies file upload with extbase. $file = t3lib_div::makeInstance('Tx_CabagExtbase_Utility_File', 'uploads/tx_myext/'); $uploadedFile = $file->moveUploadedFile($_FILES['tx_myext_pi1'], array('theObject', 'theSubObject', 'theFileProperty'), '(xls)|(xlsx)'); - Tx_CabagExtbase_Utility_Mail Allows to generate mails directly with a fluid template. As of version 0.4.9 the controller context is optional and null can be passed instead. $customerMail = t3lib_div::makeInstance( 'Tx_CabagExtbase_Utility_Mail', $this->controllerContext, t3lib_div::getFileAbsFileName($this->settings['customerMailTemplate']), $this->settings ); $customerMail->assign('someVariable', $someVariable); $customerMail->sendPlainTextMail( $user->getEmail(), $this->translate('mail.customer.subject'), $this->settings['fromMail'], $this->translate('mail.fromName') ); # instead like this a HTML-Mail is sent: $customerMail->sendMail( $user->getEmail(), $this->translate('mail.customer.subject'), $this->settings['fromMail'], $this->translate('mail.fromName'), true ); # if the following is called first, the swiftmailer engine is used instead to send the mail # it must be called before the ->sendMail() call obviously $customerMail->setUseSwiftmailer(true); # to add attachements you can use the following # this only works when using html mail and/or swiftmailer engine $customerMail->addAttachment('uploads/tx_cabagextbase/someFile.pdf'); - Tx_CabagExtbase_Utility_Logging Allows to employ complex logging structures with multiple outputs at the same time. The severity corresponds to the HTTP return codes: 100 -> additional information (debug) 200 -> success message 300 -> warnings/important messages 400 -> errors 500 -> serious stuff went wrong! The following the default options and a few example output's. The first constructor parameter is the default tag and the second is the minimum severity for an automatic write. $logging = $this->objectManager->create('Tx_CabagExtbase_Utility_Logging', 'tx_myextension', 400); // alternate non extbase: $logging = t3lib_div::makeInstance('Tx_CabagExtbase_Utility_Logging', 'tx_myextension', 400); $logging->addOutput('myExtFile', 'file', array( 'file' => 'fileadmin/log/%Y%m%d-my.log', // strftime enabled, relative to PATH_site or /absolute/path/bla.log 'severity' => 200 // minimum severity to be written )); $logging->addOutput('myExtMail', 'mail', array( 'emails' => '[email protected],[email protected]', // comma separated list of emails 'subject' => '[STAGING] LOG', // the subject for the mail 'from' => '[email protected]', // the mail to send from 'fromName' => 'Staging Log', // the name to send from (optional) 'plain' => true, // send as plain text mail 'template' => 'EXT:my_ext/Resources/Private/Mail/Logging.html', // template file (optional) 'severity' => 400 // just send errors )); $logging->addOutput('devlog'); $logging->addOutput('flash', array( 'flashMessageContainer' => $this->flashMessageContainer, 'severity' => 200 )); $logging->log('Starting log run'); $logging->log('An error occured!', Tx_CabagExtbase_Utility_Logging::ERROR, array( 'some' => 'additional', 'data' => 'provided' ), 'tx_otherextension'); $logging->write(); // may not do anything at all, if no entries are currently available (e.g. if an autowrite occured) - Tx_CabagExtbase_Utility_AbstractWizicon Allows easy creation of wizicons for plugins. You must create a class that extends it and add it to ext_tables: // add wizicons if (TYPO3_MODE=='BE') { $TBE_MODULES_EXT['xMOD_db_new_content_el']['addElClasses']['tx_MyExt_Utility_Wizicon_Plugins'] = t3lib_extMgm::extPath($_EXTKEY).'Classes/Utility/Wizicon/Plugins.php'; } By default, the class resolves (overwrite the respective functions to change them): - Translations from Resources/Private/Language/locallang_db.xml - The plugin title from the key plugin.myplugin - The plugin description from the key plugin.myplugin.description - The icon from Resources/Public/Icons/Wizicon_myplugin.gif The class must look something like the following. class tx_MyExt_Utility_Wizicon_Plugins extends tx_CabagExtbase_Utility_AbstractWizicon { /** * Must return the extension key that the wizicons will be generated for. */ function getExtensionKey() { return 'my_ext'; } /** * Adds the plugin wizard icon * * @param array Input array with wizard items for plugins * @return array Modified input array, having the additional items. */ public function proc($wizardItems) { $wizardItems['plugins_tx_myext_' . $plugin] = $this->getWizard('myplugin'); return $wizardItems; } } - Tx_CabagExtbase_Utility_FixFormToken Creates backend module links that are sendable via mail or other channels. For that it removes the moduleToken (which contains information about the current session) and creates a session independant token. $fixFormUtility = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Tx_CabagExtbase_Utility_FixFormToken'); $independantLink = $fixFormUtility->fixLink($moduleLink); $relativeIndependantLink = $fixFormUtility->fixLink($moduleLink, false);
About
TYPO3 extbase library extension by cab services ag
Resources
Stars
Watchers
Forks
Packages 0
No packages published