first commit

This commit is contained in:
buttle 2021-04-25 09:49:47 +02:00
commit 019537dcc7
46 changed files with 9472 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
.DS_Store
bower_components
node_modules
npm-debug.log

5
CHANGELOG.md Normal file
View File

@ -0,0 +1,5 @@
# Changelog
## Version 1.0 (November 19, 2015)
Initial release.

81
README.md Normal file
View File

@ -0,0 +1,81 @@
# Foundation S
This is an Omeka S theme based on ZURB Foundation Sites. It currently comes with a default stylesheet for prototyping as well as 3 other style options.
## Installation
For basic out-of-the-box use of the theme, follow the [Omeka S User Manual instructions for installing themes](https://omeka.org/s/docs/user-manual/sites/site_theme/#installing-themes).
For more advanced use, such as customizing the theme with Sass, you'll need to install the tools with [NodeJS](https://nodejs.org/en/) (0.12 or greater). Navigate to your theme directory and run `npm install`.
## Theme Configuration
* **Stylesheet**: The theme provides 4 style options.
* **Default** uses ZURB Foundation's default styles for prototyping, which are all viewable in their documentation under the [Kitchen Sink](https://get.foundation/sites/docs/kitchen-sink.html).
* **Revolution** aims to capture the feel of old documents and juxtaposes it with a bright red accent. It includes a textured paper background image.
* **Sea Foam** offers a clean, friendly look with a teal palette.
* **Inkwell** features a high contrast serif family for its typography, as well as sunny yellow accents.
* **Navigation layouts**: Global navigation can display as a **horizontal top bar with optional dropdown menus** or a **left vertical column**.
* **Show Top Navigation Child Pages**: Toggle display of child pages within the main navigation.
* **Top Navigation Depth**: If the main navigation is set to display child pages, this setting controls how many navigation levels to display. Setting this to '0' shows all levels.
* **Logo**: Upload an image asset to use as a logo in place of a text site title.
* **Footer Content**: Control what appears in the footer. This field takes HTML markup.
* **Layout for Browse Pages**: Select how to display items within their "browse" views.
* **Grid**: Items are organized into rows and columns. This is recommended for items that prominently feature images.
* **List**: Items are stacked into a single column.
* **Toggle (default: grid)**: Site visitors can choose to display the browse views as grids or lists, and grids are the default.
* **Toggle (default: list)**: Site visitors can choose to display the browse views as grids or lists, and lists are the default.
* **Layout for Show Pages**: Resource metadata can show display as **stacked** with properties as headings above their values, or **inline** with properties as headings inline with their values.
## Customizing the Theme
For those dipping their toes into customizing sites with CSS, the [CSS Editor](https://omeka.org/s/modules/CSSEditor/) module allows site administrators to write style overrides.
For advanced CSS and Sass users, Foundation S uses ZURB Foundation Site's toolkit that includes variables and mixins for managing and extending many styles.
### Sass Tasks
Run these commands within the theme's root directory.
* **npm start**: While this task runs, it watches for changes to sass files and recompiles the CSS.
* **gulp sass**: This is the one-off task for compiling the current Sass/CSS.
### Sass File Structure
Foundation S comes with the Default theme, as well as 3 other customized stylesheets that were built on top of Default. The "Sea Foam" theme has the fewest overrides and is thus the easiest reference for a custom theme model.
**/asset/sass/seafoam.scss**
```
@charset 'utf-8';
@import 'globals-default';
@import 'globals-seafoam';
@import 'settings';
// Sea Foam Settings
$topbar-background: $primary-color;
$thumbnail-border: 4px solid $secondary-color;
$thumbnail-shadow: none;
$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
$button-background: $secondary-color;
$button-color: $primary-color;
@import 'foundation-core';
@import 'omeka';
header a {
color: $white;
}
```
Much of the customizability within the theme lies in managing its settings variables. ZURB Foundation's default global variables from their original `_settings.scss` all sit in `_globals-default.scss`. Many of these variables are used throughout the rest of `_settings.scss`, so it was necessary to separate them out into their own file if the theme writer wants to set their own global variables. Here all the overrides live in `_globals-seafoam.scss`, and so all overridden values will be appropriately updated for use throughout the rest of `_settings.scss`.
Any non-global setting variable overrides should come after the import for `_settings.scss` and before their usagee in the rule files, `_foundation-core.scss`, and `_omeka.scss`.
ZURB Foundation's default style rules are all managed in `_foundation-core.scss`. All style rules specific to Omeka S are contained within `_omeka.scss`.
After all those imports come all style rules specific to the theme.

1
asset/css/app.css Normal file

File diff suppressed because one or more lines are too long

1
asset/css/default.css Normal file

File diff suppressed because one or more lines are too long

1
asset/css/inkwell.css Normal file

File diff suppressed because one or more lines are too long

1
asset/css/revolution.css Normal file

File diff suppressed because one or more lines are too long

1
asset/css/seafoam.css Normal file

File diff suppressed because one or more lines are too long

BIN
asset/img/revolution-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

16
asset/js/browse.js Normal file
View File

@ -0,0 +1,16 @@
(function($) {
$(document).ready(function() {
$('.layout-toggle button').click(function() {
$('.layout-toggle button:disabled').removeAttr('disabled');
$(this).attr('disabled', true);
$('.resources').toggleClass('resource-list').toggleClass('resource-grid');
$('.resources .resource').toggleClass('media-object');
$('.resource-meta, .resource-image').toggleClass('media-object-section');
});
$('.browse-toggle').click(function() {
$('.browse-controls').toggleClass('open closed');
$(this).toggleClass('open closed');
});
});
})(jQuery)

View File

@ -0,0 +1,61 @@
@import 'foundation';
@import 'motion-ui';
// Global styles
@include foundation-global-styles;
@include foundation-forms;
@include foundation-typography;
// Grids (choose one)
@include foundation-xy-grid-classes;
// @include foundation-grid;
// @include foundation-flex-grid;
// Generic components
@include foundation-button;
@include foundation-button-group;
@include foundation-close-button;
@include foundation-label;
@include foundation-progress-bar;
@include foundation-slider;
@include foundation-switch;
@include foundation-table;
// Basic components
@include foundation-badge;
@include foundation-breadcrumbs;
@include foundation-callout;
@include foundation-card;
@include foundation-dropdown;
@include foundation-pagination;
@include foundation-tooltip;
// Containers
@include foundation-accordion;
@include foundation-media-object;
@include foundation-orbit;
@include foundation-responsive-embed;
@include foundation-tabs;
@include foundation-thumbnail;
// Menu-based containers
@include foundation-menu;
@include foundation-menu-icon;
@include foundation-accordion-menu;
@include foundation-drilldown-menu;
@include foundation-dropdown-menu;
// Layout components
@include foundation-off-canvas;
@include foundation-reveal;
@include foundation-sticky;
@include foundation-title-bar;
@include foundation-top-bar;
// Helpers
@include foundation-float-classes;
@include foundation-flex-classes;
@include foundation-visibility-classes;
// @include foundation-prototype-classes;
// Motion UI
@include motion-ui-transitions;
@include motion-ui-animations;

View File

@ -0,0 +1,35 @@
@import "util/util";
$global-font-size: 100%;
$global-width: rem-calc(1200);
$global-lineheight: 1.5;
$foundation-palette: (
primary: #1779ba,
secondary: #767676,
success: #3adb76,
warning: #ffae00,
alert: #cc4b37,
);
$light-gray: #e6e6e6;
$medium-gray: #cacaca;
$dark-gray: #8a8a8a;
$black: #0a0a0a;
$white: #fefefe;
$body-background: $white;
$body-font-color: $black;
$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;
$body-antialiased: true;
$global-margin: 1rem;
$global-padding: 1rem;
$global-position: 1rem;
$global-weight-normal: normal;
$global-weight-bold: bold;
$global-radius: 0;
$global-menu-padding: 0.7rem 1rem;
$global-menu-nested-margin: 1rem;
$global-text-direction: ltr;
$global-flexbox: true;
$global-prototype-breakpoints: false;
$global-button-cursor: auto;
$global-color-pick-contrast-tolerance: 0;
$print-transparent-backgrounds: true;

View File

@ -0,0 +1,12 @@
@import "util/util";
@import url('https://fonts.googleapis.com/css?family=EB+Garamond:400,400i,700,700i|Playfair+Display:400,400i&display=swap');
$foundation-palette: (
primary: #ffcc00,
secondary: #c5f4f2,
success: #3adb76,
warning: #ffae00,
alert: #cc4b37,
);
$global-font-size: 18px;
$body-font-family: 'EB Garamond', serif;

View File

@ -0,0 +1,15 @@
@import "util/util";
@import url('https://fonts.googleapis.com/css?family=IM+Fell+DW+Pica:400,400i|IM+Fell+English+SC|Lusitana:400,700&display=swap');
$brown: #520603;
$red: #dd231b;
$gold: #e8bf00;
$foundation-palette: (
primary: $red,
secondary: $gold,
success: #3adb76,
warning: #ffae00,
alert: #cc4b37,
);
$body-font-color: $brown;
$body-font-family: 'Lusitana', serif;

View File

@ -0,0 +1,11 @@
@import "util/util";
@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,900,900i&display=swap');
$foundation-palette: (
primary: #007a76,
secondary: #c5f4f2,
success: #3adb76,
warning: #ffae00,
alert: #cc4b37,
);
$body-font-family: 'Source Sans Pro', sans-serif;

1085
asset/scss/_omeka.scss Normal file

File diff suppressed because it is too large Load Diff

837
asset/scss/_settings.scss Normal file
View File

@ -0,0 +1,837 @@
// Foundation for Sites Settings
// -----------------------------
//
// Table of Contents:
//
// 1. Global
// 2. Breakpoints
// 3. The Grid
// 4. Base Typography
// 5. Typography Helpers
// 6. Abide
// 7. Accordion
// 8. Accordion Menu
// 9. Badge
// 10. Breadcrumbs
// 11. Button
// 12. Button Group
// 13. Callout
// 14. Card
// 15. Close Button
// 16. Drilldown
// 17. Dropdown
// 18. Dropdown Menu
// 19. Flexbox Utilities
// 20. Forms
// 21. Label
// 22. Media Object
// 23. Menu
// 24. Meter
// 25. Off-canvas
// 26. Orbit
// 27. Pagination
// 28. Progress Bar
// 29. Prototype Arrow
// 30. Prototype Border-Box
// 31. Prototype Border-None
// 32. Prototype Bordered
// 33. Prototype Display
// 34. Prototype Font-Styling
// 35. Prototype List-Style-Type
// 36. Prototype Overflow
// 37. Prototype Position
// 38. Prototype Rounded
// 39. Prototype Separator
// 40. Prototype Shadow
// 41. Prototype Sizing
// 42. Prototype Spacing
// 43. Prototype Text-Decoration
// 44. Prototype Text-Transformation
// 45. Prototype Text-Utilities
// 46. Responsive Embed
// 47. Reveal
// 48. Slider
// 49. Switch
// 50. Table
// 51. Tabs
// 52. Thumbnail
// 53. Title Bar
// 54. Tooltip
// 55. Top Bar
// 56. Xy Grid
@import 'util/util';
// 1. Global
// ---------
// Organized by theme: `_globals-THEME.scss`
@include add-foundation-colors;
$print-hrefs: true;
// 2. Breakpoints
// --------------
$breakpoints: (
small: 0,
medium: 640px,
large: 1024px,
xlarge: 1200px,
xxlarge: 1440px,
);
$print-breakpoint: large;
$breakpoint-classes: (small medium large);
// 3. The Grid
// -----------
$grid-row-width: $global-width;
$grid-column-count: 12;
$grid-column-gutter: (
small: 20px,
medium: 30px,
);
$grid-column-align-edge: true;
$grid-column-alias: 'columns';
$block-grid-max: 8;
// 4. Base Typography
// ------------------
$header-font-family: $body-font-family;
$header-font-weight: $global-weight-normal;
$header-font-style: normal;
$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace;
$header-color: inherit;
$header-lineheight: 1.4;
$header-margin-bottom: 0.5rem;
$header-styles: (
small: (
'h1': ('font-size': 24),
'h2': ('font-size': 20),
'h3': ('font-size': 19),
'h4': ('font-size': 18),
'h5': ('font-size': 17),
'h6': ('font-size': 16),
),
medium: (
'h1': ('font-size': 48),
'h2': ('font-size': 40),
'h3': ('font-size': 31),
'h4': ('font-size': 25),
'h5': ('font-size': 20),
'h6': ('font-size': 16),
),
);
$header-text-rendering: optimizeLegibility;
$small-font-size: 80%;
$header-small-font-color: $medium-gray;
$paragraph-lineheight: 1.6;
$paragraph-margin-bottom: 1rem;
$paragraph-text-rendering: optimizeLegibility;
$code-color: $black;
$code-font-family: $font-family-monospace;
$code-font-weight: $global-weight-normal;
$code-background: $light-gray;
$code-border: 1px solid $medium-gray;
$code-padding: rem-calc(2 5 1);
$anchor-color: $primary-color;
$anchor-color-hover: scale-color($anchor-color, $lightness: -14%);
$anchor-text-decoration: none;
$anchor-text-decoration-hover: none;
$hr-width: $global-width;
$hr-border: 1px solid $medium-gray;
$hr-margin: rem-calc(20) auto;
$list-lineheight: $paragraph-lineheight;
$list-margin-bottom: $paragraph-margin-bottom;
$list-style-type: disc;
$list-style-position: outside;
$list-side-margin: 1.25rem;
$list-nested-side-margin: 1.25rem;
$defnlist-margin-bottom: 1rem;
$defnlist-term-weight: $global-weight-bold;
$defnlist-term-margin-bottom: 0.3rem;
$blockquote-color: $dark-gray;
$blockquote-padding: rem-calc(9 20 0 19);
$blockquote-border: 1px solid $medium-gray;
$cite-font-size: rem-calc(13);
$cite-color: $dark-gray;
$cite-pseudo-content: '\2014 \0020';
$keystroke-font: $font-family-monospace;
$keystroke-color: $black;
$keystroke-background: $light-gray;
$keystroke-padding: rem-calc(2 4 0);
$keystroke-radius: $global-radius;
$abbr-underline: 1px dotted $black;
// 5. Typography Helpers
// ---------------------
$lead-font-size: $global-font-size * 1.25;
$lead-lineheight: 1.6;
$subheader-lineheight: 1.4;
$subheader-color: $dark-gray;
$subheader-font-weight: $global-weight-normal;
$subheader-margin-top: 0.2rem;
$subheader-margin-bottom: 0.5rem;
$stat-font-size: 2.5rem;
// 6. Abide
// --------
$abide-inputs: true;
$abide-labels: true;
$input-background-invalid: get-color(alert);
$form-label-color-invalid: get-color(alert);
$input-error-color: get-color(alert);
$input-error-font-size: rem-calc(12);
$input-error-font-weight: $global-weight-bold;
// 7. Accordion
// ------------
$accordion-background: $white;
$accordion-plusminus: true;
$accordion-title-font-size: rem-calc(12);
$accordion-item-color: $primary-color;
$accordion-item-background-hover: $light-gray;
$accordion-item-padding: 1.25rem 1rem;
$accordion-content-background: $white;
$accordion-content-border: 1px solid $light-gray;
$accordion-content-color: $body-font-color;
$accordion-content-padding: 1rem;
// 8. Accordion Menu
// -----------------
$accordionmenu-padding: $global-menu-padding;
$accordionmenu-nested-margin: $global-menu-nested-margin;
$accordionmenu-submenu-padding: $accordionmenu-padding;
$accordionmenu-arrows: true;
$accordionmenu-arrow-color: $primary-color;
$accordionmenu-item-background: null;
$accordionmenu-border: null;
$accordionmenu-submenu-toggle-background: null;
$accordion-submenu-toggle-border: $accordionmenu-border;
$accordionmenu-submenu-toggle-width: 40px;
$accordionmenu-submenu-toggle-height: $accordionmenu-submenu-toggle-width;
$accordionmenu-arrow-size: 6px;
// 9. Badge
// --------
$badge-background: $primary-color;
$badge-color: $white;
$badge-color-alt: $black;
$badge-palette: $foundation-palette;
$badge-padding: 0.3em;
$badge-minwidth: 2.1em;
$badge-font-size: 0.6rem;
// 10. Breadcrumbs
// ---------------
$breadcrumbs-margin: 0 0 $global-margin 0;
$breadcrumbs-item-font-size: rem-calc(11);
$breadcrumbs-item-color: $primary-color;
$breadcrumbs-item-color-current: $black;
$breadcrumbs-item-color-disabled: $medium-gray;
$breadcrumbs-item-margin: 0.75rem;
$breadcrumbs-item-uppercase: true;
$breadcrumbs-item-separator: true;
$breadcrumbs-item-separator-item: '/';
$breadcrumbs-item-separator-item-rtl: '\\';
$breadcrumbs-item-separator-color: $medium-gray;
// 11. Button
// ----------
$button-font-family: inherit;
$button-padding: 0.85em 1em;
$button-margin: 0 0 $global-margin 0;
$button-fill: solid;
$button-background: $primary-color;
$button-background-hover: scale-color($button-background, $lightness: -15%);
$button-color: $white;
$button-color-alt: $black;
$button-radius: $global-radius;
$button-hollow-border-width: 1px;
$button-sizes: (
tiny: 0.6rem,
small: 0.75rem,
default: 0.9rem,
large: 1.25rem,
);
$button-palette: $foundation-palette;
$button-opacity-disabled: 0.25;
$button-background-hover-lightness: -20%;
$button-hollow-hover-lightness: -50%;
$button-transition: background-color 0.25s ease-out, color 0.25s ease-out;
$button-responsive-expanded: false;
// 12. Button Group
// ----------------
$buttongroup-margin: 1rem;
$buttongroup-spacing: 1px;
$buttongroup-child-selector: '.button';
$buttongroup-expand-max: 6;
$buttongroup-radius-on-each: true;
// 13. Callout
// -----------
$callout-background: $white;
$callout-background-fade: 85%;
$callout-border: 1px solid rgba($black, 0.25);
$callout-margin: 0 0 1rem 0;
$callout-padding: 1rem;
$callout-font-color: $body-font-color;
$callout-font-color-alt: $body-background;
$callout-radius: $global-radius;
$callout-link-tint: 30%;
// 14. Card
// --------
$card-background: $white;
$card-font-color: $body-font-color;
$card-divider-background: $light-gray;
$card-border: 1px solid $light-gray;
$card-shadow: none;
$card-border-radius: $global-radius;
$card-padding: $global-padding;
$card-margin-bottom: $global-margin;
// 15. Close Button
// ----------------
$closebutton-position: right top;
$closebutton-offset-horizontal: (
small: 0.66rem,
medium: 1rem,
);
$closebutton-offset-vertical: (
small: 0.33em,
medium: 0.5rem,
);
$closebutton-size: (
small: 1.5em,
medium: 2em,
);
$closebutton-lineheight: 1;
$closebutton-color: $dark-gray;
$closebutton-color-hover: $black;
// 16. Drilldown
// -------------
$drilldown-transition: transform 0.15s linear;
$drilldown-arrows: true;
$drilldown-padding: $global-menu-padding;
$drilldown-nested-margin: 0;
$drilldown-background: $white;
$drilldown-submenu-padding: $drilldown-padding;
$drilldown-submenu-background: $white;
$drilldown-arrow-color: $primary-color;
$drilldown-arrow-size: 6px;
// 17. Dropdown
// ------------
$dropdown-padding: 1rem;
$dropdown-background: $body-background;
$dropdown-border: 1px solid $medium-gray;
$dropdown-font-size: 1rem;
$dropdown-width: 300px;
$dropdown-radius: $global-radius;
$dropdown-sizes: (
tiny: 100px,
small: 200px,
large: 400px,
);
// 18. Dropdown Menu
// -----------------
$dropdownmenu-arrows: true;
$dropdownmenu-arrow-color: $anchor-color;
$dropdownmenu-arrow-size: 6px;
$dropdownmenu-arrow-padding: 1.5rem;
$dropdownmenu-min-width: 200px;
$dropdownmenu-background: null;
$dropdownmenu-submenu-background: $white;
$dropdownmenu-padding: $global-menu-padding;
$dropdownmenu-nested-margin: 0;
$dropdownmenu-submenu-padding: $dropdownmenu-padding;
$dropdownmenu-border: 1px solid $medium-gray;
$dropdown-menu-item-color-active: get-color(primary);
$dropdown-menu-item-background-active: transparent;
// 19. Flexbox Utilities
// ---------------------
$flex-source-ordering-count: 6;
$flexbox-responsive-breakpoints: true;
// 20. Forms
// ---------
$fieldset-border: 1px solid $medium-gray;
$fieldset-padding: rem-calc(20);
$fieldset-margin: rem-calc(18 0);
$legend-padding: rem-calc(0 3);
$form-spacing: rem-calc(16);
$helptext-color: $black;
$helptext-font-size: rem-calc(13);
$helptext-font-style: italic;
$input-prefix-color: $black;
$input-prefix-background: $light-gray;
$input-prefix-border: 1px solid $medium-gray;
$input-prefix-padding: 1rem;
$form-label-color: $black;
$form-label-font-size: rem-calc(14);
$form-label-font-weight: $global-weight-normal;
$form-label-line-height: 1.8;
$select-background: $white;
$select-triangle-color: $dark-gray;
$select-radius: $global-radius;
$input-color: $black;
$input-placeholder-color: $medium-gray;
$input-font-family: inherit;
$input-font-size: rem-calc(16);
$input-font-weight: $global-weight-normal;
$input-line-height: $global-lineheight;
$input-background: $white;
$input-background-focus: $white;
$input-background-disabled: $light-gray;
$input-border: 1px solid $medium-gray;
$input-border-focus: 1px solid $dark-gray;
$input-padding: $form-spacing / 2;
$input-shadow: inset 0 1px 2px rgba($black, 0.1);
$input-shadow-focus: 0 0 5px $medium-gray;
$input-cursor-disabled: not-allowed;
$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
$input-number-spinners: true;
$input-radius: $global-radius;
$form-button-radius: $global-radius;
// 21. Label
// ---------
$label-background: $primary-color;
$label-color: $white;
$label-color-alt: $black;
$label-palette: $foundation-palette;
$label-font-size: 0.8rem;
$label-padding: 0.33333rem 0.5rem;
$label-radius: $global-radius;
// 22. Media Object
// ----------------
$mediaobject-margin-bottom: $global-margin;
$mediaobject-section-padding: $global-padding;
$mediaobject-image-width-stacked: 100%;
// 23. Menu
// --------
$menu-margin: 0;
$menu-nested-margin: $global-menu-nested-margin;
$menu-items-padding: $global-menu-padding;
$menu-simple-margin: 1rem;
$menu-item-color-active: $white;
$menu-item-background-active: get-color(primary);
$menu-icon-spacing: 0.25rem;
$menu-state-back-compat: true;
$menu-centered-back-compat: true;
$menu-icons-back-compat: true;
// 24. Meter
// ---------
$meter-height: 1rem;
$meter-radius: $global-radius;
$meter-background: $medium-gray;
$meter-fill-good: $success-color;
$meter-fill-medium: $warning-color;
$meter-fill-bad: $alert-color;
// 25. Off-canvas
// --------------
$offcanvas-sizes: (
small: 250px,
);
$offcanvas-vertical-sizes: (
small: 250px,
);
$offcanvas-background: $light-gray;
$offcanvas-shadow: 0 0 10px rgba($black, 0.7);
$offcanvas-inner-shadow-size: 20px;
$offcanvas-inner-shadow-color: rgba($black, 0.25);
$offcanvas-overlay-zindex: 11;
$offcanvas-push-zindex: 12;
$offcanvas-overlap-zindex: 13;
$offcanvas-reveal-zindex: 12;
$offcanvas-transition-length: 0.5s;
$offcanvas-transition-timing: ease;
$offcanvas-fixed-reveal: true;
$offcanvas-exit-background: rgba($white, 0.25);
$maincontent-class: 'off-canvas-content';
// 26. Orbit
// ---------
$orbit-bullet-background: $medium-gray;
$orbit-bullet-background-active: $dark-gray;
$orbit-bullet-diameter: 1.2rem;
$orbit-bullet-margin: 0.1rem;
$orbit-bullet-margin-top: 0.8rem;
$orbit-bullet-margin-bottom: 0.8rem;
$orbit-caption-background: rgba($black, 0.5);
$orbit-caption-padding: 1rem;
$orbit-control-background-hover: rgba($black, 0.5);
$orbit-control-padding: 1rem;
$orbit-control-zindex: 10;
// 27. Pagination
// --------------
$pagination-font-size: rem-calc(14);
$pagination-margin-bottom: $global-margin;
$pagination-item-color: $black;
$pagination-item-padding: rem-calc(3 10);
$pagination-item-spacing: rem-calc(1);
$pagination-radius: $global-radius;
$pagination-item-background-hover: $light-gray;
$pagination-item-background-current: $primary-color;
$pagination-item-color-current: $white;
$pagination-item-color-disabled: $medium-gray;
$pagination-ellipsis-color: $black;
$pagination-mobile-items: false;
$pagination-mobile-current-item: false;
$pagination-arrows: true;
// 28. Progress Bar
// ----------------
$progress-height: 1rem;
$progress-background: $medium-gray;
$progress-margin-bottom: $global-margin;
$progress-meter-background: $primary-color;
$progress-radius: $global-radius;
// 29. Prototype Arrow
// -------------------
$prototype-arrow-directions: (
down,
up,
right,
left
);
$prototype-arrow-size: 0.4375rem;
$prototype-arrow-color: $black;
// 30. Prototype Border-Box
// ------------------------
$prototype-border-box-breakpoints: $global-prototype-breakpoints;
// 31. Prototype Border-None
// -------------------------
$prototype-border-none-breakpoints: $global-prototype-breakpoints;
// 32. Prototype Bordered
// ----------------------
$prototype-bordered-breakpoints: $global-prototype-breakpoints;
$prototype-border-width: rem-calc(1);
$prototype-border-type: solid;
$prototype-border-color: $medium-gray;
// 33. Prototype Display
// ---------------------
$prototype-display-breakpoints: $global-prototype-breakpoints;
$prototype-display: (
inline,
inline-block,
block,
table,
table-cell
);
// 34. Prototype Font-Styling
// --------------------------
$prototype-font-breakpoints: $global-prototype-breakpoints;
$prototype-wide-letter-spacing: rem-calc(4);
$prototype-font-normal: $global-weight-normal;
$prototype-font-bold: $global-weight-bold;
// 35. Prototype List-Style-Type
// -----------------------------
$prototype-list-breakpoints: $global-prototype-breakpoints;
$prototype-style-type-unordered: (
disc,
circle,
square
);
$prototype-style-type-ordered: (
decimal,
lower-alpha,
lower-latin,
lower-roman,
upper-alpha,
upper-latin,
upper-roman
);
// 36. Prototype Overflow
// ----------------------
$prototype-overflow-breakpoints: $global-prototype-breakpoints;
$prototype-overflow: (
visible,
hidden,
scroll
);
// 37. Prototype Position
// ----------------------
$prototype-position-breakpoints: $global-prototype-breakpoints;
$prototype-position: (
static,
relative,
absolute,
fixed
);
$prototype-position-z-index: 975;
// 38. Prototype Rounded
// ---------------------
$prototype-rounded-breakpoints: $global-prototype-breakpoints;
$prototype-border-radius: rem-calc(3);
// 39. Prototype Separator
// -----------------------
$prototype-separator-breakpoints: $global-prototype-breakpoints;
$prototype-separator-align: center;
$prototype-separator-height: rem-calc(2);
$prototype-separator-width: 3rem;
$prototype-separator-background: $primary-color;
$prototype-separator-margin-top: $global-margin;
// 40. Prototype Shadow
// --------------------
$prototype-shadow-breakpoints: $global-prototype-breakpoints;
$prototype-box-shadow: 0 2px 5px 0 rgba(0,0,0,.16),
0 2px 10px 0 rgba(0,0,0,.12);
// 41. Prototype Sizing
// --------------------
$prototype-sizing-breakpoints: $global-prototype-breakpoints;
$prototype-sizing: (
width,
height
);
$prototype-sizes: (
25: 25%,
50: 50%,
75: 75%,
100: 100%
);
// 42. Prototype Spacing
// ---------------------
$prototype-spacing-breakpoints: $global-prototype-breakpoints;
$prototype-spacers-count: 3;
// 43. Prototype Text-Decoration
// -----------------------------
$prototype-decoration-breakpoints: $global-prototype-breakpoints;
$prototype-text-decoration: (
overline,
underline,
line-through,
);
// 44. Prototype Text-Transformation
// ---------------------------------
$prototype-transformation-breakpoints: $global-prototype-breakpoints;
$prototype-text-transformation: (
lowercase,
uppercase,
capitalize
);
// 45. Prototype Text-Utilities
// ----------------------------
$prototype-utilities-breakpoints: $global-prototype-breakpoints;
$prototype-text-overflow: ellipsis;
// 46. Responsive Embed
// --------------------
$responsive-embed-margin-bottom: rem-calc(16);
$responsive-embed-ratios: (
default: 4 by 3,
widescreen: 16 by 9,
);
// 47. Reveal
// ----------
$reveal-background: $white;
$reveal-width: 600px;
$reveal-max-width: $global-width;
$reveal-padding: $global-padding;
$reveal-border: 1px solid $medium-gray;
$reveal-radius: $global-radius;
$reveal-zindex: 1005;
$reveal-overlay-background: rgba($black, 0.45);
// 48. Slider
// ----------
$slider-width-vertical: 0.5rem;
$slider-transition: all 0.2s ease-in-out;
$slider-height: 0.5rem;
$slider-background: $light-gray;
$slider-fill-background: $medium-gray;
$slider-handle-height: 1.4rem;
$slider-handle-width: 1.4rem;
$slider-handle-background: $primary-color;
$slider-opacity-disabled: 0.25;
$slider-radius: $global-radius;
// 49. Switch
// ----------
$switch-background: $medium-gray;
$switch-background-active: $primary-color;
$switch-height: 2rem;
$switch-height-tiny: 1.5rem;
$switch-height-small: 1.75rem;
$switch-height-large: 2.5rem;
$switch-radius: $global-radius;
$switch-margin: $global-margin;
$switch-paddle-background: $white;
$switch-paddle-offset: 0.25rem;
$switch-paddle-radius: $global-radius;
$switch-paddle-transition: all 0.25s ease-out;
// 50. Table
// ---------
$table-background: $white;
$table-color-scale: 5%;
$table-border: 1px solid smart-scale($table-background, $table-color-scale);
$table-padding: rem-calc(8 10 10);
$table-hover-scale: 2%;
$table-row-hover: darken($table-background, $table-hover-scale);
$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale);
$table-is-striped: true;
$table-striped-background: smart-scale($table-background, $table-color-scale);
$table-stripe: even;
$table-head-background: smart-scale($table-background, $table-color-scale / 2);
$table-head-row-hover: darken($table-head-background, $table-hover-scale);
$table-foot-background: smart-scale($table-background, $table-color-scale);
$table-foot-row-hover: darken($table-foot-background, $table-hover-scale);
$table-head-font-color: $body-font-color;
$table-foot-font-color: $body-font-color;
$show-header-for-stacked: false;
$table-stack-breakpoint: medium;
// 51. Tabs
// --------
$tab-margin: 0;
$tab-background: $white;
$tab-color: $primary-color;
$tab-background-active: $light-gray;
$tab-active-color: $primary-color;
$tab-item-font-size: rem-calc(12);
$tab-item-background-hover: $white;
$tab-item-padding: 1.25rem 1.5rem;
$tab-content-background: $white;
$tab-content-border: $light-gray;
$tab-content-color: $body-font-color;
$tab-content-padding: 1rem;
// 52. Thumbnail
// -------------
$thumbnail-border: 4px solid $white;
$thumbnail-margin-bottom: $global-margin;
$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2);
$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
$thumbnail-transition: box-shadow 200ms ease-out;
$thumbnail-radius: $global-radius;
// 53. Title Bar
// -------------
$titlebar-background: $black;
$titlebar-color: $white;
$titlebar-padding: 0.5rem;
$titlebar-text-font-weight: bold;
$titlebar-icon-color: $white;
$titlebar-icon-color-hover: $medium-gray;
$titlebar-icon-spacing: 0.25rem;
// 54. Tooltip
// -----------
$has-tip-cursor: help;
$has-tip-font-weight: $global-weight-bold;
$has-tip-border-bottom: dotted 1px $dark-gray;
$tooltip-background-color: $black;
$tooltip-color: $white;
$tooltip-padding: 0.75rem;
$tooltip-max-width: 10rem;
$tooltip-font-size: $small-font-size;
$tooltip-pip-width: 0.75rem;
$tooltip-pip-height: $tooltip-pip-width * 0.866;
$tooltip-radius: $global-radius;
// 55. Top Bar
// -----------
$topbar-padding: 0.5rem;
$topbar-background: $light-gray;
$topbar-submenu-background: $topbar-background;
$topbar-title-spacing: 0.5rem 1rem 0.5rem 0;
$topbar-input-width: 200px;
$topbar-unstack-breakpoint: medium;
// 56. Xy Grid
// -----------
$xy-grid: true;
$grid-container: $global-width;
$grid-columns: 12;
$grid-margin-gutters: (
small: 20px,
medium: 30px
);
$grid-padding-gutters: $grid-margin-gutters;
$grid-container-padding: $grid-padding-gutters;
$grid-container-max: $global-width;
$xy-block-grid-max: 8;

6
asset/scss/default.scss Normal file
View File

@ -0,0 +1,6 @@
@charset 'utf-8';
@import 'globals-default';
@import 'settings';
@import 'foundation-core';
@import 'omeka';

56
asset/scss/inkwell.scss Normal file
View File

@ -0,0 +1,56 @@
@charset 'utf-8';
@import 'globals-default';
@import 'globals-inkwell';
@import 'settings';
// Sea Foam Settings
$topbar-background: transparent;
$header-font-family: "Playfair Display", serif;
$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
$button-color: $black;
@import 'foundation-core';
@import 'omeka';
body {
font-weight: 500;
}
header {
border-top: $global-padding solid $primary-color;
}
header a {
color: $black;
}
header .button {
border: 1px solid #000;
margin-left: -1px;
}
header .input-group-field {
border: 1px solid #000;
box-shadow: none;
}
a,
.breadcrumbs a {
color: $black;
}
body.vertical-menu header a {
color: #000;
text-decoration: underline;
}
label,
.label {
color: $black;
}

View File

@ -0,0 +1,54 @@
@charset 'utf-8';
@import 'globals-default';
@import 'globals-revolution';
@import 'settings';
// Revolution Settings
$header-font-family: 'IM Fell English SC', serif;
$subheader-font-family: 'IM Fell DW Pica', serif;
$topbar-background: transparent;
$thumbnail-border: 4px solid transparent;
$thumbnail-shadow: 0 0 0 1px $gold;
$thumbnail-shadow-hover: 0 0 6px 1px rgba($gold, 0.5);
@import 'foundation-core';
@import 'omeka';
body {
background: url('../img/revolution-bg.jpg') repeat;
background-size: auto;
}
body:not(.vertical-menu) header {
border-top: ($global-padding) solid $primary-color;
}
.fieldset {
border-color: $gold;
}
.resource-list .resource {
border-bottom-color: $gold;
}
.description.fadeout:after {
background: transparent url('../img/revolution-fade.png') no-repeat;
background-size: cover;
background-position: right;
right: -1rem;
}
@include breakpoint(medium up) {
body.vertical-menu {
background-image: none;
}
body.vertical-menu #content,
body.vertical-menu footer {
background: transparent url('../img/revolution-bg.jpg') repeat;
}
}

23
asset/scss/seafoam.scss Normal file
View File

@ -0,0 +1,23 @@
@charset 'utf-8';
@import 'globals-default';
@import 'globals-seafoam';
@import 'settings';
// Sea Foam Settings
$topbar-background: $primary-color;
$thumbnail-border: 4px solid $secondary-color;
$thumbnail-shadow: none;
$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
$button-background: $secondary-color;
$button-color: $primary-color;
@import 'foundation-core';
@import 'omeka';
header a {
color: $white;
}

77
config/theme.ini Normal file
View File

@ -0,0 +1,77 @@
[info]
name = "Archive"
version = "1.0.0"
author = "Hangar.org"
description = "A starter theme using the ZURB Foundation toolkit."
theme_link = "https://github.com/omeka-s-themes/foundation-s"
author_link = "https://omeka.org"
omeka_version_constraint = "^3.0.0"
[config]
elements.stylesheet.name = "stylesheet"
elements.stylesheet.attributes.id = "stylesheet"
elements.stylesheet.type = "Zend\Form\Element\Select"
elements.stylesheet.options.label = "Stylesheet"
elements.stylesheet.options.value_options.default = "Default"
elements.stylesheet.options.value_options.revolution = "Revolution"
elements.stylesheet.options.value_options.seafoam = "Sea Foam"
elements.stylesheet.options.value_options.inkwell = "Inkwell"
elements.nav_layout.name = "nav_layout"
elements.nav_layout.attributes.id = "nav_layout"
elements.nav_layout.type = "Zend\Form\Element\Select"
elements.nav_layout.options.label = "Navigation Layout"
elements.nav_layout.options.value_options.dropdown = "Horizontal Dropdown"
elements.nav_layout.options.value_options.vertical = "Full Height Column"
elements.nav_show_levels.name = "nav_show_levels"
elements.nav_show_levels.attributes.id = "nav_show_levels"
elements.nav_show_levels.type = "Checkbox"
elements.nav_show_levels.options.label = "Show Top Navigation Child Pages"
elements.nav_show_levels.options.info = "Check to show child pages in the top navigation bar. Uncheck to show top-level items only."
elements.nav_show_levels.attributes.value = 1
elements.nav_depth.name = "nav_depth"
elements.nav_depth.attributes.id = "nav_depth"
elements.nav_depth.type = "Number"
elements.nav_depth.options.label = "Top Navigation Depth"
elements.nav_depth.options.info = "Maximum number of levels to show in the site's top navigation bar. Set to 0 to show all levels."
elements.nav_depth.attributes.min = 0
elements.nav_depth.attributes.value = 0
elements.logo.name = "logo"
elements.logo.type = "Omeka\Form\Element\Asset"
elements.logo.options.label = "Logo"
elements.footer.name = "footer"
elements.footer.attributes.id = "footer"
elements.footer.type = "Omeka\Form\Element\HtmlTextarea"
elements.footer.options.label = "Footer Content"
elements.footer.options.info = "HTML content to appear in the footer"
elements.footer.attributes.value = "Powered by Omeka S"
elements.browse_layout.name = "browse_layout"
elements.browse_layout.attributes.id = "browse_layout"
elements.browse_layout.type = "Zend\Form\Element\Select"
elements.browse_layout.options.label = "Layout for Browse Pages"
elements.browse_layout.options.value_options.grid = "Grid"
elements.browse_layout.options.value_options.list = "List"
elements.browse_layout.options.value_options.togglegrid = "Toggle (default: grid)"
elements.browse_layout.options.value_options.togglelist = "Toggle (default: list)"
elements.show_layout.name = "show_layout"
elements.show_layout.attributes.id = "show_layout"
elements.show_layout.type = "Zend\Form\Element\Select"
elements.show_layout.options.label = "Layout for Show Pages"
elements.show_layout.options.info = "Layout for displaying property headings and values. Stack shows properties above the values while inline shows properties next to their values."
elements.show_layout.options.value_options.stack = "Stack"
elements.show_layout.options.value_options.inline = "Inline"
elements.truncate_body_property.name = "truncate_body_property"
elements.truncate_body_property.attributes.id = "truncate_body_property"
elements.truncate_body_property.type = "Zend\Form\Element\Select"
elements.truncate_body_property.options.label = "Truncate Body Property"
elements.truncate_body_property.info = "How to handle long values for the body property of each resource on the browse page."
elements.truncate_body_property.options.value_options.full = "Show full value"
elements.truncate_body_property.options.value_options.fadeout = "Show 4 lines and fade out"
elements.truncate_body_property.options.value_options.ellipsis = "Show 4 lines and clip with an ellipsis"

36
gulpfile.js Normal file
View File

@ -0,0 +1,36 @@
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var $ = require('gulp-load-plugins')();
var autoprefixer = require('autoprefixer');
var sassPaths = [
'node_modules/foundation-sites/scss',
'node_modules/motion-ui/src'
];
function sass() {
return gulp.src('asset/scss/*.scss')
.pipe($.sass({
includePaths: sassPaths,
outputStyle: 'compressed' // if css compressed **file size**
})
.on('error', $.sass.logError))
.pipe($.postcss([
autoprefixer()
]))
.pipe(gulp.dest('asset/css'))
.pipe(browserSync.stream());
};
function serve() {
browserSync.init({
server: "./"
});
gulp.watch("asset/scss/*.scss", sass);
gulp.watch("*.html").on('change', browserSync.reload);
}
gulp.task('sass', sass);
gulp.task('serve', gulp.series('sass', serve));
gulp.task('default', gulp.series('sass', serve));

170
index.html Normal file
View File

@ -0,0 +1,170 @@
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Foundation for Sites</title>
<link rel="stylesheet" href="asset/css/app.css">
</head>
<body>
<div class="grid-container">
<div class="grid-x grid-padding-x">
<div class="large-12 cell">
<h1>Welcome to Foundation</h1>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-12 cell">
<div class="callout">
<h3>We&rsquo;re stoked you want to try Foundation! </h3>
<p>To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.</p>
<p>Once you've exhausted the fun in this document, you should check out:</p>
<div class="grid-x grid-padding-x">
<div class="large-4 medium-4 cell">
<p><a href="http://foundation.zurb.com/docs">Foundation Documentation</a><br />Everything you need to know about using the framework.</p>
</div>
<div class="large-4 medium-4 cell">
<p><a href="http://zurb.com/university/code-skills">Foundation Code Skills</a><br />These online courses offer you a chance to better understand how Foundation works and how you can master it to create awesome projects.</p>
</div>
<div class="large-4 medium-4 cell">
<p><a href="http://foundation.zurb.com/forum">Foundation Forum</a><br />Join the Foundation community to ask a question or show off your knowlege.</p>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-4 medium-4 medium-push-2 cell">
<p><a href="http://github.com/zurb/foundation">Foundation on Github</a><br />Latest code, issue reports, feature requests and more.</p>
</div>
<div class="large-4 medium-4 medium-pull-2 cell">
<p><a href="https://twitter.com/ZURBfoundation">@zurbfoundation</a><br />Ping us on Twitter if you have questions. When you build something with this we'd love to see it (and send you a totally boss sticker).</p>
</div>
</div>
</div>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-8 medium-8 cell">
<h5>Here&rsquo;s your basic grid:</h5>
<!-- Grid Example -->
<div class="grid-x grid-padding-x">
<div class="large-12 cell">
<div class="primary callout">
<p><strong>This is a twelve cell section in a grid-x.</strong> Each of these includes a div.callout element so you can see where the cell are - it's not required at all for the grid.</p>
</div>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-6 medium-6 cell">
<div class="primary callout">
<p>Six cell</p>
</div>
</div>
<div class="large-6 medium-6 cell">
<div class="primary callout">
<p>Six cell</p>
</div>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-4 medium-4 small-4 cell">
<div class="primary callout">
<p>Four cell</p>
</div>
</div>
<div class="large-4 medium-4 small-4 cell">
<div class="primary callout">
<p>Four cell</p>
</div>
</div>
<div class="large-4 medium-4 small-4 cell">
<div class="primary callout">
<p>Four cell</p>
</div>
</div>
</div>
<hr />
<h5>We bet you&rsquo;ll need a form somewhere:</h5>
<form>
<div class="grid-x grid-padding-x">
<div class="large-12 cell">
<label>Input Label</label>
<input type="text" placeholder="large-12.cell" />
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-4 medium-4 cell">
<label>Input Label</label>
<input type="text" placeholder="large-4.cell" />
</div>
<div class="large-4 medium-4 cell">
<label>Input Label</label>
<input type="text" placeholder="large-4.cell" />
</div>
<div class="large-4 medium-4 cell">
<div class="grid-x">
<label>Input Label</label>
<div class="input-group">
<input type="text" placeholder="small-9.cell" class="input-group-field" />
<span class="input-group-label">.com</span>
</div>
</div>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-12 cell">
<label>Select Box</label>
<select>
<option value="husker">Husker</option>
<option value="starbuck">Starbuck</option>
<option value="hotdog">Hot Dog</option>
<option value="apollo">Apollo</option>
</select>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-6 medium-6 cell">
<label>Choose Your Favorite</label>
<input type="radio" name="pokemon" value="Red" id="pokemonRed"><label for="pokemonRed">Radio 1</label>
<input type="radio" name="pokemon" value="Blue" id="pokemonBlue"><label for="pokemonBlue">Radio 2</label>
</div>
<div class="large-6 medium-6 cell">
<label>Check these out</label>
<input id="checkbox1" type="checkbox"><label for="checkbox1">Checkbox 1</label>
<input id="checkbox2" type="checkbox"><label for="checkbox2">Checkbox 2</label>
</div>
</div>
<div class="grid-x grid-padding-x">
<div class="large-12 cell">
<label>Textarea Label</label>
<textarea placeholder="small-12.cell"></textarea>
</div>
</div>
</form>
</div>
<div class="large-4 medium-4 cell">
<h5>Try one of these buttons:</h5>
<p><a href="#" class="button">Simple Button</a><br/>
<a href="#" class="success button">Success Btn</a><br/>
<a href="#" class="alert button">Alert Btn</a><br/>
<a href="#" class="secondary button">Secondary Btn</a></p>
<div class="callout">
<h5>So many components, girl!</h5>
<p>A whole kitchen sink of goodies comes with Foundation. Check out the docs to see them all, along with details on making them your own.</p>
<a href="http://foundation.zurb.com/sites/docs/" class="small button">Go to Foundation Docs</a>
</div>
</div>
</div>
</div>
<script src="node_modules/jquery/dist/jquery.js"></script>
<script src="node_modules/what-input/dist/what-input.js"></script>
<script src="node_modules/foundation-sites/dist/js/foundation.js"></script>
<script src="js/app.js"></script>
</body>
</html>

6025
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

41
package.json Normal file
View File

@ -0,0 +1,41 @@
{
"name": "foundation-s-theme",
"version": "1.0.0",
"description": "Omeka S theme using the ZURB Foundation toolkit.",
"main": "gulpfile.js",
"scripts": {
"start": "gulp",
"build": "gulp sass"
},
"author": "Omeka Team <outreach@omeka.org>",
"license": "MIT",
"bugs": {
"url": "https://github.com/omeka-s-themes/foundation-s/issues",
"email": "outreach@omeka.org"
},
"dependencies": {
"foundation-sites": "^6.6.3",
"gulp-cli": "^2.3.0",
"jquery": "^3.5.1",
"motion-ui": "~2.0.0",
"what-input": "^5.2.10"
},
"devDependencies": {
"autoprefixer": "^9.8.6",
"browser-sync": "^2.26.12",
"gulp": "^4.0.2",
"gulp-load-plugins": "^2.0.4",
"gulp-postcss": "^8.0.0",
"gulp-sass": "^4.1.0",
"minimist": "^1.2.3"
},
"browserslist": [
"last 2 versions",
"ie >= 9"
],
"repository": {
"type": "git",
"url": "https://github.com/zurb/foundation-sites-template.git"
},
"private": true
}

BIN
theme.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

View File

@ -0,0 +1,36 @@
<?php
$translate = $this->plugin('translate');
// Prepare the item set queries
$ids = isset($query['item_set_id']) ? $query['item_set_id'] : [];
if (!is_array($ids)) {
$ids = [$ids];
}
$ids = array_filter($ids);
if (!$ids) {
$ids = [null];
}
?>
<div id="item-sets" class="field removable multi-value" role="group">
<fieldset class="fieldset">
<legend><?php echo $translate('Search by item set'); ?></legend>
<div class="help-text"><?php echo $translate('Searches for items that are assigned to any of these item sets.'); ?></div>
<div class="inputs">
<?php foreach ($ids as $id): ?>
<div class="value">
<?php echo $this->itemSetSelect([
'name' => 'item_set_id[]',
'attributes' => [
'value' => $id,
'aria-labelledby' => 'by-item-set-label'
],
'options' => [
'disable_group_by_owner' => $this->status()->isSiteRequest(),
],
]); ?>
<button type="button" class="o-icon-delete remove-value button" aria-label="<?php echo $translate('Remove value'); ?>"></button>
</div>
<?php endforeach; ?>
</div>
<button class="add-value button"><?php echo $translate('Add new item set'); ?></button>
</fieldset>
</div>

View File

@ -0,0 +1,85 @@
<?php
$translate = $this->plugin('translate');
// Prepare the property queries.
$properties = isset($query['property']) ? $query['property'] : [];
$properties = array_filter($properties, function ($value) {
return isset($value['text']) ? '' !== trim($value['text']) : true;
});
if (!$properties) {
$properties[] = [];
}
if (isset($query['search'])) {
unset($properties[0]['joiner']);
array_unshift($properties, [
'property' => '',
'type' => 'in',
'text' => $query['search']
]);
}
$queryOption = function($value, array $search, $key, $text) {
$selected = null;
if (isset($search[$key]) && $value === $search[$key]) {
$selected = ' selected';
}
return sprintf('<option value="%s"%s>%s</option>', $value, $selected, $text);
};
$queryText = function(array $search, $index) {
$text = isset($search['text']) ? $search['text'] : null;
return sprintf('<input type="text" class="query-text" name="%s" value="%s" aria-label="%s">',
$this->escapeHtml("property[$index][text]"),
$this->escapeHtml($text),
$this->escapeHtml($this->translate('Query text')));
}
?>
<div id="property-queries" class="field removable multi-value" role="group" aria-labelledby="by-value-label">
<fieldset class="fieldset">
<legend id="by-value-label"><?php echo $translate('Search by value'); ?></legend>
<div class="inputs">
<?php
$index = 0;
foreach ($properties as $property):
$stem = "property[$index]";
?>
<div class="value input-group">
<select class="joiner" name="<?php echo $this->escapeHtml($stem . '[joiner]'); ?>">
<?php echo $queryOption('and', $property, 'joiner', $translate('AND')); ?>
<?php echo $queryOption('or', $property, 'joiner', $translate('OR')); ?>
</select>
<?php echo $this->propertySelect([
'name' => $stem . '[property]',
'attributes' => [
'class' => 'query-property',
'value' => isset($property['property']) ? $property['property'] : null,
'aria-label' => $translate('Property'),
],
'options' => [
'empty_option' => '[Any Property]', // @translate
'apply_templates' => $this->status()->isSiteRequest() ? $this->siteSetting('search_apply_templates') : false,
]
]); ?>
<select class="query-type" name="<?php echo $this->escapeHtml($stem . '[type]'); ?>" aria-label="<?php echo $translate('Query type'); ?>">
<?php echo $queryOption('eq', $property, 'type', $translate('is exactly')); ?>
<?php echo $queryOption('neq', $property, 'type', $translate('is not exactly')); ?>
<?php echo $queryOption('in', $property, 'type', $translate('contains')); ?>
<?php echo $queryOption('nin', $property, 'type', $translate('does not contain')); ?>
<?php echo $queryOption('res', $property, 'type', $translate('is resource with ID')); ?>
<?php echo $queryOption('nres', $property, 'type', $translate('is not resource with ID')); ?>
<?php echo $queryOption('ex', $property, 'type', $translate('has any value')); ?>
<?php echo $queryOption('nex', $property, 'type', $translate('has no values')); ?>
</select>
<?php echo $queryText($property, $index); ?>
<div class="input-group-button remove-value">
<button type="button" class="o-icon-delete button" aria-label="<?php echo $translate('Remove value'); ?>" title="<?php echo $translate('Remove value'); ?>"></button>
</div>
</div>
<?php
$index++;
endforeach;
?>
</div>
<a href="#" class="add-value button"><?php echo $translate('Add new value'); ?></a>
</fieldset>
</div>

View File

@ -0,0 +1,33 @@
<?php
$translate = $this->plugin('translate');
// Prepare the resource class query.
$ids = isset($query['resource_class_id']) ? $query['resource_class_id'] : [];
if (!is_array($ids)) {
$ids = [$ids];
}
$ids = array_filter($ids);
if (!$ids) {
$ids = [null];
}
?>
<div id="resource-class" class="field removable multi-value" role="group">
<fieldset class="fieldset">
<legend id="by-resource-class-label"><?php echo $translate('Search by class'); ?></legend>
<div class="help-text"><?php echo $translate('Searches for items that are any of these classes.'); ?></div>
<div class="inputs">
<?php foreach ($ids as $id): ?>
<div class="value">
<?php echo $this->resourceClassSelect([
'name' => 'resource_class_id[]',
'attributes' => [
'value' => $id,
'aria-labelledby' => 'by-resource-class-label'
],
]); ?>
<button type="button" class="o-icon-delete remove-value button" aria-label="<?php echo $translate('Remove value'); ?>" title="<?php echo $translate('Remove value'); ?>"></button>
</div>
<?php endforeach; ?>
</div>
<a href="#" class="add-value button"><?php echo $translate('Add new class'); ?></a>
</fieldset>
</div>

View File

@ -0,0 +1,67 @@
<?php
$this->headScript()->appendFile($this->assetUrl('js/browse.js'));
$translate = $this->plugin('translate');
$layoutSetting = $this->themeSetting('browse_layout');
$gridState = ($layoutSetting == 'togglegrid') ? 'disabled' : '';
$listState = ($layoutSetting == 'togglelist') ? 'disabled': '';
$currentLayout = (!isset($layoutSetting) || strpos($layoutSetting, 'grid') !== false) ? 'grid' : 'list';
$isGrid = ($currentLayout == 'grid') ? true : false;
$queryUrl = $this->url(
'site/resource', ['controller' => $this->resourceType, 'action' => 'browse'], ['query' => $this->query], true
);
?>
<div class="preview-block">
<?php if ($this->heading): ?>
<div class="preview-header">
<h3><?php echo $this->hyperlink($this->heading, $queryUrl); ?></h3>
<?php
if ($this->linkText):
echo $this->hyperlink($this->linkText, $queryUrl);
endif;
?>
</div>
<?php endif; ?>
<?php if (strpos($layoutSetting, 'toggle') !== false): ?>
<div class="browse-controls">
<div class="layout-toggle">
<button type="button" aria-label="<?php echo $translate('Grid'); ?>" class="grid o-icon-grid" <?php echo $gridState; ?>></button>
<button type="button" aria-label="<?php echo $translate('List'); ?>" class="list o-icon-list" <?php echo $listState; ?>></button>
</div>
</div>
<?php endif; ?>
<ul class="resources <?php echo ($isGrid) ? 'resource-grid' : 'resource-list'; ?>">
<?php
$headingTerm = $this->siteSetting('browse_heading_property_term');
$bodyTerm = $this->siteSetting('browse_body_property_term');
foreach ($this->resources as $resource):
$heading = $headingTerm ? $resource->value($headingTerm, ['default' => $translate('[Untitled]')]) : $resource->displayTitle();
$body = $bodyTerm ? $resource->value($bodyTerm) : $resource->displayDescription();
?>
<li class="<?php echo $this->resourceType; ?> resource <?php echo ($isGrid) ? '' : 'media-object'; ?>">
<?php if ($thumbnail = $this->thumbnail($resource, 'medium')): ?>
<div class="resource-image <?php echo ($isGrid) ? '' : 'media-object-section'; ?>">
<?php echo $resource->linkRaw($thumbnail, null, ['class' => 'thumbnail']); ?>
</div>
<?php endif; ?>
<div class="resource-meta <?php echo ($isGrid) ? '' : 'media-object-section'; ?>">
<h4><?php echo $resource->link($heading); ?></h4>
<?php if ($body): ?>
<div class="description"><?php echo $body; ?></div>
<?php endif; ?>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php
if ($this->linkText && !$this->heading):
echo $this->hyperlink($this->linkText, $queryUrl);
endif;
?>
</div>

View File

@ -0,0 +1,18 @@
<?php $container = $this->navigation()->breadcrumbs() ?>
<?php $navigation = $container->getContainer() ?>
<ul class="breadcrumbs">
<?php foreach($this->pages as $page): ?>
<?php if( ! $page->isActive()): ?>
<li>
<a href="<?php echo $page->getHref() ?>"><?php echo $page->getLabel() ?></a>
</li>
<?php else: ?>
<li class="active">
<?php if($container->getLinkLast()): ?><a href="<?php echo $page->getHref() ?>"><?php endif ?>
<?php echo $page->getLabel() ?>
<?php if($container->getLinkLast()): ?></a><?php endif ?>
</li>
<?php endif ?>
<?php endforeach ?>
</ul>

View File

@ -0,0 +1,76 @@
<?php
/* Based on https://github.com/fabiopaiva/zf2-navigation-bootstrap3 */
/* @var $container Zend\Navigation\Navigation */
$container = $this->container;
$layoutAttributes = [
'dropdown' => 'class="dropdown menu" data-dropdown-menu',
'vertical' => 'class="vertical menu accordion-menu" data-accordion-menu data-submenu-toggle="true"',
]
?>
<ul <?php echo $layoutAttributes[$layout]; ?>>
<?php foreach ($container as $page): ?>
<?php if (!$this->navigation()->accept($page)) continue; ?>
<?php /* @var $page Zend\Navigation\Page\Mvc */ ?>
<?php $hasChildren = $page->hasPages() ?>
<?php $showChildren = $this->themeSetting('nav_show_levels'); ?>
<?php if (!$hasChildren || ($showChildren == 0)): ?>
<li<?php if ($page->isActive()) echo ' class="active"' ?>>
<a
class="nav-header"
href="<?php echo $page->getHref() ?>"
<?php if ($page->getTarget() != ""): ?>
target="<?php echo $page->getTarget(); ?>"
<?php endif; ?>
>
<?php if ($page->get("icon") !== ""): ?>
<span class="<?php echo $page->get("icon"); ?>"></span>
<?php endif; ?>
<?php echo $this->escapeHtml($this->translate($page->getLabel(), $this->navigation($container)->getTranslatorTextDomain())); ?>
</a>
</li>
<?php else: ?>
<?php
//check if access is allowed at least one item
$access = false;
foreach ($page->getPages() as $child) {
if ($this->navigation()->accept($child) && $child->get("separator") !== true) {
$access = true;
}
}
if ($access) :
?>
<li class="dropdown<?php if ($page->isActive(true)) echo ' active' ?>">
<a class="dropdown-toggle" data-toggle="dropdown" href="<?php echo $page->getHref(); ?>">
<?php echo $this->escapeHtml($this->translate($page->getLabel(),$this->navigation($container)->getTranslatorTextDomain())); ?>
<b class="caret"></b>
</a>
<ul class="menu vertical nested">
<?php foreach ($page->getPages() as $child): ?>
<?php if (!$this->navigation()->accept($child)) continue; ?>
<?php if ($child->get("separator") === true): ?>
<li class="divider"></li>
<?php
continue;
endif;
?>
<li<?php if ($child->isActive()) echo ' class="active"' ?>>
<a
href="<?php echo $child->getHref() ?>"
<?php if ($child->getTarget() != ""): ?>
target="<?php echo $child->getTarget(); ?>"
<?php endif; ?> >
<?php if ($child->get("icon") !== ""): ?>
<span class="<?php echo $child->get("icon"); ?>"></span>
<?php endif; ?>
<?php echo $this->escapeHtml($this->translate($child->getLabel(),$this->navigation($container)->getTranslatorTextDomain())); ?>
</a>
</li>
<?php endforeach ?>
</ul>
</li>
<?php endif; ?>
<?php endif ?>
<?php endforeach ?>
</ul>

View File

@ -0,0 +1,18 @@
<div class="top-bar">
<nav class="top-bar-left">
<div class="title-bar" data-responsive-toggle="responsive-menu" data-hide-for="large">
<button class="menu-toggle" type="button" data-toggle="offCanvas" aria-label="<?php echo $this->translate('Menu'); ?>"><i class="fas fa-bars"></i></button>
</div>
<?php if ($this->themeSetting('logo')): ?>
<a href="<?php echo $site->url(); ?>" class="site-title"><img src="<?php echo $this->themeSettingAssetUrl('logo'); ?>" title="Logo"></a>
<?php else: ?>
<a href="<?php echo $site->url(); ?>" class="site-title"><?php echo $this->pageTitle($site->title()); ?></a>
<?php endif; ?>
</nav>
<div class="top-bar-right" id="responsive-menu">
<?php echo $site->publicNav()->menu()->setPartial('common/foundation-navigation.phtml')->renderPartialWithParams(['layout' => 'dropdown']); ?>
<div class="search">
<?php echo $this->partial('common/search-form'); ?>
</div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<?php if ($this->themeSetting('logo')): ?>
<?php $titleLink = '<a href="' . $site->url() . '" class="site-title"><img src="' . $this->themeSettingAssetUrl('logo') . '" title="Logo"></a>'; ?>
<?php else: ?>
<?php $titleLink = '<a href="' . $site->url() . '" class="site-title">' . $this->pageTitle($site->title()) . '</a>'; ?>
<?php endif; ?>
<div class="title-bar" data-responsive-toggle="responsive-menu" data-hide-for="large">
<button class="menu-toggle" type="button" data-toggle="offCanvas" aria-label="<?php echo $this->translate('Menu'); ?>"><i class="fas fa-bars"></i></button>
<?php echo $titleLink; ?>
</div>
<div class="desktop">
<?php echo $titleLink; ?>
<?php echo $site->publicNav()->menu()->setPartial('common/foundation-navigation.phtml')->renderPartialWithParams(['layout' => 'vertical']); ?>
<div class="search">
<?php echo $this->partial('common/search-form'); ?>
</div>
</div>

View File

@ -0,0 +1,34 @@
<?php
$translate = $this->plugin('translate');
?>
<nav class="omeka-pagination" role="navigation">
<?php if ($totalCount): ?>
<form method="GET" action="">
<?php echo $this->queryToHiddenInputs(['page']); ?>
<input type="text" name="page" class="page-input-top" value="<?php echo $currentPage; ?>" size="4" <?php echo ($pageCount == 1) ? 'readonly' : ''; ?> aria-label="<?php echo $translate('Page'); ?>">
<span class="page-count"><?php echo sprintf($translate('of %s'), $pageCount); ?></span>
</form>
<div class="button-group">
<?php if ($currentPage != 1): ?>
<?php echo $this->hyperlink('', $previousPageUrl, ['class' => 'previous o-icon-prev button', 'title' => $translate('Previous'), 'aria-label' => $translate('Previous')]); ?>
<?php else: ?>
<span class="previous o-icon-prev button inactive"></span>
<?php endif; ?>
<?php if ($currentPage < $pageCount): ?>
<?php echo $this->hyperlink('', $nextPageUrl, ['class' => 'next o-icon-next button', 'title' => $translate('Next'), 'aria-label' => $translate('Next')]); ?>
<?php else: ?>
<span class="next o-icon-next button inactive"></span>
<?php endif; ?>
</div>
<?php
$from = $offset + 1;
$to = ($currentPage < $pageCount) ? $offset + $perPage : $totalCount;
?>
<span class="row-count"><?php echo sprintf($translate('%1$s%2$s of %3$s'), $from, $to, $totalCount); ?></span>
<?php else: ?>
<?php echo $translate('0 results'); ?>
<?php endif; ?>
</nav>

View File

@ -0,0 +1,46 @@
<?php
$translate = $this->plugin('translate');
$escape = $this->plugin('escapeHtml');
$labelInfo = $this->setting('property_label_information');
?>
<dl>
<?php foreach ($values as $term => $propertyData): ?>
<div class="property">
<dt>
<?php if ($propertyData['alternate_label']): ?>
<?php echo $escape($propertyData['alternate_label']); ?>
<?php else: ?>
<?php echo $escape($translate($propertyData['property']->label())); ?>
<?php endif; ?>
<?php if ('term' === $labelInfo): ?>
<span class="field-term">(<?php echo $escape($propertyData['property']->term()); ?>)</span>
<?php elseif ('vocab' === $labelInfo): ?>
<span class="field-term">(<?php echo $escape($propertyData['property']->vocabulary()->label()); ?>)</span>
<?php endif; ?>
</dt>
<div class="values">
<?php foreach ($propertyData['values'] as $value): ?>
<?php
$valueType = $value->type();
$class = ['value'];
if ('resource' == $valueType || strpos($valueType, 'resource') !== false) {
$class[] = 'resource';
$class[] = $escape($value->valueResource()->resourceName());
} elseif ('uri' == $valueType) {
$class[] = 'uri';
}
if (!$value->isPublic()) {
$class[] = 'private';
}
?>
<dl class="<?php echo implode(' ', $class); ?>" lang="<?php echo $escape($value->lang()); ?>">
<?php if ($language = $value->lang()): ?>
<span class="language"><?php echo $language; ?></span>
<?php endif; ?>
<?php echo $value->asHtml(); ?>
</dl>
<?php endforeach; ?>
</div>
</div>
<?php endforeach; ?>
</dl>

View File

@ -0,0 +1,22 @@
<?php
$translate = $this->plugin('translate');
$searchType = $this->siteSetting('search_type', 'sitewide');
switch ($searchType) {
case 'cross-site':
$searchAction = $this->url('site/cross-site-search', ['action' => 'results'], true);
break;
case 'sitewide':
default:
$searchAction = $this->url('site/resource', ['controller' => 'index', 'action' => 'search'], true);
}
$searchValue = $this->escapeHtml($this->params()->fromQuery('fulltext_search', ''));
?>
<form action="<?php echo $this->escapeHtml($searchAction); ?>" id="search-form" class="input-group">
<input type="text" name="fulltext_search" value="<?php echo $searchValue; ?>"
placeholder="<?php echo $translate('Search'); ?>"
aria-label="<?php echo $translate('Search'); ?>" class="input-group-field">
<div class="input-group-button">
<button type="submit" class="button"><?php echo $translate('Search'); ?></button>
</div>
</form>

View File

@ -0,0 +1,18 @@
<?php
$translate = $this->plugin('translate');
$escape = $this->plugin('escapeHtml');
?>
<form class="sorting" action="">
<?php echo $this->queryToHiddenInputs(['sort_by', 'sort_order']); ?>
<select name="sort_by" aria-label="<?php echo $translate('Sort by'); ?>">
<?php foreach($sortBy as $sortByHeading): ?>
<?php $selected = ($sortByQuery === $sortByHeading['value']) ? 'selected' : ''; ?>
<option value="<?php echo $escape($sortByHeading['value']); ?>" <?php echo $selected; ?>><?php echo $sortByHeading['label']; ?></option>
<?php endforeach; ?>
</select>
<select name="sort_order" aria-label="<?php echo $translate('Sort order'); ?>">
<option value="asc" <?php echo ($sortOrderQuery === 'asc') ? 'selected' : ''; ?>><?php echo $translate('Ascending'); ?></option>
<option value="desc" <?php echo ($sortOrderQuery === 'desc') ? 'selected' : ''; ?>><?php echo $translate('Descending'); ?></option>
</select>
<button class="button" type="submit"><?php echo $translate('Sort'); ?></button>
</form>

78
view/layout/layout.phtml Normal file
View File

@ -0,0 +1,78 @@
<?php
$escape = $this->plugin('escapeHtml');
$stylesheet = $this->themeSetting('stylesheet');
$this->htmlElement('html')->setAttribute('lang', $this->lang());
$this->headMeta()->setCharset('utf-8');
$this->headMeta()->appendName('viewport', 'width=device-width, initial-scale=1');
$this->headTitle($this->setting('installation_title', 'Omeka S'))->setSeparator(' · ');
if (isset($stylesheet)) {
$this->headLink()->prependStylesheet($this->assetUrl("css/$stylesheet.css"));
} else {
$this->headLink()->prependStylesheet($this->assetUrl('css/default.css'));
}
$this->headLink()->prependStylesheet($this->assetUrl('css/iconfonts.css', 'Omeka'));
$this->headScript()->prependFile('//cdn.jsdelivr.net/npm/foundation-sites@6.5.3/dist/js/foundation.min.js', 'text/javascript', [
'integrity' => 'sha256-/PFxCnsMh+nTuM0k3VJCRch1gwnCfKjaP8rJNq5SoBg= sha384-9ksAFjQjZnpqt6VtpjMjlp2S0qrGbcwF/rvrLUg2vciMhwc1UJJeAAOLuJ96w+Nj sha512-UMSn6RHqqJeJcIfV1eS2tPKCjzaHkU/KqgAnQ7Nzn0mLicFxaVhm9vq7zG5+0LALt15j1ljlg8Fp9PT1VGNmDw==',
'crossorigin' => 'anonymous'
]);
$this->headScript()->prependFile($this->assetUrl('js/global.js', 'Omeka'));
$this->headScript()->prependFile($this->assetUrl('vendor/jquery/jquery.min.js', 'Omeka'));
$this->trigger('view.layout');
$title = $this->pageTitle($site->title());
$userBar = $this->userBar();
$navLayout = ($this->themeSetting('nav_layout')) ? $this->themeSetting('nav_layout') : 'dropdown';
$this->htmlElement('body')->appendAttribute('class', $navLayout . '-menu');
if ($userBar) {
$this->htmlElement('body')->appendAttribute('class', 'user-bar');
}
$logo = $this->themeSettingAssetUrl('logo');
if ($logo):
$title = '<img src="' . $this->escapeHtml($logo) . '">';
endif;
?>
<?php echo $this->doctype(); ?>
<?php echo $this->htmlElement('html'); ?>
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headStyle(); ?>
<?php echo $this->headScript(); ?>
</head>
<?php echo $this->htmlElement('body'); ?>
<div id="offCanvas" class="off-canvas position-left" data-off-canvas>
<?php echo $site->publicNav()->menu()->setPartial('common/foundation-navigation.phtml')->renderPartialWithParams(['layout' => 'vertical']); ?>
<div class="search">
<?php echo $this->partial('common/search-form'); ?>
</div>
</div>
<div class="off-canvas-content" data-off-canvas-content>
<a id="skipnav" href="#content"><?php echo $this->translate('Skip to main content'); ?></a>
<?php echo $userBar; ?>
<header>
<?php if ($navLayout == 'vertical'): ?>
<?php echo $this->partial('common/header-vertical'); ?>
<?php else: ?>
<?php echo $this->partial('common/header-dropdown'); ?>
<?php endif; ?>
</header>
<div id="content" role="main">
<?php echo $this->content; ?>
</div>
<footer>
<?php if ($footerContent = $this->themeSetting('footer')): ?>
<?php echo $footerContent; ?>
<?php else: ?>
<?php echo $this->translate('Powered by Omeka S'); ?>
<?php endif; ?>
</footer>
</div>
<script>
$(document).foundation();
</script>
</body>
</html>

View File

@ -0,0 +1,57 @@
<?php
$translate = $this->plugin('translate');
$escape = $this->plugin('escapeHtml');
$this->headScript()->appendFile($this->assetUrl('js/browse.js'));
$layoutSetting = $this->themeSetting('browse_layout');
$gridState = ($layoutSetting == 'togglegrid') ? 'disabled' : '';
$listState = ($layoutSetting == 'togglelist') ? 'disabled': '';
$isGrid = (!isset($layoutSetting) || strpos($layoutSetting, 'grid') !== false) ? true : false;
$headingTerm = $this->siteSetting('browse_heading_property_term');
$bodyTerm = $this->siteSetting('browse_body_property_term');
$bodyTruncate = $this->themeSetting('truncate_body_property');
$this->htmlElement('body')->appendAttribute('class', 'item-set resource browse');
?>
<?php echo $this->pageTitle($translate('Item sets'), 2); ?>
<?php echo $this->searchFilters(); ?>
<?php echo $this->searchFilters(); ?>
<div class="browse-control-mobile">
<button type="button" class="browse-toggle closed">Tools</button>
</div>
<div class="browse-controls closed">
<?php echo $this->pagination(); ?>
<?php if (strpos($layoutSetting, 'toggle') !== false): ?>
<div class="layout-toggle">
<button type="button" aria-label="<?php echo $translate('Grid'); ?>" class="grid o-icon-grid" <?php echo $gridState; ?>></button>
<button type="button" aria-label="<?php echo $translate('List'); ?>" class="list o-icon-list" <?php echo $listState; ?>></button>
</div>
<?php endif; ?>
</div>
<?php $this->trigger('view.browse.before'); ?>
<ul class="resources <?php echo ($isGrid) ? 'resource-grid' : 'resource-list'; ?>">
<?php
foreach ($itemSets as $itemSet):
$heading = $headingTerm ? $itemSet->value($headingTerm, ['default' => $translate('[Untitled]')]) : $itemSet->displayTitle();
$body = $bodyTerm ? $itemSet->value($bodyTerm) : $itemSet->displayDescription();
?>
<li class="item-set resource <?php echo ($isGrid) ? '' : 'media-object'; ?>">
<?php if ($thumbnail = $this->thumbnail($itemSet, 'medium')): ?>
<div class="resource-image <?php echo ($isGrid) ? '' : 'media-object-section'; ?>">
<?php echo $itemSet->linkRaw($thumbnail, null, ['class' => 'thumbnail']); ?>
</div>
<?php endif; ?>
<div class="resource-meta <?php echo ($isGrid) ? '' : 'media-object-section'; ?>">
<h4><?php echo $itemSet->link($heading); ?></h4>
<?php if ($body): ?>
<div class="description <?php echo ($bodyTruncate) ? $bodyTruncate : ''; ?>"><?php echo $body; ?></div>
<?php endif; ?>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php $this->trigger('view.browse.after'); ?>
<?php echo $this->pagination(); ?>

View File

@ -0,0 +1,97 @@
<?php
$translate = $this->plugin('translate');
$escape = $this->plugin('escapeHtml');
$this->headScript()->appendFile($this->assetUrl('js/browse.js'));
$this->htmlElement('body')->appendAttribute('class', 'item resource browse');
$query = $this->params()->fromQuery();
$itemSetShow = isset($itemSet);
if ($itemSetShow):
$this->htmlElement('body')->appendAttribute('class', 'item-set');
$query['item_set_id'] = $itemSet->id();
endif;
$layoutSetting = $this->themeSetting('browse_layout');
$gridState = ($layoutSetting == 'togglegrid') ? 'disabled' : '';
$listState = ($layoutSetting == 'togglelist') ? 'disabled': '';
$isGrid = (!isset($layoutSetting) || strpos($layoutSetting, 'grid') !== false) ? true : false;
$headingTerm = $this->siteSetting('browse_heading_property_term');
$bodyTerm = $this->siteSetting('browse_body_property_term');
$bodyTruncate = $this->themeSetting('truncate_body_property');
$sortHeadings = [
[
'label' => $translate('Title'),
'value' => 'dcterms:title'
],
[
'label' => $translate('Identifier'),
'value' => 'dcterms:identifier'
],
[
'label' => $translate('Class'),
'value' => 'resource_class_label'
],
[
'label' => $translate('Created'),
'value' => 'created'
],
];
?>
<?php if ($itemSetShow): ?>
<?php echo $this->pageTitle($itemSet->displayTitle(), 2); ?>
<h3><?php echo $translate('Item set'); ?></h3>
<div class="metadata">
<?php echo $itemSet->displayValues(); ?>
</div>
<div class="item-set-items">
<?php echo '<h3>' . $escape($translate('Items')) . '</h3>'; ?>
<?php else: ?>
<?php echo $this->pageTitle($translate('Items'), 2); ?>
<?php endif; ?>
<?php echo $this->searchFilters(); ?>
<div class="browse-control-mobile">
<button type="button" class="browse-toggle closed">Tools</button>
</div>
<div class="browse-controls closed">
<?php echo $this->pagination(); ?>
<?php if (strpos($layoutSetting, 'toggle') !== false): ?>
<div class="layout-toggle">
<button type="button" aria-label="<?php echo $translate('Grid'); ?>" class="grid o-icon-grid" <?php echo $gridState; ?>></button>
<button type="button" aria-label="<?php echo $translate('List'); ?>" class="list o-icon-list" <?php echo $listState; ?>></button>
</div>
<?php endif; ?>
<?php echo $this->hyperlink($translate('Advanced search'), $this->url('site/resource', ['controller' => 'item', 'action' => 'search'], ['query' => $query], true), ['class' => 'advanced-search']); ?>
<?php echo $this->sortSelector($sortHeadings); ?>
</div>
<?php $this->trigger('view.browse.before'); ?>
<ul class="resources <?php echo ($isGrid) ? 'resource-grid' : 'resource-list'; ?>">
<?php
foreach ($items as $item):
$heading = $headingTerm ? $item->value($headingTerm, ['default' => $translate('[Untitled]')]) : $item->displayTitle();
$body = $bodyTerm ? $item->value($bodyTerm) : $item->displayDescription();
?>
<li class="item resource <?php echo ($isGrid) ? '' : 'media-object'; ?>">
<?php if ($thumbnail = $this->thumbnail($item, 'medium')): ?>
<div class="resource-image <?php echo ($isGrid) ? '' : 'media-object-section'; ?>">
<?php echo $item->linkRaw($thumbnail, null, ['class' => 'thumbnail']); ?>
</div>
<?php endif; ?>
<div class="resource-meta <?php echo ($isGrid) ? '' : 'media-object-section'; ?>">
<h4><?php echo $item->link($heading); ?></h4>
<?php if ($body): ?>
<div class="description <?php echo ($bodyTruncate) ? $bodyTruncate : ''; ?>"><?php echo $body; ?></div>
<?php endif; ?>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php echo ($itemSetShow) ? '</div>' : ''; ?>
<?php $this->trigger('view.browse.after'); ?>
<div class="browse-controls">
<?php echo $this->pagination(); ?>
</div>

View File

@ -0,0 +1,65 @@
<?php
$translate = $this->plugin('translate');
$escape = $this->plugin('escapeHtml');
$this->htmlElement('body')->appendAttribute('class', 'item resource show');
$embedMedia = $this->siteSetting('item_media_embed', false);
$itemMedia = $item->media();
$showLayout = $this->themeSetting('show_layout');
?>
<div class="resource-title">
<?php echo $this->pageTitle($item->displayTitle(), 2); ?>
<h3 class="label"><?php echo $translate('Item'); ?></h3>
</div>
<div class="grid-x">
<?php if ($embedMedia && $itemMedia): ?>
<div class="media-embeds">
<?php foreach ($itemMedia as $media):
echo $media->render();
endforeach;
?>
</div>
<?php endif; ?>
<?php if (!$embedMedia && $itemMedia): ?>
<div class="media-list">
<?php foreach ($itemMedia as $media): ?>
<?php echo $media->linkPretty(); ?>
<?php endforeach; ?>
</div>
<?php endif; ?>
<div id="resource-values" class="<?php echo ($showLayout == 'inline') ? 'inline' : 'stack'; ?>">
<?php $this->trigger('view.show.before'); ?>
<?php echo $item->displayValues(); ?>
<?php $itemSets = $item->itemSets(); ?>
<dl>
<?php if (count($itemSets) > 0): ?>
<div class="property">
<dt><?php echo $translate('Item sets'); ?></dt>
<div class="values">
<?php foreach ($itemSets as $itemSet): ?>
<dd class="value"><a href="<?php echo $escape($itemSet->url()); ?>"><?php echo $itemSet->displayTitle(); ?></a></dd>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
</dl>
<?php
$page = $this->params()->fromQuery('page', 1);
$property = $this->params()->fromQuery('property');
$subjectValues = $item->displaySubjectValues($page, 25, $property);
?>
<?php if ($subjectValues): ?>
<div id="item-linked">
<h3><?php echo $translate('Linked resources'); ?></h3>
<?php echo $subjectValues; ?>
</div>
<?php endif; ?>
<?php $this->trigger('view.show.after'); ?>
</div>
</div>

View File

@ -0,0 +1,13 @@
<?php
$translate = $this->plugin('translate');
?>
<?php $this->htmlElement('body')->appendAttribute('class', 'media resource show'); ?>
<div class="resource-title">
<?php echo $this->pageTitle($media->displayTitle(), 2); ?>
<h3 class="label"><?php echo $translate('Media'); ?></h3>
</div>
<?php $this->trigger('view.show.before'); ?>
<?php echo $media->render(); ?>
<?php echo $media->displayValues(); ?>
<?php $this->trigger('view.show.after'); ?>

View File

@ -0,0 +1,38 @@
<?php
$this->htmlElement('body')->appendAttribute('class', 'page ' . $page->slug());
$this->pageTitle($page->title(), 2);
$showPagePagination = $this->siteSetting('show_page_pagination', true);
?>
<?php
$nav = $site->publicNav();
$container = $nav->getContainer();
$activePage = $nav->findActive($container);
if ($activePage):
?>
<?php if ($activePage['depth'] !== 0): ?>
<nav class="breadcrumbs"><?php echo $nav->breadcrumbs()->setPartial('common/foundation-breadcrumbs'); ?></nav>
<?php endif; ?>
<?php endif; ?>
<?php if ($activePage): ?>
<?php if ($this->displayNavigation && $activePage['page']->hasPages()): ?>
<nav class="sub-menu wide" data-sticky-container>
<div class="sticky" data-sticky data-anchor="blocks">
<?php echo $nav->menu()->setUlClass('vertical menu')->renderSubMenu(); ?>
</div>
</nav>
<?php endif; ?>
<?php endif; ?>
<?php $this->trigger('view.show.before'); ?>
<div id="blocks" class="blocks">
<?php echo $this->content; ?>
</div>
<?php $this->trigger('view.show.after'); ?>
<?php if ($showPagePagination): ?>
<?php echo $this->sitePagePagination(); ?>
<?php endif; ?>