Commit Graph

246 Commits

Author SHA1 Message Date
Andy Heathershaw
88c687a3d1 #38, #39: EXIF data is now stored base64-encoded in the database to prevent issues with raw characters coming off some cameras. EXIF data is no longer replaced on analysis - allowing rotated images to maintain the data. 2017-09-16 12:49:34 +01:00
Andy Heathershaw
48f43b3c04 #38: Made a few tweaks to the analysis function that doesn't delete the photo if it was previously analysed (i.e. it has a metadata version). Also if the original image contained Exif data (e.g. camera make), we no longer remove it if the re-analysed image doesn't (see #39) 2017-09-16 09:02:25 +01:00
Andy Heathershaw
0b64728d0a First batch of changes for #38 to allow photo metadata updates 2017-09-16 08:26:05 +01:00
Andy Heathershaw
69a7a4e0ab #31: Added a new item on the image edit menu - "Replace image" - which allows an image to be replaced without losing the meta-data 2017-09-12 21:41:47 +01:00
Andy Heathershaw
7bfc829931 #32: Added next/previous buttons to the individual photo page 2017-09-12 20:54:29 +01:00
Andy Heathershaw
9b13120c41 #6: Updated the mailing config to use Markdown. Converted the current e-mail templates to Markdown. 2017-09-12 20:23:48 +01:00
Andy Heathershaw
44aa70d59a Slight tweak to the login/cancel links on smaller forms 2017-09-10 21:33:13 +01:00
Andy Heathershaw
3533c978a5 #2: Moved the quick-upload icon into the normal navbar as it caused the navbar to wrap on mobile devices 2017-09-10 21:27:40 +01:00
Andy Heathershaw
1af9f2658a Individual pages now pick up a layout from the theme, if available, instead of always picking up the base one 2017-09-10 21:12:57 +01:00
Andy Heathershaw
b7285888cf #3: Merged the two photo charts into one and added a "number at-a-glance" widget on the statistics page 2017-09-10 17:02:15 +01:00
Andy Heathershaw
c2e9fe617b #2: Added a loading animation to the quick-post/upload function whilst uploading 2017-09-10 15:46:16 +01:00
Andy Heathershaw
fee2841910 #2: Added an intermediate step to the quick-post/upload feature that validates the request 2017-09-10 15:25:59 +01:00
Andy Heathershaw
544d3c5153 #2: Basic implementation of the quick-upload/quick-post feature 2017-09-10 15:10:45 +01:00
Andy Heathershaw
d9d43e9c29 #29: Number of improvements to Labels to show the count and thumbnail correctly based on the allowed albums 2017-09-10 14:01:20 +01:00
Andy Heathershaw
3254ca1500 #29: Added a new /labels endpoint to display labels and a preview of their photos 2017-09-10 13:21:45 +01:00
Andy Heathershaw
f46d9e1101 #29: Album permissions are now checked when retrieving photos linked with a label. Labels are displayed in the gallery with their own views. 2017-09-10 11:24:44 +01:00
Andy Heathershaw
818d4c39d2 #29: Added Selectize to allow labels to be assigned to photos, which is now working. 2017-09-10 10:24:15 +01:00
Andy Heathershaw
6280766d70 #29: Labels can now be added and managed through the admin panel 2017-09-10 09:07:56 +01:00
Andy Heathershaw
aa99d76ae5 Merge remote-tracking branch 'origin/feature/3-analytics-dashboard' into feature/29-label-photos 2017-09-10 07:51:10 +01:00
Andy Heathershaw
4ccd665920 #28, #30: Fixed the breadcrumb on the individual photo page 2017-09-10 07:27:56 +01:00
Andy Heathershaw
7f27921cf7 #3: Implemented the majority of the public facing charts I'd envisaged 2017-09-06 22:00:12 +01:00
Andy Heathershaw
f5a269d634 #3: Added a quick and simple pie chart of cameras used in the gallery. Added an image to the "Albums" menu item. 2017-09-06 16:08:38 +01:00
Andy Heathershaw
34b2ff6ea4 #25: Updated the installer to work with a brand-new system with just PHP installed. Changed the way the base URL is determined to work with systems that have to access the app using /public. 2017-09-06 10:33:22 +01:00
Andy Heathershaw
a459bc002a #23: Multi-lines in album descriptions are now displayed correctly 2017-09-04 21:05:35 +01:00
Andy Heathershaw
86954effbf #14: Bulk update now directs back to the page you're currently on 2017-09-04 20:56:30 +01:00
Andy Heathershaw
b138af2199 #12: Added a checkbox when editing an album to create a redirect if the parent album changes. Added validation to the create redirect form 2017-09-04 20:37:42 +01:00
Andy Heathershaw
56deb6838a #22: Changed date on the photo card on the default gallery display to use the app's date format setting 2017-09-04 20:16:36 +01:00
Andy Heathershaw
f9bc890de0 #12: Added the ability to add and remove redirects from the album's admin page (Redirects tab) 2017-09-04 17:23:31 +01:00
Andy Heathershaw
2f1cbfc16c #11: URL aliases used by albums are now updated when the parent is changed. Added a warning to the Edit page that this may break links. 2017-09-03 08:40:39 +01:00
Andy Heathershaw
89d9c31ba8 #16: Added a tab to the album admin screen to display a list of cameras used in that album 2017-09-03 08:31:31 +01:00
Andy Heathershaw
20d6264777 Merge remote-tracking branch 'origin/master' 2017-09-03 07:48:30 +01:00
Andy Heathershaw
5b6dac7d40 #13: Couple more fixes for BS4: tabs hiding text in xs/sm devices, analysis page card layout 2017-09-03 07:48:21 +01:00
Andy Heathershaw
bf8513cce8 #13: Fixed the hamburger menu to work with BS4 2017-09-01 15:20:01 +01:00
Andy Heathershaw
78608eebbc #13: Lots more adjustments to layouts for Bootstrap 4 and general tidying of HTML code on the Gallery side of things 2017-09-01 14:52:06 +01:00
Andy Heathershaw
21ee5df5e2 #13: Lots of updates to Bootstrap classes etc. 2017-08-31 17:20:58 +01:00
Andy Heathershaw
b99f91ee34 #9: Removed attribute that was causing problems with bulk-select 2017-08-30 22:22:44 +01:00
Andy Heathershaw
396bcb6c6d #13: Upgraded Bootstrap to 4.0.0-beta. Added PopperJS which is now a dependency of BS4. Started updating the view files where Grid offsets were used (and are no longer supported in BS4.) 2017-08-30 22:09:30 +01:00
Andy Heathershaw
6d11f1c0f0 #24: Added Bootstrap v4 pager template 2017-04-19 08:52:05 +01:00
Andy Heathershaw
b5769ec192 Number of small changes, including the rename of the Bootstrap 3 theme to Default 2017-04-18 20:07:03 +01:00
Andy Heathershaw
336e94e8e3 #20: Numerous visual improvements, plus converting the slideshow to VueJS. Also re-enabled the user autocomplete 2017-04-18 17:25:27 +01:00
Andy Heathershaw
aef3dfbdeb #21: Bulk upload now works with the VueJS model 2017-04-17 22:03:01 +01:00
Andy Heathershaw
94b2a9d1b6 #4: Child album count is now included when using the Album::children() method. Child albums are now displayed in the gallery 2017-04-17 21:53:47 +01:00
Andy Heathershaw
a26f9c1c1f #4: Added a framework for manipulating data during system updates. Full URL path to an album is now saved in the database. Fall-back routes are now mapped by the first segment - a = album, p = photo, i = image 2017-04-17 21:31:45 +01:00
Andy Heathershaw
7ea1dc5c83 #4: Nested albums are now supported in the admin panel 2017-04-17 17:11:59 +01:00
Andy Heathershaw
e93e4d2413 #15: Expanded the hit tracking to include basic information like IP address, user agent, album/photo/user and the album/photo view being accessed. Added a config option to disable the visitor tracking, and a new tab called Analytics in the settings album. Also added links to Cookie Consent. 2017-04-17 15:45:25 +01:00
Andy Heathershaw
d2d6c5a465 #11: Corrected text of the "allow self-registration" textbox to remove the reference to commenting on photos, as that functionality doesn't exist as yet 2017-04-16 09:55:37 +01:00
Andy Heathershaw
a1bcb5b6cf #3: Fixed a security issue where a user could move photos into an album they aren't allowed to upload photos into. Fixed the Select All|Select None links in the permissions drop-down 2017-04-16 09:50:40 +01:00
Andy Heathershaw
2d8ba9da16 #3: Permissions can now be set on what users can do with photos in an album. This required re-thinking the available permissions slightly. Photo owners can do anything. 2017-04-16 09:00:57 +01:00
Andy Heathershaw
aa8089f75c #3: Hide the internal links to groups and users if the appropriate permissions are not present 2017-04-15 10:50:22 +01:00
Andy Heathershaw
8473eb4a05 #3: Implemented admin security for groups, users and storage locations 2017-04-15 09:58:33 +01:00
Andy Heathershaw
2ef01cc23c #3: It's now possible to restrict access to the admin panel, managing albums and settings functions by user group 2017-04-15 09:41:15 +01:00
Andy Heathershaw
045935c554 #3: Implemented security when viewing an album and its photos 2017-04-15 08:36:17 +01:00
Andy Heathershaw
33275a8733 #3: Removed the dynamic-ness of the album permissions so I have more control over the layout 2017-04-14 10:23:47 +01:00
Andy Heathershaw
ac2a24187d #9, #12: Change password is now working. Updated the default album view to Bootstrap v4's cards. 2017-04-11 18:31:56 +01:00
Andy Heathershaw
e1b80ae096 #12: Added a page for the current user to change their password - still needs hooking up to the controller 2017-04-10 21:04:10 +01:00
Andy Heathershaw
2c7dba6728 #9, #11: Forgot/reset password screens updated to Bootstrap v4. Added confirmation messages to reset password flow. Corrected the text of the "test e-mail" function and localised the strings used. 2017-04-10 20:48:47 +01:00
Andy Heathershaw
ce1c82b275 #9, #8: Photos can now be amended again through the "show album" page. Added Tether for Bootstrap v4 tooltip support. 2017-04-10 17:29:45 +01:00
Andy Heathershaw
3c2d50f373 #9: Started working on converting the analysis and album screens to Bootstrap v4 2017-04-09 09:07:18 +01:00
Andy Heathershaw
c1740be802 #9: The progress bar when uploading is now working correctly. The delete album screen has been updated to Bootstrap v4. Alerts are now dismissable. 2017-04-08 09:41:41 +01:00
Andy Heathershaw
8b9e8f0229 #9: Single-file album upload is now working with Bootstrap v4 2017-03-31 22:05:57 +01:00
Andy Heathershaw
8201f1df8b #9: Started updating the "show album" page (easily the most complex in the application!) to use Bootstrap 4 and VueJS. 2017-03-27 14:04:09 +01:00
Andy Heathershaw
00328c7ba2 #9: Users management section now works with Bootstrap v4 2017-03-26 21:29:10 +01:00
Andy Heathershaw
d15ff4ec6f #9: Groups now uses the new Bootstrap v4 look 2017-03-25 21:21:22 +00:00
Andy Heathershaw
83ba49568e #9: Storage locations is now fully up and working with Bootstrap 4 2017-03-25 08:26:35 +00:00
Andy Heathershaw
a588ac2b31 #9: Updated the installer to Bootstrap 4. The "create an account" link no longer appears on the new unified login/register view when the "allow self registration" option is disabled. 2017-03-24 14:43:53 +00:00
Andy Heathershaw
ca65ba8adc #9: Started converting the "create storage" page to Bootstrap v4. Converted to VueJS. 2017-03-23 05:55:14 +00:00
Andy Heathershaw
a86bbee8e3 #9: Updated the settings page to Bootstrap 4 2017-03-23 05:07:38 +00:00
Andy Heathershaw
66d005432c Merge remote-tracking branch 'origin/master' 2017-03-23 04:29:40 +00:00
Andy Heathershaw
dda9f9cbdb #9: Improved the look of the login and register pages, and updated to Bootstrap v4 2017-03-23 04:29:29 +00:00
Andy Heathershaw
5adf3174ce #9: update to the new Bootstrap v4 class 2017-03-22 21:56:03 +00:00
Andy Heathershaw
df96a9093c #9: Updated the admin index page to Bootstrap v4 2017-03-22 21:45:58 +00:00
Andy Heathershaw
4b4b5bfc97 #9: I couldn't really get on with Semantic UI, so upgraded to Bootstrap v4 alpha instead 2017-03-22 16:55:51 +00:00
Andy Heathershaw
983d147dc7 #9: Removed Bootstrap and added Semantic UI instead 2017-03-22 09:25:22 +00:00
Andy Heathershaw
5e9229da16 #3: Added more fine-grained permissions to the album permissions tab ready to implement 2017-03-21 22:18:29 +00:00
Andy Heathershaw
4b405c93c2 #3: Implemented more fine-grained permissions into the admin portal 2017-03-21 22:10:36 +00:00
Andy Heathershaw
fd19c9db55 #3: User permissions can now be specified for an album. Added a new config to the User class that allows users to login and manage albums without needing full admin access 2017-03-21 21:48:55 +00:00
Andy Heathershaw
6be31c9b7e #1: Tab headers in the admin panel are now responsive - hiding the text on xs devices. #3: Added ability to set permissions for anonymous users 2017-02-17 11:38:10 +00:00
Andy Heathershaw
a27cf530f5 #6: Fixed a layout issue with the album footer on the gallery index page 2017-02-17 09:22:54 +00:00
Andy Heathershaw
d33de03ceb #3: Implemented the select all/select none links and added missing files from previous check-in 2017-02-17 08:57:05 +00:00
Andy Heathershaw
78e5d0e3c0 #3 Album permissions can now be allocated to groups 2017-02-16 17:32:01 +00:00
Andy Heathershaw
29e62715c0 #1, #3: Added icons to all the "primary" action buttons. Groups now displays the number of members and links between the users and groups screens directly. Added the number of groups to the admin stats widget. 2017-02-15 09:14:52 +00:00
Andy Heathershaw
4e2e66f2f2 #3: Users can now be assigned to groups 2017-02-14 11:03:58 +00:00
Andy Heathershaw
f70a80ca19 #3: It is now possible to create, edit and delete user groups. 2017-02-13 12:08:16 +00:00
Andy Heathershaw
2dce62014a #1, #2: Added intro titles/messages to the main settings pages. Updated the look of the "Actions" widget to match the "Manage" widget. Changed the URL of the users pages to plural. 2017-02-13 10:36:53 +00:00
Andy Heathershaw
9ed9626e9d [touch: 33] Added support for uploading files to Rackspace. Split out the OpenStack options into a separate template to match the Amazon one. Added validation to the Amazon options. 2016-11-05 09:41:07 +00:00
Andy Heathershaw
35758d338a BLUE-17: added support for S3 cloud storage (including DreamObjects, which uses an S3-compatible API) 2016-11-03 13:33:35 +00:00
Andy Heathershaw
2f65c6085d BLUE-18: implemented a "select all" button on the album admin page, which can also select all items in an album 2016-10-30 19:10:20 +00:00
Andy Heathershaw
5b915f911e BLUE-13: improved the design and handling of the analysis screen. Also fixed bulk uploads to work since the storage changes in 1.1 2016-10-30 18:36:34 +00:00
Andy Heathershaw
21ef4de5c9 BLUE-11: Added another config field to allow an admin to set Google Analytics or other RUM tracking code 2016-10-28 16:07:24 +01:00
Andy Heathershaw
1157446544 BLUE-4: All form validation is now displayed inline with the form. 2016-10-28 14:05:53 +01:00
Andy Heathershaw
640828e244 BLUE-8: The OpenStack driver now works completely with all operations - flip, rotate, refresh thumbnails. It's also possible to move photos between albums across different storage providers. 2016-10-28 12:59:36 +01:00
Andy Heathershaw
aadc39684f BLUE-8: Modified the upload/analysis functionality to work strictly with local files, so only the final results are uploaded to OpenStack, saving on bandwidth 2016-10-28 05:30:57 +01:00
Andy Heathershaw
9141398da8 BLUE-8: new storage locations can be created setting the required OpenStack details 2016-10-28 04:54:38 +01:00
Andy Heathershaw
e7fbdaaa66 BLUE-1: A default local storage location is created on install that cannot be deleted. Storage locations can be made inactive and no new albums can be created against them.
BLUE-3: Validation is now performed on the file path selected.

Tweaks to the storage locations form to display validation errors against the correct fields.
2016-10-27 11:36:37 +01:00
Andy Heathershaw
6e068b928b Updated links to the public website on ah.uk 2016-10-26 14:03:00 +01:00
Andy Heathershaw
d0803b37d9 Added some stock photos (royalty free from pexels.com) for empty albums and to replace the fuel gauge on the main screen. 2016-10-06 16:21:27 +01:00
Andy Heathershaw
1946734b58 resolves #15: switched the order of the dashboard widgets for xs devices. Made the system info table more responsive on xs devices. 2016-10-06 15:27:51 +01:00
Andy Heathershaw
e81dfcd1fd resolves #5: modified the installer to write a flag to the .env file when installed so naughty people can't create admin accounts etc by directly accessing the installer. First version tested fully encoded with SG :) 2016-10-06 15:07:30 +01:00
Andy Heathershaw
3cb9c98035 refs #5: reworked the installation screens to create an identical, unprotected version. Integrated SourceGuardian's license error handling to be more helpful to the end user 2016-10-06 11:30:39 +01:00
Andy Heathershaw
51b03acbcd Added copyright/powered by notices to the footers of all pages. Added a config option to turn it off on the public-facing gallery pages 2016-10-05 16:31:37 +01:00
Andy Heathershaw
36fcb6d765 refs #3: it's now possible to set a default view for an album when a user hasn't requested one. Finished off the "edit album" page in admin. Switched session management to database sessions (much more reliable.) 2016-10-05 14:49:44 +01:00
Andy Heathershaw
58b055e9cd refs #3: implemented multiple independent views for an album and created a slideshow view 2016-10-05 11:49:39 +01:00
Andy Heathershaw
8990c31a5f Finished off refactoring the edit photo operations in the album editor 2016-10-05 05:35:14 +01:00
Andy Heathershaw
0e569562a4 resolves #2: photos can now be moved between albums. Started improving the bulk photo update to use a KnockoutJS view model to remove some of the logic from the view itself. 2016-10-05 05:02:47 +01:00
Andy Heathershaw
fe0b4c2108 refs #6: added the ability to flip photos horizontally, vertically and both 2016-10-03 15:57:58 +01:00
Andy Heathershaw
7783af00b0 #1: User accounts can now be deleted. The current user account cannot be deleted, or have the admin privileges removed. Accounts can now be activated manually. New user accounts passwords are encrypted correctly before being saved. 2016-10-03 14:11:24 +01:00
Andy Heathershaw
1b86fa1e0e User accounts can now be created using the new user management screen. Added cURL as a required PHP extension 2016-10-01 15:24:22 +01:00
Andy Heathershaw
522887aaa2 Storage locations can now be deleted. If no storage location exists when creating an album, user is redirected to the create storage page. 2016-09-28 20:32:19 +01:00
Andy Heathershaw
6635d20ead Storage locations can now be edited. Added the rotate photo left/right to the max post size exclusion list 2016-09-28 20:13:18 +01:00
Andy Heathershaw
48b43c3dd2 Added the ability to create storage locations and set those as the album source when creating a new album 2016-09-24 09:34:08 +01:00
Andy Heathershaw
fde988e359 Implemented a Javascript viewmodel for analysing an album, added checks for if uploads cannot be completed. Implemented handling if POST request is over the max size configured in php.ini 2016-09-24 08:17:51 +01:00
Andy Heathershaw
6be14d385a Rewrote the upload functionality using KnockoutJS. This now allows failed files to be shown to the user to re-upload. 2016-09-22 07:34:18 +01:00
Andy Heathershaw
42fb700c41 Started working on an install experience for the application 2016-09-21 12:10:37 +01:00
Andy Heathershaw
63e341199b Implemented a better multi-file upload for browsers that support it. Started adding support for bulk modifying photos (e.g. rotating) 2016-09-11 09:04:07 +01:00
Andy Heathershaw
08f13b28cb Added hotlink protection and restricting access to the original image to the photo's owner 2016-09-11 07:19:11 +01:00
Andy Heathershaw
3ed309ec01 Added a new option for albums - private albums. These are only visible (and accessible) to owners. 2016-09-09 16:59:13 +01:00
Andy Heathershaw
d8859848f3 Mobile devices (xs) now go back to displaying one photo/album per-row following the recent fixes to portrait thumbnail generation 2016-09-09 15:42:29 +01:00
Andy Heathershaw
3af7708933 Improved the admin section - added breadcrumb navigation and a nice looking dashboard 2016-09-09 15:06:34 +01:00
Andy Heathershaw
71f6ed8979 Implemented the admin tools - regenerate thumbnails and delete photo. Also added the nice loading indicator 2016-09-09 09:45:11 +01:00
Andy Heathershaw
56cfade23c Massive refactoring of the image processing, so it's now driven by the front-end and we can completely remove the command-line tasks - which will allow the app to work completely encoded using SourceGuardian and domain-locking. 2016-09-08 23:22:29 +01:00
Andy Heathershaw
821bfceb09 Recaptcha support
Added configuration options to allow reCAPTCHA to be integrated into the registration process. reCAPTCHA response is validated on sign-up if enabled.
2016-09-08 11:02:49 +01:00
Andy Heathershaw
1a08ef1828 Added a command to regenerate thumbnails for a single photo or entire album. Photos can now be edited in bulk on the album page. 2016-09-07 21:44:28 +01:00
Andy Heathershaw
626cd5b2ec Added a separate storage_file_name column to the Photo class 2016-09-06 19:47:25 +01:00
Andy Heathershaw
484f5d8fb2 Added a page to the album editor to display photos - doesn't currently display anything yet! 2016-09-06 15:07:13 +01:00
Andy Heathershaw
00b238b3c6 Added info messages when registering and activating accounts 2016-09-06 14:45:51 +01:00
Andy Heathershaw
eb49f3230d Implemented the activation controller 2016-09-06 14:19:16 +01:00
Andy Heathershaw
57bc8d86cc New user registrations now get an activation e-mail 2016-09-06 13:48:52 +01:00
Andy Heathershaw
2a1311b2ba Finished the test e-mail settings functionality and introduced TLS encryption. Tested with Office 365. 2016-09-06 13:26:02 +01:00
Andy Heathershaw
c7a56d1753 Added mail settings for SMTP. Configuration values that are the same as the defaults are no longer saved to the database (and are purged if changed to the default.) Started adding a "test mail config" settings function 2016-09-06 12:23:14 +01:00
Andy Heathershaw
6875b0dd22 Added security configuration items for registration options 2016-09-05 21:43:58 +01:00
Andy Heathershaw
acd5c108a1 Added breadcrumb trail to gallery pages 2016-09-05 16:59:42 +01:00
Andy Heathershaw
1101432693 Added number of photos to admin index 2016-09-05 16:46:11 +01:00
Andy Heathershaw
a386d1b893 Added a theme selector to the new config page 2016-09-05 15:36:46 +01:00
Andy Heathershaw
00ab249476 Added a settings page allowing the date format and application name to be configured 2016-09-05 15:28:56 +01:00
Andy Heathershaw
ef95fd31ba Implemented a page to view a larger preview of a photo 2016-09-05 14:27:20 +01:00
Andy Heathershaw
bb6e77191e Added error handling of non-image files 2016-09-05 14:06:41 +01:00
Andy Heathershaw
56701c78d6 Zip files can now be extracted and uploaded 2016-09-05 12:56:13 +01:00
Andy Heathershaw
80dd1e4a40 Implemented a progress bar for uploading photos, and allowed multiple uploads using the single upload file control 2016-09-05 12:01:30 +01:00
Andy Heathershaw
18bceb367d Albums now display their photos in a grid 2016-09-04 21:59:32 +01:00
Andy Heathershaw
b08a0e4710 Albums are now displayed on the index page. Logged in users now get a gravatar displayed. Thumbnails are now also served and displayed on the index page. 2016-09-03 22:13:05 +01:00
Andy Heathershaw
c2a65accdf Thumbnails are now being generated as part of the photo analysis routine 2016-09-03 17:09:49 +01:00
Andy Heathershaw
9360d8bbbe Started working on support for uploading photos 2016-09-02 21:27:50 +01:00
Andy Heathershaw
67bfecd2b3 Added the ability for themes to have their own stylesheet - theme.css in the public folder 2016-09-02 12:36:34 +01:00
Andy Heathershaw
82ec82f628 Added a README for the new light theme 2016-09-02 10:57:08 +01:00
Andy Heathershaw
c32dbb17ed Added an additional theme - bootstrap3-light - that displays the default Bootstrap navbar (instead of the dark one) 2016-09-02 10:56:07 +01:00
Andy Heathershaw
8baa0b06e7 Implemented theming. A default "base" theme is provided that all themes can extend and override parts of if necessary without having to define every single screen.
Renamed Photo Perfect to Blue Twilight.
2016-09-02 10:42:05 +01:00