====== VuFind® Directory Layout ====== ===== Top-Level Layout ===== * **config** \\ Application-level configurations * **vufind** \\ Default VuFind® .ini files; normally these are copied into a [[configuration:local_settings_directory|local settings directory]] rather than modified directly. * **data** \\ Storage for application-level data (rarely used) * **downloads** \\ Cache for downloaded dependencies (e.g. Solr) * **harvest** \\ Tools for harvesting metadata * **import** \\ Tools for importing metadata * **languages** \\ Default language files * **local** \\ Default [[configuration:local_settings_directory|local settings directory]] (other paths may be configured) * **module** \\ Core code, divided into modules; for details, see [[#anatomy_of_a_module|anatomy of a module]] below. * **VuFind** \\ Core VuFind® code * **VuFindAdmin** \\ Code for accessing the web-based Admin panel * **VuFindApi** \\ Code for VuFind®'s public API * **VuFindConsole** \\ Console-specific code used for command-line tools * **VuFindDevTools** \\ Code that is only available when VuFind® is set to development mode (via Apache configuration) * **VuFindLocalTemplate** \\ Template for building a local module to override VuFind® defaults; this is copied by install.php and should not be modified directly * **VuFindSearch** \\ VuFind®'s low-level search system * **VuFindTheme** \\ VuFind®'s theming system * **public** \\ Web root -- should only contain index.php; other files are made accessible via Apache configuration * **solr** \\ Solr index and all Solr related items including Solr itself and the data directories for the indexes. This is separated into separate 'vufind' and 'vendor' subdirectories to differentiate Solr-distributed code from VuFind® configuration and data. * **tests** \\ Test suite * **themes** \\ Templates, CSS, Javascript, images and other theme-specific resources; for details, see [[#anatomy_of_a_theme|anatomy of a theme]] below. * **local_mixin_example** \\ Example of a [[development:architecture:user_interface#mix-ins|theme mix-in]] (used by the [[development:code_generators#creating_theme_mix-ins|mix-in generator]]). * **local_theme_example** \\ Example of a local custom theme (used by the [[development:code_generators#creating_themes|theme generator]]). * **root** \\ Base theme containing shared resources needed by all other themes * //assorted other directories// \\ VuFind®'s built-in themes (details vary depending on version) * **util** \\ [[administration:command_line_utilities|Command line utilities]] * **i18n** \\ Specialized Javascript/PHP tools for building language files for i18n * **vendor** \\ Third-party code * build.xml \\ Phing build script (used for development/continuous integration) * import-*.* \\ Import automation scripts * index-alphabetic-browse.* \\ AlphaBrowse index generation script * install.php \\ VuFind® installer * solr.sh \\ Solr startup/shutdown script ===== Anatomy of a Module ===== Every module has the same basic structure. * **config** \\ Configuration directory defining module-specific resources * **sql** \\ Module-specific SQL definitions (not commonly used) * **src** \\ Module-specific PHP code, stored in directories matching PHP namespace structure * **tests** \\ Module-specific tests (not always used) * **xsl** \\ Module-specific XSLT code (not commonly used) * Module.php \\ Class for loading and bootstrapping module ===== Anatomy of a Theme ===== Every theme has the same basic structure. * **css** \\ CSS resources (exposed to public access) * **images** \\ Image resources (exposed to public access) * **js** \\ Javascript resources (exposed to public access) * **less** \\ LESS resources (used to build CSS) * **scss** \\ SCSS resources (auto-translated from LESS; provided for reference but unused by default) * **templates** \\ PHP templates for rendering HTML * theme.config.php \\ Theme configuration file