diff --git a/README.md b/README.md index 1beb543..92878cd 100644 --- a/README.md +++ b/README.md @@ -129,3 +129,28 @@ See the [LICENSE](LICENSE) file for licensing information as it pertains to file - [ ] Implement uniformity in terms of error reporting, exceptions, logging. - [ ] I want to make an api that allows you to download and install new plugins from a centralized repository - [ ] i want plugin instalation to be compatible with composer for easier management of added plugins. + + + + +e-corp backup +jfk tapes +ruby ridge shooter confession +obamas kenyan birth certificate +trumps taxes +buiilding 7 charge placement map +moon landing script +Real Twitter users (Page 1 of 1) +binders full of women +gelaines panel +Illumiinati Training - year 6 +Error 404 Page - The link +Contacts - B. Footy +11,778 votes +Patent Filing - Approved - iSuck +the remote +a clue +Out of stock - Nevel's Novelties +Google Maps - 33°24'55.8"N 43°18'33.3"E - WMD +Youtube - Unlisted Video PP Tape + diff --git a/app/css/main.css b/app/css/main.css index 3fb5bb7..38b2ee5 100644 --- a/app/css/main.css +++ b/app/css/main.css @@ -311,7 +311,39 @@ body { background: linear-gradient(to right, #2c2c2c, #1e1e1e, #1e1e1e); } +.atb-green { + color: #85bd3e; +} +a.atb-green:hover { + color: #1b947f; +} + +.atb-green-outline { + color: #85bd3e; + border-color: #85bd3e; +} +.atb-green-outline-only { + border-color: #85bd3e; +} +a.atb-green-outline:hover { + color: #1b947f; + border-color: #1b947f; +} + +.atb-green-bg { + color: #fff; + background-color: #85bd3e; + border-color: #85bd3e; +} + +a.atb-green-bg:hover { + background-color: #1b947f; + border-color: #1b947f; + /* background-color: #44a466; */ + /* background-color: #3fa269; */ +} + .bookmark-card.dragging { opacity: 0.7; cursor: move; /* Show a move cursor when dragging */ - } \ No newline at end of file + } diff --git a/app/images/clean-simple.png b/app/images/clean-simple.png deleted file mode 100644 index 9e23d99..0000000 Binary files a/app/images/clean-simple.png and /dev/null differ diff --git a/app/images/in-one-place.png b/app/images/in-one-place.png deleted file mode 100644 index d8b8591..0000000 Binary files a/app/images/in-one-place.png and /dev/null differ diff --git a/app/images/keep-track.png b/app/images/keep-track.png deleted file mode 100644 index 1572861..0000000 Binary files a/app/images/keep-track.png and /dev/null differ diff --git a/app/js/main.js b/app/js/main.js index 3898878..5b38519 100644 --- a/app/js/main.js +++ b/app/js/main.js @@ -151,67 +151,3 @@ document.addEventListener('DOMContentLoaded', function () { }); }); }); - - document.addEventListener('DOMContentLoaded', () => { - // Initialize Masonry - const masonryContainer = document.querySelector('[data-masonry]'); - const masonryInstance = new Masonry(masonryContainer, { - // horizontalOrder: false, // Maintains natural order in DOM - columnHeight: '.accordion', - // columnWidth: '.card', // Use the card width as the column reference - percentPosition: true - }); - - - // const sortContainer = document.getElementById('bookmarkSort'); - // Sortable.create(masonryContainer, { - // // animation: 150, // Smooth animations - // sort: true, - // ghostClass: 'bg-primary', - // onEnd: () => { - // // Trigger Masonry layout after drag-and-drop - // masonryInstance.layout(); - // } - // }); - - // Function to trigger layout after any accordion change - const updateMasonryLayout = () => masonryInstance.layout(); - - // Listen for all accordion collapse/expand events - masonryContainer.addEventListener('hidden.bs.collapse', updateMasonryLayout); - masonryContainer.addEventListener('shown.bs.collapse', updateMasonryLayout); - - // Observe dynamic content changes (e.g., rows added/removed) - const observer = new MutationObserver(() => { - updateMasonryLayout(); - }); - - // Observe all cards for changes in the DOM - document.querySelectorAll('.card').forEach((card) => { - observer.observe(card, { childList: true, subtree: true }); - }); - - jQuery(function($) { - var panelList = $('#bookmarkSort'); - - panelList.sortable({ - // Only make the .panel-heading child elements support dragging. - // Omit this to make then entire
  • ...
  • draggable. - handle: '.card', - update: function() { - console.error( 'update' ); - $('.bookmark-card', panelList).each(function(index, elem) { - var $listItem = $(elem), - - newIndex = $listItem.index(); - masonryInstance.layout(); - console.error( $listItem ); - console.error( index ); - console.error( newIndex ); - - // Persist the new indices. - }); - } - }); - }); -}); \ No newline at end of file diff --git a/app/plugins/bookmarks/controllers/bookmarks.php b/app/plugins/bookmarks/controllers/bookmarks.php index aa45f57..1b9c12f 100644 --- a/app/plugins/bookmarks/controllers/bookmarks.php +++ b/app/plugins/bookmarks/controllers/bookmarks.php @@ -22,25 +22,31 @@ use TheTempusProject\Classes\Controller; use TheTempusProject\Classes\Forms; use TheTempusProject\Models\Bookmarks as Bookmark; use TheTempusProject\Models\Folders; +use TheTempusProject\Models\BookmarkDashboards as Dashboards; use TheTempusProject\TheTempusProject as App; use TheTempusProject\Houdini\Classes\Components; use TheTempusProject\Houdini\Classes\Forms as HoudiniForms; use TheTempusProject\Houdini\Classes\Navigation; use TheTempusProject\Houdini\Classes\Template; use TheTempusProject\Hermes\Functions\Route as Routes; +use TheTempusProject\Models\User; +use TheTempusProject\Classes\Preferences; +use TheTempusProject\Canary\Bin\Canary as Debug; class Bookmarks extends Controller { protected static $bookmarks; protected static $folders; + protected static $dashboards; public function __construct() { parent::__construct(); - if ( !App::$isLoggedIn ) { + if ( ! App::$isLoggedIn ) { Session::flash( 'notice', 'You must be logged in to create or manage bookmarks.' ); return Redirect::home(); } self::$bookmarks = new Bookmark; self::$folders = new Folders; + self::$dashboards = new Dashboards; self::$title = 'Bookmarks - {SITENAME}'; self::$pageDescription = 'Add and save url bookmarks here.'; @@ -57,14 +63,23 @@ class Bookmarks extends Controller { Components::set( 'SITE_URL', Routes::getAddress() ); Views::raw( $tabsView ); Components::append( 'TEMPLATE_JS_INCLUDES', Template::parse('' ) ); - $options = Views::simpleView( 'bookmarks.nav.viewOptions' ); - Components::set( 'VIEW_OPTIONS', $options ); + $viewOptions = Views::simpleView( 'bookmarks.nav.viewOptions' ); + Components::set( 'VIEW_OPTIONS', $viewOptions ); + $dashOptions = Views::simpleView( 'bookmarks.dashboards.dashOptions' ); + Components::set( 'DASH_OPTIONS', $dashOptions ); + $this->setPrefToggles(); } public function index() { - $bookmarks = self::$bookmarks->noFolder(); + if ( Input::exists('submit') ) { + $prefs = new Preferences; + $user = new User; + $fields = $prefs->convertFormToArray( true ); + $out = $user->updatePrefs( $fields, App::$activeUser->ID ); + $this->setPrefToggles(); + } + $folders = self::$folders->byUser(); - $panelArray = []; if ( !empty( $folders ) ) { foreach ( $folders as $folder ) { @@ -79,9 +94,7 @@ class Bookmarks extends Controller { $panelArray[] = $folderObject; } } - Components::set( 'foldersList', Views::simpleView( 'bookmarks.folders.list', $folders ) ); Components::set( 'folderPanels', Views::simpleView( 'bookmarks.components.bookmarkListPanel', $panelArray ) ); - Components::set( 'bookmarksList', Views::simpleView( 'bookmarks.bookmarks.list', $bookmarks ) ); return Views::view( 'bookmarks.dash' ); } @@ -102,6 +115,11 @@ class Bookmarks extends Controller { return Views::view( 'bookmarks.bookmarks.view', $bookmark ); } + public function unsorted() { + $bookmarks = self::$bookmarks->noFolder(); + Views::view( 'bookmarks.bookmarks.unsorted', $bookmarks ); + } + public function bookmarks( $id = null ) { $folder = self::$folders->findById( $id ); if ( $folder == false ) { @@ -113,8 +131,6 @@ class Bookmarks extends Controller { return Redirect::to( 'bookmarks/index' ); } Navigation::setCrumbComponent( 'BookmarkBreadCrumbs', 'bookmarks/bookmarks/' . $id ); - - $bookmarks = self::$bookmarks->noFolder(); $panelArray = []; $panel = new \stdClass(); @@ -325,6 +341,179 @@ class Bookmarks extends Controller { Redirect::to( 'bookmarks/folders' ); } + /** + * Dashboards + */ + public function addDash() { + $folders = self::$folders->byUser() ?? []; + + if ( !empty( $folders ) ) { + foreach ( $folders as &$folder ) { + $folder->selected = ''; + } + } + + $linkSelect = Views::simpleView( 'bookmarks.components.linkSelect', $folders ); + Components::set( 'LINK_SELECT', $linkSelect ); + + if ( ! Input::exists( 'submit' ) ) { + return Views::view( 'bookmarks.dashboards.create' ); + } + + if ( !Forms::check( 'createDashboard' ) ) { + Issues::add( 'error', [ 'There was an error creating your dashboard.' => Check::userErrors() ] ); + return Views::view( 'bookmarks.dashboards.create' ); + } + + if ( is_array( Input::post('link_filter') ) && ! empty( Input::post('link_filter') ) ) { + $filters = implode( ',', Input::post('link_filter') ); + } else { + $filters = ''; + } + if ( is_array( Input::post('link_order') ) && ! empty( Input::post('link_order') ) ) { + $folders = implode( ',', Input::post('link_order') ); + } else { + $folders = ''; + } + $result = self::$dashboards->create( Input::post('title'), $filters, $folders, Input::post('description') ); + + if ( !$result ) { + Issues::add( 'error', [ 'There was an error creating your dashboard.' => Check::userErrors() ] ); + return Views::view( 'bookmarks.dashboards.create' ); + } + + Issues::add( 'success', 'Your dashboard has been created.' ); + return $this->dashboards(); + } + + public function editDash( $id = null ) { + $dash = self::$dashboards->findById( $id ); + + if ( $dash == false ) { + Issues::add( 'error', 'Unknown Dashboard' ); + return $this->dashboards(); + } + + if ( $dash->createdBy != App::$activeUser->ID ) { + Issues::add( 'error', 'You do not have permission to view this dashboard.' ); + return $this->dashboards(); + } + + $this->setDashToggles( explode( ',', $dash->saved_prefs ) ); + + $folders = self::$folders->byUser() ?? []; + $selectedFolders = explode( ',', $dash->link_order ); + if ( !empty( $folders ) ) { + foreach ( $folders as &$folder ) { + if ( in_array( $folder->ID, $selectedFolders ) ) { + $folder->selected = ' checked'; + } else { + $folder->selected = ''; + } + } + } + + $linkSelect = Views::simpleView( 'bookmarks.components.linkSelect', $folders ); + Components::set( 'LINK_SELECT', $linkSelect ); + + if ( ! Input::exists( 'submit' ) ) { + return Views::view( 'bookmarks.dashboards.edit', $dash ); + } + + if ( ! Forms::check( 'editDashboard' ) ) { + Issues::add( 'error', [ 'There was an error editing your dashboard.' => Check::userErrors() ] ); + return Views::view( 'bookmarks.dashboards.edit', $dash ); + } + + if ( is_array( Input::post('link_filter') ) && ! empty( Input::post('link_filter') ) ) { + $filters = implode( ',', Input::post('link_filter') ); + } else { + $filters = ''; + } + + if ( is_array( Input::post('link_order') ) && ! empty( Input::post('link_order') ) ) { + $folders = implode( ',', Input::post('link_order') ); + } else { + $folders = ''; + } + + $result = self::$dashboards->update( $id, Input::post('title'), $filters, $folders, Input::post('description') ); + + if ( !$result ) { + Issues::add( 'error', [ 'There was an error updating your dashboard.' => Check::userErrors() ] ); + return Views::view( 'bookmarks.dashboards.edit', $dash ); + } + + Issues::add( 'success', 'Your dashboard has been updated.' ); + return $this->dashboards(); + } + + public function deleteDash( $id = null ) { + $dash = self::$dashboards->findById( $id ); + if ( $dash == false ) { + Issues::add( 'error', 'Unknown Dashboard' ); + return $this->dashboards(); + } + if ( $dash->createdBy != App::$activeUser->ID ) { + Issues::add( 'error', 'You do not have permission to delete this dash.' ); + return $this->dashboards(); + } + $result = self::$dashboards->delete( $id ); + if ( !$result ) { + Issues::add( 'error', 'There was an error deleting the dashboard(s)' ); + } else { + Issues::add( 'success', 'Dashboard deleted' ); + } + return $this->dashboards(); + } + + public function dashboard( $uuid = null ) { + $dash = self::$dashboards->findByUuid( $uuid ); + if ( $dash == false ) { + return $this->dashboards(); + } + if ( $dash->createdBy != App::$activeUser->ID ) { + Issues::add( 'error', 'You do not have permission to view this dash.' ); + return $this->dashboards(); + } + + $foldersArray = []; + if ( ! empty( $dash->link_order ) ) { + $folders = explode( ',', $dash->link_order ); + foreach ( $folders as $key => $id ) { + $folder = self::$folders->findById( $id ); + if ( empty( $folder ) ) { + continue; + } + + $bookmarks = self::$bookmarks->byFolder( $folder->ID ); + if ( empty( $bookmarks ) ) { + continue; + } + + $folderObject = new \stdClass(); + $folderObject->ID = $folder->ID; + $folderObject->title = $folder->title; + $folderObject->color = $folder->color; + $folderObject->uuid = $folder->uuid; + $folderObject->bookmarkRows = Views::simpleView( 'bookmarks.dashboards.bookmarkRows', $bookmarks ); + $foldersArray[] = $folderObject; + } + } + Components::set( 'folderPanels', Views::simpleView( 'bookmarks.dashboards.folderPanels', $foldersArray ) ); + + if ( ! empty( $dash->saved_prefs ) ) { + $this->setDashToggles( explode( ',', $dash->saved_prefs ) ); + } + + return Views::view( 'bookmarks.dashboards.view', $dash ); + } + + public function dashboards() { + $dashboards = self::$dashboards->byUser(); + return Views::view( 'bookmarks.dashboards.list', $dashboards ); + } + /** * Functionality */ @@ -688,4 +877,47 @@ class Bookmarks extends Controller { $folderSelect = Template::parse( $out ); Components::set( 'folderSelect', $folderSelect ); } + + private function setPrefToggles() { + $prefsArray = [ + 'editModeSwitch', + 'showArchivedSwitch', + 'showHiddenSwitch', + 'archiveButtonSwitch', + 'visibilityButtonSwitch', + 'privacyButtonSwitch', + 'shareButtonSwitch', + 'addButtonSwitch' + ]; + foreach ($prefsArray as $key => $name) { + if ( empty( App::$activeUser->prefs[$name] ) ) { + Components::set( $name . '_IS_CHECKED', '' ); + } else { + Components::set( $name . '_IS_CHECKED', ' checked' ); + } + } + } + + private function setDashToggles( $current = [] ) { + $prefsArray = [ + 'editModeSwitch', + 'showArchivedSwitch', + 'showHiddenSwitch', + 'archiveButtonSwitch', + 'visibilityButtonSwitch', + 'privacyButtonSwitch', + 'shareButtonSwitch', + 'addButtonSwitch' + ]; + foreach ( $prefsArray as $key => $name ) { + Debug::error( $name ); + Debug::error( $current ); + if ( ! in_array( $name, $current ) ) { + Components::set( $name . '_IS_CHECKED', '' ); + } else { + Debug::error( '_IS_CHECKED' ); + Components::set( $name . '_IS_CHECKED', ' checked' ); + } + } + } } diff --git a/app/controllers/extensions.php b/app/plugins/bookmarks/controllers/extensions.php similarity index 50% rename from app/controllers/extensions.php rename to app/plugins/bookmarks/controllers/extensions.php index 40c93ed..811ab3e 100644 --- a/app/controllers/extensions.php +++ b/app/plugins/bookmarks/controllers/extensions.php @@ -13,40 +13,53 @@ namespace TheTempusProject\Controllers; use TheTempusProject\Classes\Controller; use TheTempusProject\Houdini\Classes\Views; +use TheTempusProject\Houdini\Classes\Issues; +use TheTempusProject\TheTempusProject as App; class Extensions extends Controller { public function index() { self::$title = 'Browser Extensions'; - Views::view( 'extensions.index' ); + if ( App::$isLoggedIn ) { + Issues::add( 'success', 'We also have a simple solution to using the app from your mobile devices here.' ); + } + Views::view( 'bookmarks.extensions.index' ); + } + + public function mobile() { + self::$title = 'Mobile Bookmarklet'; + if ( App::$isLoggedIn ) { + return Issues::add( 'error', 'Unfortunately you will need to sign in to generate the bookmarklet unique to your account.' ); + } + Views::view( 'bookmarks.extensions.bookmarklet' ); } public function chrome() { self::$title = 'Chrome Extension'; - Views::view( 'extensions.chrome' ); + Views::view( 'bookmarks.extensions.chrome' ); } public function firefox() { self::$title = 'Firefox Extension'; - Views::view( 'extensions.firefox' ); + Views::view( 'bookmarks.extensions.firefox' ); } public function opera() { self::$title = 'Opera Extension'; - Views::view( 'extensions.opera' ); + Views::view( 'bookmarks.extensions.opera' ); } public function edge() { self::$title = 'Edge Extension'; - Views::view( 'extensions.edge' ); + Views::view( 'bookmarks.extensions.edge' ); } public function brave() { self::$title = 'Brave Extension'; - Views::view( 'extensions.brave' ); + Views::view( 'bookmarks.extensions.brave' ); } public function safari() { self::$title = 'Safari Extension'; - Views::view( 'extensions.safari' ); + Views::view( 'bookmarks.extensions.safari' ); } } diff --git a/app/plugins/bookmarks/forms.php b/app/plugins/bookmarks/forms.php index d6a48f3..ce89547 100644 --- a/app/plugins/bookmarks/forms.php +++ b/app/plugins/bookmarks/forms.php @@ -27,6 +27,8 @@ class BookmarksForms extends Forms { self::addHandler( 'editFolder', __CLASS__, 'editFolder' ); self::addHandler( 'importBookmarks', __CLASS__, 'importBookmarks' ); self::addHandler( 'exportBookmarks', __CLASS__, 'exportBookmarks' ); + self::addHandler( 'createDashboard', __CLASS__, 'createDashboard' ); + self::addHandler( 'editDashboard', __CLASS__, 'editDashboard' ); } public static function createBookmark() { @@ -168,6 +170,44 @@ class BookmarksForms extends Forms { // } return true; } + + public static function createDashboard() { + if ( ! Input::exists( 'submit' ) ) { + return false; + } + if ( ! Input::exists( 'title' ) ) { + Check::addUserError( 'You must include a title.' ); + return false; + } + if ( ! Input::exists( 'link_order' ) ) { + Check::addUserError( 'You must include at least 1 link or folder.' ); + return false; + } + if ( !self::token() ) { + Check::addUserError( 'There was an issue with your request.' ); + return false; + } + return true; + } + + public static function editDashboard() { + if ( ! Input::exists( 'submit' ) ) { + return false; + } + if ( ! Input::exists( 'title' ) ) { + Check::addUserError( 'You must include a title.' ); + return false; + } + if ( ! Input::exists( 'link_order' ) ) { + Check::addUserError( 'You must include at least 1 link or folder.' ); + return false; + } + if ( !self::token() ) { + Check::addUserError( 'There was an issue with your request.' ); + return false; + } + return true; + } } new BookmarksForms; \ No newline at end of file diff --git a/app/plugins/bookmarks/js/bookmarks.js b/app/plugins/bookmarks/js/bookmarks.js index 7dd4b36..c3f2856 100644 --- a/app/plugins/bookmarks/js/bookmarks.js +++ b/app/plugins/bookmarks/js/bookmarks.js @@ -34,13 +34,22 @@ document.addEventListener('DOMContentLoaded', () => { toggleVisibility('privacyButtonSwitch', 'btn-publish'); toggleVisibility('addButtonSwitch', 'btn-addlink'); toggleVisibility('shareButtonSwitch', 'btn-share'); + + toggleVisibility('dashShowArchivedSwitch', 'link-archived'); + toggleVisibility('dashShowHiddenSwitch', 'link-hidden'); + toggleVisibility('dashAddButtonSwitch', 'btn-addlink'); + toggleVisibility('dashShareButtonSwitch', 'btn-share'); }); // Function to handle showing or hiding elements based on the checkbox state function toggleVisibility(switchId, className) { const switchElement = document.getElementById(switchId); const elementsToToggle = document.querySelectorAll(`.${className}`); - + + if ( ! switchElement ) { + return; + } + // Listen for changes to the checkbox switchElement.addEventListener('change', () => { if (switchElement.checked) { @@ -59,6 +68,9 @@ function toggleVisibility(switchId, className) { } document.addEventListener('DOMContentLoaded', function () { const bookmarkSort = document.getElementById('bookmarkSort'); + if ( ! bookmarkSort ) { + return; + } let draggingElement = null; let placeholder = null; let initialX = 0; @@ -180,7 +192,3 @@ document.addEventListener('DOMContentLoaded', function () { document.addEventListener('mouseup', handleDragEnd); bookmarkSort.addEventListener('dragover', handleDrop); // Listen for the drop event to update the order }); - - - - \ No newline at end of file diff --git a/app/plugins/bookmarks/models/bookmarkviews.php b/app/plugins/bookmarks/models/bookmark_dashboards.php similarity index 77% rename from app/plugins/bookmarks/models/bookmarkviews.php rename to app/plugins/bookmarks/models/bookmark_dashboards.php index 75fab4c..1fbcafe 100644 --- a/app/plugins/bookmarks/models/bookmarkviews.php +++ b/app/plugins/bookmarks/models/bookmark_dashboards.php @@ -1,8 +1,8 @@ $title, 'description' => $description, - 'privacy' => $privacy, + 'saved_prefs' => $saved_prefs, + 'link_order' => $link_order, 'uuid' => generateUuidV4(), 'createdBy' => App::$activeUser->ID, 'createdAt' => time(), @@ -69,7 +61,7 @@ class Bookmarkviews extends DatabaseModel { return self::$db->lastId(); } - public function update( $id, $title, $description = '', $privacy = 'private' ) { + public function update( $id, $title, $saved_prefs, $link_order, $description = '' ) { if ( !Check::id( $id ) ) { Debug::info( 'Views: illegal ID.' ); return false; @@ -81,11 +73,12 @@ class Bookmarkviews extends DatabaseModel { $fields = [ 'title' => $title, 'description' => $description, - 'privacy' => $privacy, + 'saved_prefs' => $saved_prefs, + 'link_order' => $link_order, ]; if ( !self::$db->update( $this->tableName, $id, $fields ) ) { new CustomException( 'viewUpdate' ); - Debug::error( "Views: $id not updated: $fields" ); + Debug::error( "Views: $id not updated" ); return false; } return true; @@ -147,4 +140,16 @@ class Bookmarkviews extends DatabaseModel { } return $out; } + + public function findByUuid( $id ) { + $whereClause = ['uuid', '=', $id]; + + $dashboards = self::$db->get( $this->tableName, $whereClause ); + + if ( !$dashboards->count() ) { + Debug::info( 'No Dashboards found.' ); + return false; + } + return $this->filter( $dashboards->first() ); + } } diff --git a/app/plugins/bookmarks/models/bookmarks.php b/app/plugins/bookmarks/models/bookmarks.php index 6e5518d..2cdd242 100644 --- a/app/plugins/bookmarks/models/bookmarks.php +++ b/app/plugins/bookmarks/models/bookmarks.php @@ -42,7 +42,7 @@ class Bookmarks extends DatabaseModel { [ 'hiddenAt', 'int', '11' ], [ 'order', 'int', '11' ], [ 'linkType', 'varchar', '32' ], - [ 'uuid', 'uuid', '36' ], + [ 'uuid', 'char', '36' ], ]; /** diff --git a/app/plugins/bookmarks/models/folders.php b/app/plugins/bookmarks/models/folders.php index a04b05a..2655c36 100644 --- a/app/plugins/bookmarks/models/folders.php +++ b/app/plugins/bookmarks/models/folders.php @@ -29,7 +29,7 @@ class Folders extends DatabaseModel { [ 'folderID', 'int', '11' ], [ 'createdBy', 'int', '11' ], [ 'createdAt', 'int', '11' ], - [ 'uuid', 'text', '' ], + [ 'uuid', 'char', '36' ], ]; /** diff --git a/app/plugins/bookmarks/plugin.php b/app/plugins/bookmarks/plugin.php index 2eec9ac..d63831e 100644 --- a/app/plugins/bookmarks/plugin.php +++ b/app/plugins/bookmarks/plugin.php @@ -55,6 +55,90 @@ class Bookmarks extends Plugin { 'default' => true, ], ]; + public $preferenceMatrix = [ + 'editModeSwitch' => [ + 'pretty' => 'Bookmarks default setting for edit mode', + 'type' => 'checkbox', + 'default' => 'false', + ], + 'showArchivedSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing archived bookmarks', + 'type' => 'checkbox', + 'default' => 'false', + ], + 'showHiddenSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing hidden bookmarks', + 'type' => 'checkbox', + 'default' => 'false', + ], + 'archiveButtonSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing the archive buttons', + 'type' => 'checkbox', + 'default' => 'false', + ], + 'visibilityButtonSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing the visibility buttons', + 'type' => 'checkbox', + 'default' => 'false', + ], + 'privacyButtonSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing the privacy buttons', + 'type' => 'checkbox', + 'default' => 'true', + ], + 'shareButtonSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing the share buttons', + 'type' => 'checkbox', + 'default' => 'true', + ], + 'addButtonSwitch' => [ + 'pretty' => 'Bookmarks default setting for showing the add buttons', + 'type' => 'checkbox', + 'default' => 'true', + ], + ]; + + + public $resourceMatrix = [ + 'routes' => [ + [ + 'original_url' => 'chrome', + 'redirect_type' => 'external', + 'nickname' => 'Chrome Extension', + 'forwarded_url' => 'https://chromewebstore.google.com/detail/allthebookmarks/hcofhopnjoodmakhhmgmoohgpdhfkgii?authuser=0&hl=en', + ], + [ + 'original_url' => 'brave', + 'redirect_type' => 'external', + 'nickname' => 'Brave Extension', + 'forwarded_url' => 'https://chromewebstore.google.com/detail/allthebookmarks/hcofhopnjoodmakhhmgmoohgpdhfkgii?authuser=0&hl=en', + ], + [ + 'original_url' => 'firefox', + 'redirect_type' => 'external', + 'nickname' => 'Firefox Extension', + 'forwarded_url' => 'https://addons.mozilla.org/en-US/firefox/addon/allthebookmarks/', + ], + // [ + // 'original_url' => 'edge', + // 'redirect_type' => 'external', + // 'nickname' => 'Edge Extension', + // 'forwarded_url' => 'https://www.facebook.com/thetempusproject', + // ], + // [ + // 'original_url' => 'opera', + // 'redirect_type' => 'external', + // 'nickname' => 'Opera Extension', + // 'forwarded_url' => 'https://www.facebook.com/thetempusproject', + // ], + ] + ]; + + + + + + public $bookmarks; public $folders; diff --git a/app/plugins/bookmarks/views/bookmarks/create.html b/app/plugins/bookmarks/views/bookmarks/create.html index f4559a1..29e7f05 100644 --- a/app/plugins/bookmarks/views/bookmarks/create.html +++ b/app/plugins/bookmarks/views/bookmarks/create.html @@ -1,5 +1,5 @@ -
    -
    +
    +
    Add Bookmark
    diff --git a/app/plugins/bookmarks/views/bookmarks/edit.html b/app/plugins/bookmarks/views/bookmarks/edit.html index 18b9d68..4c167e6 100644 --- a/app/plugins/bookmarks/views/bookmarks/edit.html +++ b/app/plugins/bookmarks/views/bookmarks/edit.html @@ -1,51 +1,56 @@ - -

    Edit Bookmark

    -
    -
    - -
    - -
    -
    +
    +
    + Edit Bookmark +
    + +
    +
    + +
    + +
    +
    -
    - -
    - -
    -
    +
    + +
    + +
    +
    -
    - -
    - -
    -
    - {folderSelect} -
    - -
    - -
    -
    -
    - -
    - {colorSelect} -
    -
    +
    + +
    + +
    +
    + {folderSelect} +
    + +
    + +
    +
    +
    + +
    + {colorSelect} +
    +
    - - + + - -
    - -
    -
    - \ No newline at end of file + +
    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/bookmarks/list.html b/app/plugins/bookmarks/views/bookmarks/list.html index 7384b8a..7732d4c 100644 --- a/app/plugins/bookmarks/views/bookmarks/list.html +++ b/app/plugins/bookmarks/views/bookmarks/list.html @@ -1,40 +1,38 @@ - - - - - - - - - - - - - {LOOP} - - - - - - - - {/LOOP} - {ALT} - - - - {/ALT} - -
    Bookmark
    - - {title} - - - {privacy} -
    - No results to show. -
    - -
    - Create -
    \ No newline at end of file + + + + + + + + + + + + {LOOP} + + + + + + + + {/LOOP} + {ALT} + + + + {/ALT} + +
    Bookmark
    + + {title} + + + {privacy} +
    + No results to show. +
    +
    + Create +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/bookmarks/unsorted.html b/app/plugins/bookmarks/views/bookmarks/unsorted.html new file mode 100644 index 0000000..3fcbf90 --- /dev/null +++ b/app/plugins/bookmarks/views/bookmarks/unsorted.html @@ -0,0 +1,44 @@ +
    +
    + Unsorted Bookmarks +
    + + + + + + + + + + + + {LOOP} + + + + + + + + {/LOOP} + {ALT} + + + + {/ALT} + +
    Bookmark
    + + {title} + + + {privacy} +
    + No results to show. +
    +
    + Add +
    +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/components/bookmarkListPanel.html b/app/plugins/bookmarks/views/components/bookmarkListPanel.html index d195e51..7340ae5 100644 --- a/app/plugins/bookmarks/views/components/bookmarkListPanel.html +++ b/app/plugins/bookmarks/views/components/bookmarkListPanel.html @@ -28,7 +28,7 @@
    -
      +
        {bookmarkListRows}
    diff --git a/app/plugins/bookmarks/views/components/bookmarkListRows.html b/app/plugins/bookmarks/views/components/bookmarkListRows.html index 31d43b8..b7ed12e 100644 --- a/app/plugins/bookmarks/views/components/bookmarkListRows.html +++ b/app/plugins/bookmarks/views/components/bookmarkListRows.html @@ -1,5 +1,5 @@ {LOOP} -
  • +
  • {iconHtml} {title} @@ -29,7 +29,7 @@
  • {/LOOP} {ALT} -
  • -

    No Bookmarks

    +
  • +

    No Bookmarks

  • {/ALT} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/components/linkSelect.html b/app/plugins/bookmarks/views/components/linkSelect.html new file mode 100644 index 0000000..16b3a32 --- /dev/null +++ b/app/plugins/bookmarks/views/components/linkSelect.html @@ -0,0 +1,16 @@ +
    + + {LOOP} +
    + +

    +
    + + + {title} + +
    +

    +
    + {/LOOP} +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/components/shareListRows.html b/app/plugins/bookmarks/views/components/shareListRows.html index 955d3a9..c79a5b1 100644 --- a/app/plugins/bookmarks/views/components/shareListRows.html +++ b/app/plugins/bookmarks/views/components/shareListRows.html @@ -1,5 +1,5 @@ {LOOP} -
  • +
  • {iconHtml} {title}{privacyBadge} diff --git a/app/plugins/bookmarks/views/dash.html b/app/plugins/bookmarks/views/dash.html index 025233c..5275773 100644 --- a/app/plugins/bookmarks/views/dash.html +++ b/app/plugins/bookmarks/views/dash.html @@ -1,17 +1,7 @@ - -
    -
    - Unsorted Bookmarks - {bookmarksList} -
    -
    - Folders List - {foldersList} -
    -
    - Bookmarks + MAnage +
    {VIEW_OPTIONS}
    diff --git a/app/plugins/bookmarks/views/dashboards/bookmarkRows.html b/app/plugins/bookmarks/views/dashboards/bookmarkRows.html new file mode 100644 index 0000000..5197893 --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/bookmarkRows.html @@ -0,0 +1,30 @@ +{LOOP} +
  • + {iconHtml} + {title} + + + + + + +
  • +{/LOOP} +{ALT} +
  • +

    No Bookmarks

    +
  • +{/ALT} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/dashboards/create.html b/app/plugins/bookmarks/views/dashboards/create.html new file mode 100644 index 0000000..3ca36c7 --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/create.html @@ -0,0 +1,43 @@ +
    +
    + Add Dashboard +
    +

    Dashboards are groups of folders that usually share a theme. When links are added to folders they will automatically be added to dashboards unless hidden or archived.

    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + {DASH_OPTIONS} +
    +
    +
    + +
    + {LINK_SELECT} +
    +
    + + + + + +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/dashboards/dashOptions.html b/app/plugins/bookmarks/views/dashboards/dashOptions.html new file mode 100644 index 0000000..82b370e --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/dashOptions.html @@ -0,0 +1,29 @@ +
    + +
    +
    Status:
    +
    + + +
    +
    + + +
    +
    + + +
    +
    Buttons:
    +
    + + +
    +
    + + +
    +
    +
    + + diff --git a/app/plugins/bookmarks/views/dashboards/edit.html b/app/plugins/bookmarks/views/dashboards/edit.html new file mode 100644 index 0000000..d845798 --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/edit.html @@ -0,0 +1,43 @@ +
    +
    + Edit Dashboard +
    +

    Dashboards are groups of folders that usually share a theme. When links are added to folders they will automatically be added to dashboards unless hidden or archived.

    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + {DASH_OPTIONS} +
    +
    +
    + +
    + {LINK_SELECT} +
    +
    + + + + + +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/dashboards/folderPanels.html b/app/plugins/bookmarks/views/dashboards/folderPanels.html new file mode 100644 index 0000000..152515a --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/folderPanels.html @@ -0,0 +1,51 @@ +{LOOP} +
    +
    +
    +
    + + {title} + + + +
    + + + +
    +
    +
      + {bookmarkRows} +
    +
    + +
    +
    +
    +
    +{/LOOP} +{ALT} +
    +

    No folders found.

    +
    +{/ALT} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/dashboards/list.html b/app/plugins/bookmarks/views/dashboards/list.html new file mode 100644 index 0000000..3197939 --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/list.html @@ -0,0 +1,44 @@ +
    +
    + Dashboards +
    +
    +

    From here you can easily create, update, or remove any bookmark dashboards you have created.

    +

    Dashboards are a feature that allow you to build customized bookmark pages that you can easily save and open la

    +
    +
    + + + + + + + + + + + + {LOOP} + + + + + + + + {/LOOP} + {ALT} + + + + {/ALT} + +
    TitleDescription
    {title}{description}
    + No results to show. +
    +
    + Create +
    +
    +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/dashboards/view.html b/app/plugins/bookmarks/views/dashboards/view.html new file mode 100644 index 0000000..2c64b9c --- /dev/null +++ b/app/plugins/bookmarks/views/dashboards/view.html @@ -0,0 +1,26 @@ +
    +
    + {title} +
    +
    +
    +
    + {folderPanels} +
    +
    +
    +
    +
    + {DASH_OPTIONS} +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/export.html b/app/plugins/bookmarks/views/export.html index 46db78b..55941f6 100644 --- a/app/plugins/bookmarks/views/export.html +++ b/app/plugins/bookmarks/views/export.html @@ -1,10 +1,10 @@ -
    -
    +
    +
    Bookmark Export
    -

    Select which folders to include in the export.

    -
    -
    +

    Select which folders to include in the export

    + +
    diff --git a/app/plugins/bookmarks/views/extensions/bookmarklet.html b/app/plugins/bookmarks/views/extensions/bookmarklet.html new file mode 100644 index 0000000..bcce444 --- /dev/null +++ b/app/plugins/bookmarks/views/extensions/bookmarklet.html @@ -0,0 +1,64 @@ +
    + Mobile Bookmarklet +
    +
    +
    +

    + You can quickly and easily add bookmarks to your AllTheBookmarks account from any mobile device. + Since you can't use extensions on mobile, you can log in from your mobile device and visit this page. +

    +

    + Below is a code snippet that you can copy, then create a new bookmark on your mobile device as you would normally. + Before saving the bookmark, change the name to something simple like "ATB Bookmarker" and paste thiis code as the url. +

    +

    + Once you have the bookmarklet saved, you can simply go to your mobile bookmarks while on a page and this snippet will grab the info you need and add it to you account. +

    +
    + +
    +
    +                javascript:(function() {
    +                    const apiKey = localStorage.getItem('notAnAuthToken');
    +                    const apiUrl = localStorage.getItem('api_url');
    +                    const name = prompt("Enter a name for the bookmark:");
    +                    const notes = prompt("Enter any notes (optional):");
    +                    const color = prompt("Enter a color (optional):");
    +                    const privacy = prompt("Enter privacy level (e.g., public/private):");
    +                    const folder = prompt("Enter a folder (optional):");
    +                    const url = window.location.href;
    +                
    +                    if (!apiKey) {
    +                        alert("You must sign in to obtain an auth token.");
    +                        return;
    +                    }
    +                
    +                    if (!name) {
    +                        alert("Name is required.");
    +                        return;
    +                    }
    +                
    +                    fetch(apiUrl + 'api/bookmarks/create', {
    +                        method: 'POST',
    +                        headers: {
    +                            'Content-Type': 'application/json',
    +                            'Authorization': `Bearer ${apiKey}`
    +                        },
    +                        body: JSON.stringify({ name, url, notes, color, privacy, folder })
    +                    })
    +                    .then(response => {
    +                        if (response.ok) {
    +                            alert("Bookmark saved successfully!");
    +                        } else {
    +                            alert("Failed to save bookmark. Please check your API key.");
    +                        }
    +                    })
    +                    .catch(error => {
    +                        console.error(error);
    +                        alert("An unknown error occurred while saving the bookmark.");
    +                    });
    +                })();
    +            
    +
    +
    +
    \ No newline at end of file diff --git a/app/views/extensions/brave.html b/app/plugins/bookmarks/views/extensions/brave.html similarity index 97% rename from app/views/extensions/brave.html rename to app/plugins/bookmarks/views/extensions/brave.html index 65f49a9..8b19a2b 100644 --- a/app/views/extensions/brave.html +++ b/app/plugins/bookmarks/views/extensions/brave.html @@ -55,7 +55,7 @@ diff --git a/app/views/extensions/chrome.html b/app/plugins/bookmarks/views/extensions/chrome.html similarity index 97% rename from app/views/extensions/chrome.html rename to app/plugins/bookmarks/views/extensions/chrome.html index b277da8..342b6f4 100644 --- a/app/views/extensions/chrome.html +++ b/app/plugins/bookmarks/views/extensions/chrome.html @@ -55,7 +55,7 @@ diff --git a/app/views/extensions/edge.html b/app/plugins/bookmarks/views/extensions/edge.html similarity index 97% rename from app/views/extensions/edge.html rename to app/plugins/bookmarks/views/extensions/edge.html index e6415f0..68d8b7e 100644 --- a/app/views/extensions/edge.html +++ b/app/plugins/bookmarks/views/extensions/edge.html @@ -55,7 +55,7 @@ diff --git a/app/views/extensions/firefox.html b/app/plugins/bookmarks/views/extensions/firefox.html similarity index 97% rename from app/views/extensions/firefox.html rename to app/plugins/bookmarks/views/extensions/firefox.html index 2e87cd1..0cdc639 100644 --- a/app/views/extensions/firefox.html +++ b/app/plugins/bookmarks/views/extensions/firefox.html @@ -55,7 +55,7 @@ diff --git a/app/views/extensions/index.html b/app/plugins/bookmarks/views/extensions/index.html similarity index 91% rename from app/views/extensions/index.html rename to app/plugins/bookmarks/views/extensions/index.html index c045aa6..8fe694e 100644 --- a/app/views/extensions/index.html +++ b/app/plugins/bookmarks/views/extensions/index.html @@ -14,7 +14,7 @@
    Chrome Extension

    Enhance your Chrome browser with advanced features and effortless organization.

    - Learn More + Learn More @@ -26,7 +26,7 @@
    Firefox Extension

    Seamlessly integrate with Firefox for a smoother browsing experience.

    - Learn More + Learn More @@ -38,7 +38,7 @@
    Opera Extension

    Boost your Opera browser with intuitive features and tools.

    - Learn More + Learn More @@ -50,7 +50,7 @@
    Brave Extension

    Enjoy secure and private browsing with Brave, enhanced by our extension.

    - Learn More + Learn More @@ -62,7 +62,7 @@
    Edge Extension

    Maximize productivity on Microsoft Edge with our extension.

    - Learn More + Learn More @@ -72,7 +72,7 @@

    - Unfortunately, our extensions are not currently supported on Safari. + Unfortunately, our extensions are not currently supported on Safari.

    diff --git a/app/views/extensions/opera.html b/app/plugins/bookmarks/views/extensions/opera.html similarity index 97% rename from app/views/extensions/opera.html rename to app/plugins/bookmarks/views/extensions/opera.html index ea47ce8..35160b2 100644 --- a/app/views/extensions/opera.html +++ b/app/plugins/bookmarks/views/extensions/opera.html @@ -55,7 +55,7 @@ diff --git a/app/views/extensions/safari.html b/app/plugins/bookmarks/views/extensions/safari.html similarity index 100% rename from app/views/extensions/safari.html rename to app/plugins/bookmarks/views/extensions/safari.html diff --git a/app/plugins/bookmarks/views/folders/edit.html b/app/plugins/bookmarks/views/folders/edit.html index fcf1fd0..89c04fc 100644 --- a/app/plugins/bookmarks/views/folders/edit.html +++ b/app/plugins/bookmarks/views/folders/edit.html @@ -1,43 +1,46 @@ +
    +
    + Edit Folder +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {folderSelect} +
    + +
    + +
    +
    +
    + +
    + {colorSelect} +
    +
    + + - -

    Edit Folder

    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    - {folderSelect} -
    - -
    - -
    -
    -
    - -
    - {colorSelect} -
    -
    - - - - - -
    - -
    -
    - \ No newline at end of file + +
    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/folders/list.html b/app/plugins/bookmarks/views/folders/list.html index 7fabceb..cc2afad 100644 --- a/app/plugins/bookmarks/views/folders/list.html +++ b/app/plugins/bookmarks/views/folders/list.html @@ -1,35 +1,34 @@ - -
    - - - - - - - - - - - - {LOOP} - - - - - - - - - {/LOOP} - {ALT} - - - - {/ALT} - -
    TitlePrivacyDescription
    {prettyTitle}{prettyPrivacy}{description}
    - No results to show. -
    -
    - Create -
    \ No newline at end of file + + + + + + + + + + + {LOOP} + + + + + + + {/LOOP} + {ALT} + + + + {/ALT} + +
    TitlePrivacyDescription
    {prettyTitle}{prettyPrivacy}{description} + + + +
    + No results to show. +
    +
    + Create +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/folders/listPage.html b/app/plugins/bookmarks/views/folders/listPage.html index de5e22e..003a3db 100644 --- a/app/plugins/bookmarks/views/folders/listPage.html +++ b/app/plugins/bookmarks/views/folders/listPage.html @@ -1,6 +1,5 @@ -
    -
    - Folders List -
    +
    + Folders List +
    {foldersList}
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/import.html b/app/plugins/bookmarks/views/import.html index e79d544..404c1b2 100644 --- a/app/plugins/bookmarks/views/import.html +++ b/app/plugins/bookmarks/views/import.html @@ -1,15 +1,15 @@ -
    -
    +
    +
    Import Bookmarks
    -
    -
    + +
    - -
    -
    - -
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/nav/folderTabs.html b/app/plugins/bookmarks/views/nav/folderTabs.html index f73debb..6303c91 100644 --- a/app/plugins/bookmarks/views/nav/folderTabs.html +++ b/app/plugins/bookmarks/views/nav/folderTabs.html @@ -1,8 +1,10 @@ {userFolderTabs} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/nav/viewOptions.html b/app/plugins/bookmarks/views/nav/viewOptions.html index 2a9783b..5435562 100644 --- a/app/plugins/bookmarks/views/nav/viewOptions.html +++ b/app/plugins/bookmarks/views/nav/viewOptions.html @@ -1,59 +1,66 @@ -
    -
    -
    -
    -
    - -
    -
    Edit Mode:
    -
    - - -
    -
    +
    +
    +
    + +
    +
    Edit Mode:
    +
    + + +
    +
    - -
    -
    Status:
    -
    - - -
    -
    - - -
    -
    + +
    +
    Status:
    +
    + + +
    +
    + + +
    +
    - -
    -
    Buttons:
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    + +
    +
    Buttons:
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    -
    + +
    diff --git a/app/plugins/bookmarks/views/share.html b/app/plugins/bookmarks/views/share.html index b4753ab..d1b33e7 100644 --- a/app/plugins/bookmarks/views/share.html +++ b/app/plugins/bookmarks/views/share.html @@ -7,7 +7,7 @@
    {LOOP} - {panel} + {panel} {/LOOP} {ALT}
    diff --git a/app/plugins/members/views/admin/memberships/list.html b/app/plugins/members/views/admin/memberships/list.html index 2feda77..3c51c02 100644 --- a/app/plugins/members/views/admin/memberships/list.html +++ b/app/plugins/members/views/admin/memberships/list.html @@ -14,7 +14,7 @@ - + diff --git a/app/plugins/members/views/admin/memberships/view.html b/app/plugins/members/views/admin/memberships/view.html index 8e985c0..22cdb90 100644 --- a/app/plugins/members/views/admin/memberships/view.html +++ b/app/plugins/members/views/admin/memberships/view.html @@ -64,7 +64,7 @@ \ No newline at end of file diff --git a/app/plugins/wip/views/admin/list.html b/app/plugins/wip/views/admin/list.html index 7d04feb..759b29a 100644 --- a/app/plugins/wip/views/admin/list.html +++ b/app/plugins/wip/views/admin/list.html @@ -12,7 +12,7 @@ - + diff --git a/app/views/footer/center.html b/app/views/footer/center.html index 435eda4..bfb31d8 100644 --- a/app/views/footer/center.html +++ b/app/views/footer/center.html @@ -1,5 +1,5 @@
    -
    More Info
    +
    More Info
    - + Get started
    -
    -
    +
    +

    Yearly

    @@ -340,7 +340,7 @@
    • Its cheaper if you like the product
    - + Get started
    @@ -350,5 +350,5 @@
    \ No newline at end of file diff --git a/app/views/nav/main.html b/app/views/nav/main.html index 11988cf..a6c2808 100644 --- a/app/views/nav/main.html +++ b/app/views/nav/main.html @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/images/dashboard.png b/images/dashboard.png new file mode 100644 index 0000000..fad10e7 Binary files /dev/null and b/images/dashboard.png differ diff --git a/images/folders.png b/images/folders.png new file mode 100644 index 0000000..7a3650f Binary files /dev/null and b/images/folders.png differ diff --git a/images/manage.png b/images/manage.png new file mode 100644 index 0000000..0a9e301 Binary files /dev/null and b/images/manage.png differ