Apostrophe 1.5: legacy documentation

Still using Apostrophe 1.5? Check out Apostrophe 2 for your future projects.

Yaml Settings

app.yml settings available to designers and developers for Apostrophe 1.5

This is a living document, some descriptions are incomplete and need to be further explanation.

Apostrophe Plugin:

  • app_a_admin_routes_register:
    • Description: initialize()
    • Default Value: true
    • Files:
      • apostrophePluginConfiguration.class.php

  • app_a_media_routes_register:
    • Description: initialize()
    • Default Value: true
    • Files:
      • apostrophePluginConfiguration.class.php

  • app_aAdmin_web_dir:
    • Description: path to web assets for Admin Generator
    • Default Value: /apostrophePlugin
    • Files:
      • _list_field_boolean.php
      • _list_th_tabular.php
    • Notes: If this path gets used often, lets put it higher up the food chain and retreive it once? Right?
  • app_a_search_refinements:
    • Description:
    • Default Value: array()
    • Files:
      • BaseaActions.class.php

  • app_a_search_results_per_page:
    • Description:
    • Default Value: 10
    • Files:
      • BaseaActions.class.php

  • app_aToolkit_cleanLogin_cookie_domain:
    • Description:
    • Default Value: '/'
    • Files:
      • BaseaActions.class.php

  • app_a_i18n_languages:
    • Description:
    • Default Value: null
    • Files:
      • BaseaActions.class.php
      • BaseaLanguageForm.class.php

  • app_a_new_slots_top:
    • Description:
    • Default Value: true
    • Files:
      • BaseaComponents.class.php
      • BaseaSlotActions.class.php

  • app_a_feed_interval:
    • Description: The interval for fetching RSS Feeds with a:feed::fetchCachedFeed, in seconds
    • Default Value: 300
    • Files:
      • BaseaFeedSlotComponents.class.php

  • app_a_all_tags:
    • Description:
    • Default Value: true
    • Files:
      • BaseaMediaActions.class.php
      • BaseaPageSettingsForm.class.php
      • aMedia/templates/_edit.php

  • app_aMedia_jpeg_quality:
    • Description: The quality setting for jpegs compressed by the media library
    • Default Value: 75
    • Files:
      • BaseaMediaBackendActions.class.php
  • app_aMedia_consume_youtube_tags:
    • Description: Sets whether or not tags associated with an incoming YouTube? video are imported into the media library.
    • Default Value: true
    • Files:
      • !aYoutube.class.php

  • app_a_media_apienabled:
    • Description: Enales Media API (?)
    • Default Value: false
    • Files:
      • BaseaMediaBackendActions.class.php

  • app_a_embed_cache_class:
    • Description: Sets the class name for the cache used with Embedded services. I guess this allows us to use alternative caching packages other than sfFileCache.
    • Default Value: 'sfFileCache'
    • Files:
      • aEmbedService.class.php

  • app_a_embed_cache_options:
    • Description: Options for the cache class being used
    • Default Value: array('cache_dir' => aFiles::getWritableDataFolder(array('a_embed_cache'))
    • Files:
      • aEmbedService.class.php

  • app_a_slideshare:
    • Description: Contains the necessary info for pairing Slideshare with Apostrophe's media library.
    • Default Value: null
    • Files:
      • aSlideShare.class.php
    • Notes: There is nothing documenting or hinting at the fact that this contains two parameters, apiKey and sharedSecret. I realize all external API's will require different kinds of identifying data, but there should be some hinting in the code of this.

  • app_a_soundcloud:
    • Description: Contains the necessary info for pairing Soundcloud with Apostrophe's media library
    • Default Value: null
    • Files:
      • aSoundCloud.class.php

  • app_a_viddler:
    • Description: Contains the necessary info for pairing Viddler with Apostrophe's media library
    • Default Value: null
    • Files:
      • aViddler.class.php

  • app_a_vimeo:
    • Description: Contains the necessary info for pairing Viddler with Apostrophe's media library
    • Default Value: null
    • Files:
      • aVimeo.class.php

  • app_a_group_editor_permission:
    • Description: Default name for editor class of permission
    • Default Value: 'editor'
    • Files:
      • BaseaGroupAdminForm.class.php
      • PluginaPage.class.php
      • PluginaPageTable.class.php
      • BaseaTools.class.php

  • app_a_user_admin_password:
    • Description: Allows you to unset the password fields in the User Admin if authentication is not being handled within Apostrophe. Helpful for Shibboleth and LDAP
    • Default Value: true
    • Files:
      • BaseaUserAdminForm.class.php

  • app_a_user_admin_is_active:
    • Description: Allows you to unset the active field in the User Admin if authentication is not being handled within Apostrophe. Helpful for Shibboleth and LDAP
    • Default Value: true
    • Files:
      • BaseaUserAdminForm.class.php

  • app_a_user_admin_permissions:
    • Description: By default in Apostrophe, we do not hand out permissions directly. We rely on groups for this.
    • Default Value: false
    • Files:
      • BaseaUserAdminForm.class.php

  • app_a_edit_candidate_group:
    • Description: You must be a member of the editorgroup to potentially post in a category
    • Default Value: false
    • Files:
      • PluginaCategoryForm.class.php
      • PluginaPageTable.class.php
      • BaseaTools.class.php
    • Notes: I get it, this limits the number of users displayed someplace. But categories are dynamically created so how can this be useful? How can we make this better? Should we?

  • app_a_minify:
    • Description: Boolean for enabling minification for assets
    • Default Value: false
    • Files:
      • aHelper.php

  • app_a_minify_gzip:
    • Description: Boolean for enable gzip with minifcation for assets
    • Default Value: false
    • Files:
      • aHelper.php

  • app_a_stylesheet_cache_http:
    • Description:
    • Default Value: false
    • Files:
      • aHelper.php

  • app_a_view_locked_sufficient_credentials:
    • Description:
    • Default Value: 'view_locked'
    • Files:
      • PluginaMediaItemTable.class.php
      • PluginaPageTable.class.php

  • app_a_slot_variants:
    • Description:
    • Default Value: null
    • Files:
      • PluginaPage.class.php
      • BaseaTools.class.php

  • app_a_defer_search_updates:
    • Description: Defer search updates til later instead of reindexing immediately after making an edit
    • Default Value: false
    • Files:
      • PluginaPage.class.php

  • app_a_search_summary_wordcount:
    • Description: Word limit for search summaries
    • Default Value: 50
    • Files:
      • PluginaPage.class.php

'* app_a_' . $privilege . '_candidate_group':

  • Description:
  • Default Value: false
  • Files:
    • PluginaPage.class.php
    • PluginaPageTable.class.php

'* app_a_' . $privilege . '_sufficient_group':

  • Description:
  • Default Value: false
  • Files:
    • PluginaPage.class.php
    • PluginaPageTable.class.php

'* app_a_'.$privilegeForGroup.'_candidate_group':

  • Description:
  • Default Value: false
  • Files:
    • PluginaPageTable.class.php

'* app_a_'.$privilege.'_login_required':

  • Description:
  • Default Value: ($privilege 'view' ? false : true)
  • Files:
    • PluginaPageTable.class.php

  • app_a_edit_sufficient_credentials:
    • Description:
    • Default Value: false
    • Files:
      • PluginaPageTable.class.php
      • BaseaTools.class.php
    • Notes: This one seems to be hard coded in getEditorCandidates, when all of the rest are $dynamic. There seems to be a bug around line 660 in PluginaPageTable.class.php;

  • app_a_edit_sufficient_group:
    • Description:
    • Default Value:
    • Files:
      • PluginaPageTable.class.php
      • BaseaTools.class.php

  • app_a_many_pages:
    • Description:
    • Default Value: false
    • Files:
      • aNavigation.class.php
    • Notes: This seems to have something to do with functionality testing but there's nothing going on in the simulateNewRequest()

  • app_aToolkit_indexes:
    • Description: An array of indexes for the Optimize search index task
    • Default Value: array()
    • Files:
      • apostropheOptimizeSearchIndexTask.class.php
      • tooklitRebuildIndexTask.class.php

  • app_a_pretty_english_dates:
    • Description:
    • Default Value: false
    • Files:
      • aDate.class.php

  • app_a_feed_cache_class:
    • Description: Sets the class name for the cache. I guess this allows us to use alternative caching packages other than sfFileCache.
    • Default Value: 'sfFileCache'
    • Files:
      • aFeed.class.php

  • app_a_feed_cache_options:
    • Description: Options for the cache class being used
    • Default Value: array('cache_dir' => aFiles::getWritableDataFolder(array('a_feed_cache'))
    • Files:
      • aFeed.class.php

  • app_aToolkit_writable_dir:
    • Description: getWriteableDataFolder()
    • Default Value: sfConfig::get('sf_data_dir') . DIRECTORY_SEPARATOR . 'a_writable'
    • Files:
      • aFiles.class.php

  • app_aToolkit_allowed_tags:
    • Description: aHtml::simplify()
    • Default Value: self::$defaultAllowedTags
    • Files:
      • aHtml.class.php

  • app_aToolkit_allowed_attributes:
    • Description: aHtml::simplify()
    • Default Value: self::$defaultAllowedAttributes
    • Files:
      • aHtml.class.php

  • app_aToolkit_allowed_styles:
    • Description: aHtml::simplify()
    • Default Value: self::$defaultAllowedStyles
    • Files:
      • aHtml.class.php

  • app_aToolkit_html_strict_br:
    • Description: aHtml::simplify()
    • Default Value: self::$defaultHtmlStrictBr
    • Files:
      • aHtml.class.php

  • app_aimageconverter_netpbm:
    • Description: Enables Netpbm to be used instead of GD
    • Default Value: true
    • Files:
      • aImageConverter.class.php

  • app_aimageconverter_path:
    • Description:
    • Default Value: ""
    • Files:
      • aImageConverter.class.php

  • app_a_pdf_preview:
    • Description: Deprecated, Ghost Script is not reliable enough
    • Default Value: false
    • Files:
      • aImageConverter.class.php

  • app_a_hint_cache_class:
    • Description: Sets the class name for the cache. I guess this allows us to use alternative caching packages other than sfFileCache.
    • Default Value: 'sfFileCache'
    • Files:
      • aImageConverter.class.php

  • app_a_hint_cache_options:
    • Description: Options for the cache class being used
    • Default Value: array('cache_dir' => aFiles::getWritableDataFolder(array('a_hint_cache'))
    • Files:
      • aImageConverter.class.php

  • app_aMedia_client_apikey:
    • Description:
    • Default Value: null
    • Files:
      • aMediaAPI.php

  • app_aMedia_client_site:
    • Description:
    • Default Value: sfContext::getInstance()->getRequest()->getUriPrefix()
    • Files:
      • aMediaAPI.php

  • app_aMedia_client_send_user:
    • Description:
    • Default Value: true
    • Files:
      • aMediaAPI.php

  • app_a_search_hard_limit:
    • Description: Never look at more than 1000 search results
    • Default Value: false
    • Files:
      • aZendSearch.class.php

'* app_aMedia_'.$name:

  • Description: getOption($name) retrieves some kind of media options that can be overridden in app.yml
  • Default Value: aMediaTools::$options[$name]
  • Files:
    • BaseaMediaTools.class.php

  • app_a_slot_option_groups:
    • Description: getSlotOptionsGroup()
    • Default Value: array()
    • Files:
      • BaseaTools.class.php
    • Notes: What is this? heh

  • app_a_slot_types:
    • Description: getSlotTypesInfo($options)
    • Default Value: array()
    • Files:
      • BaseaTools.class.php

  • app_a_get_templates_method:
    • Description: getTemplates()
    • Default Value: null
    • Files:
      • BaseaTools.class.php

  • app_a_templates:
    • Description: getTemplates()
    • Default Value: array('a' => array('default' => 'Default Page','home' => 'Home Page')))
    • Files:
      • BaseaTools.class.php

  • app_a_get_engines_method:
    • Description: getEngines()
    • Default Value: null
    • Files:
      • BaseaTools.class.php

  • app_a_engines:
    • Description: getEngiens()
    • Default Value: array( => 'Template-Based')
    • Files:
      • BaseaTools.class.php

'* app_a_'.$option:

  • Description: getOptionI18n($option, $default = false, $culture = false)
  • Default Value: array()
  • Files:
    • BaseaTools.class.php

  • app_a_extra_admin_buttons:
    • Description: Adds extra buttons to the top-of-page admin bar, exclusively for admins (those with the admin credential). No one else will see these buttons. Useful when your project has some custom backend modules and a simple permissions structure. If you need to be fancy about who sees what, you should be catching a.getGlobalButtons events instead, see the blog plugin's configuration class for an example
    • Default Value: array(users => ..., categories => ..., tags => ..., reorganize => ...)
    • Files:
      • BaseaTools.class.php
  • app_a_global_button_labels:
    • New in 1.5.2, this option provides an easy way to relabel (almost) any button in the top bar, regardless of how it got there (via a.getGlobalButtons events or via app_a_extra_admin_buttons). Just specify an associative array of button names and labels. If your label is another associative array, then the keys should be culture codes and the values should be labels for each language. You don't have to do this, a plain value will work if you are not translating your top bar. The value is interpreted as HTML and may contain entities.
    • Default Value: none
    • Files:
      • BaseaTools.class.php

  • app_a_global_button_order:
    • Description: Pass an array of button names to re-order them in getGlobalButtons()
    • Default Value: false
    • Files:
      • BaseaTools.class.php

  • app_a_use_bundled_layout:
    • Description: Use the layout.php file bundled wtih the Apostrophe plugin
    • Default Value: true
    • Files:
      • BaseaTools.class.php

  • app_a_edit_login_required:
    • Description: isPotentialEditor()
    • Default Value: true
    • Files:
      • BaseaTools.class.php

  • app_a_allowed_slot_variants:
    • Description: getVariantsForSlotType()
    • Default Value: array()
    • Files:
      • BaseaTools.class.php

  • app_a_use_bundled_stylesheets:
    • Description: Use apostrophe's included stylesheets
    • Default Value: true / array()
    • Files:
      • BaseaTools.class.php

  • app_a_use_bundled_javascripts:
    • Description: Use apostrophe's included javascript
    • Default Value: true / array()
    • Files:
      • BaseaTools.class.php

  • app_aPersistentFileUpload_preview_url:
    • Description: Path to the preview image that is uploaded while the media item is being annotated
    • Default Value: '/uploads/uploaded_image_preview'
    • Files:
      • aWidgetFormInputFilePersistent.class.php

  • app_a_history_button_style:
    • Description: Class name for this button can be changed to style it differently at the project level.
    • Default Value: 'no-label big'
    • Files:
      • _area.php

  • app_a_addslot_button_style:
    • Description: Class name for this button can be changed to style it differently at the project level.
    • Default Value: 'big'
    • Files:
      • _area.php

  • app_a_delete_button_style:
    • Description: Class name for this button can be changed to style it differently at the project level.
    • Default Value: 'no-label'
    • Files:
      • _area.php

  • app_a_do_not_edit:
    • Description: Do Not Edit bar is convenient when deploying from staging to production for letting the client know to no longer do production work in the staging environment
    • Default Value: false
    • Files:
      • _doNotEdit.php

  • app_a_credit:
    • Description: Promote Apostrophe on your site
    • Default Value: true
    • Files:
      • _footer.php

  • app_a_servergroveCredit:
    • Description: Promote Server Grove hosting. We use this because Server Grove hosts our Apostrophe Demo site.
    • Default Value: false
    • Files:
      • _footer.php

  • app_a_max_page_levels:
    • Description: Set a hard limit on the maximum number of page levels. Defaults to off.
    • Default Value: 0
    • Files:
      • _globalTools.php

  • app_a_max_children_per_page:
    • Description: Set a hard limit on the number of children pages that can be created on any level. Default is off
    • Default Value: 0
    • Files:
      • _globalTools.php

  • app_a_persistent_global_toolbar:
    • Description: Show the Apostrophe global toolbar even when logged-out
    • Default Value: true
    • Files:
      • _globalTools.php

  • app_a_i18n_switch:
    • Description: Display the I18n language switcher on your site
    • Default Value: null
    • Files:
      • _language.php

  • app_a_i18n_languages:
    • Description: Provides an array of available languages to aLanguageForm() class
    • Default Value: null
    • Files:
      • _language.php
    • Notes: This should probably default to an array since the thing it is in is expecting an array()

  • app_a_actions_logout:
    • Description: Set the symfony action for the log out link
    • Default Value: 'sfGuardAuth/signout'
    • Files:
      • _login.php
    • Notes: it does not seem like we have a commensurate app.yml setting for the login action. Why?

  • app_a_login_link:
    • Description: You can easily turn off the login link
    • Default Value: true
    • Files:
      • _login.php
    • Notes: Why do we have this? We would either show the whole global toolbar via * app_a_persistent_global_toolbar or not.

  • app_a_facebook_page_id:
    • Description: Set a facebook page_id to enable tracking with Facebook's Insight
    • Default Value: null
    • Files:
      • layout.php

  • app_a_googleAnalytics:
    • Description: Enable Google Analytics by providing your account and domainName
    • Default Value: null
    • Files:
      • layout.php

  • app_a_pager_nb_links:
    • Description: Number of pages to display in the pager before the smart scroll behavior kicks in
    • Default Value: 5
    • Files:
      • _pager.php

Apostrophe Blog Plugin:

  • app_aAdmin_web_dir:
    • Description: Admin Generator web dir for finding assets.
    • Default Value: /apostrophePlugin
    • Files:
      • _list_field_boolean.php

  • app_a_search_refinements:
    • Description: Search refinements in searchBody() and filterForEngine()
    • Default Value: array();
    • Files:
      • aBlogToolkitClass.php

  • app_aBlog_autocomplete_max:
    • Description:
    • Default Value: 10
    • Files:
      • aBlogToolkitClass.php

  • app_a_search_results_per_page:
    • Description: Sets the number of search results per page in searchBody()
    • Default Value: 10
    • Files:
      • aBlogToolkitClass.php

  • app_aBlog_use_bundled_assets:
    • Description: Boolean for including blog assets in preExecute()
    • Default Value: true
    • Files:
      • BaseaBlogActions.class.php
      • BaseaBlogComponents.class.php
      • BaseaBlogSingleSlotActions.class.php
      • BaseaBlogSingleSlotComponents.class.php
      • BaseaEventComponents.class.php
      • BaseaBlogAdminActions.php
      • BaseaEventAdminActions.php
    • Notes: This will never ever be false, and including the JS here is contrary to our policy for including plugin assets in view.yml. Consider removing this and updating our documentation or always including the .JS

  • app_aBlog_max_per_page:
    • Description: Max number of posts per page displayed in executeIndex()
    • Default Value: 20
    • Files:
      • BaseaBlogActions.class.php

  • app_aBlog_feed_title:
    • Description: Title of the RSS feed for the blog in getFeed()
    • Default Value: $this->page->getTitle()
    • Files:
      • BaseaBlogActions.class.php

  • app_aBlog_feed_author_email:
    • Description: Default author email for getFeed()
    • Default Value: null
    • Files:
      • BaseaBlogActions.class.php

  • app_aBlog_feed_author_name:
    • Description: Default author name for getFeed()
    • Default Value: null
    • Files:
      • BaseaBlogActions.class.php

  • app_a_all_tags:
    • Description: Boolean for whether or not to return all tags in executeEditView();
    • Default Value: true
    • Files:
      • BaseaBlogSlotComponents.class.php
      • aBlogSlot/.../_editView.php
      • aEventSlot/.../_editView.php
    • Notes: Checking for the all_tags flag in the component class should mean that you do not have to check for it in editView.
  • app_aEvent_feed_title:
    • Description: Title of the RSS feed for the event in getFeed() and getIcalFeed();
    • Default Value: $this->page->getTitle();
    • Files:
      • BaseaEventActions.class.php

  • app_aEvent_feed_author_email:
    • Description: Default author email for getFeed();
    • Default Value: null
    • Files:
      • BaseaEventActions.class.php

  • app_aEvent_feed_author_name:
    • Description: Default author name for getFeed();
    • Default Value: null
    • Files:
      • BaseaEventActions.class.php

  • app_aBlog_comments:
    • Description: Boolean for whether or not to unset 'allow_comments' in setup()
    • Default Value: false
    • Files:
      • PluginaBlogItemForm.class.php

  • app_a_edit_candidate_group:
    • Description:
    • Default Value: false
    • Files:
      • PluginaBlogItemForm.class.php

  • app_a_edit_sufficient_group:
    • Description:
    • Default Value: false
    • Files:
      • PluginaBlogItemForm.class.php

  • app_aBlog_add_this:
    • Description: Boolean for whether or not to display AddThis! with blog & events
    • Default Value: null
    • Files:
      • _addThis.php

  • app_a_pretty_english_dates:
    • Description: Boolean for whether or not to display pretty formatted dates in the blog / events browser
    • Default Value: null
    • Files:
      • _datePrevAndNext.php

  • app_aBlog_disqus_enabled:
    • Description: Boolean for enabling / disabling Disqus
    • Default Value: true
    • Files:
      • _disqus.php
      • _disqus_countcode.php
      • _meta.php
      • showSuccess.php
      • _list_actions.php
    • Notes: It seems like the check for Disqus being enabled could be done once at a higher level instead of four times. It also seems like you could use the presence of the shortname as the boolean for checking whether or not disqus is enabled. Wnat to disable it? Comment out the shortname.
  • app_aBlog_disqus_shortname:
    • Description: Disqus account name
    • Default Value: null
    • Files:
      • _disqus.php
      • _disqus_countcode.php
      • _list_actions.php

Apostrophe Feedback Plugin:

  • app_aFeedback_email_auto:
    • Description: Default email address for executeFeedback();
    • Default Value: null
    • Files:
      • BaseaFeedbackActions.class.php
      • _feedback.php

  • app_aFeedback_email_manual:
    • Description: Another default email address that falls back to auto.
    • Default Value: null
    • Files:
      • _feedback.php
    • Notes: what's the thinking behind this? I'm not sure.