diff --git a/app/plugins/bookmarks/controllers/api/bookmark_folders.php b/app/plugins/bookmarks/controllers/api/bookmark_folders.php new file mode 100644 index 0000000..62a88f8 --- /dev/null +++ b/app/plugins/bookmarks/controllers/api/bookmark_folders.php @@ -0,0 +1,71 @@ + + * @link https://TheTempusProject.com + * @license https://opensource.org/licenses/MIT [MIT LICENSE] + */ +namespace TheTempusProject\Controllers\Api; + +use TheTempusProject\Models\User; +use TheTempusProject\Classes\ApiController; +use TheTempusProject\Houdini\Classes\Views; +use TheTempusProject\Canary\Bin\Canary as Debug; +use TheTempusProject\Bedrock\Functions\Input; +use TheTempusProject\Models\Folders; + +class BookmarkFolders extends ApiController { + protected static $folders; + + public function __construct() { + parent::__construct(); + self::$folders = new Folders; + } + + public function create() { + header('Access-Control-Allow-Origin: *'); + + $user = self::$authToken->createdBy; + + $payload = @file_get_contents('php://input'); + $payload = json_decode( $payload, true ); + + $result = self::$folders->create( + $payload['name'], + $payload['folder'] ?? 0, + $payload['notes'] ?? '', + $payload['color'] ?? 'default', + $payload['privacy'] ?? 'private', + $user + ); + + if ( ! $result ) { + $responseType = 'error'; + $response = 'There was an error creating your folder.'; + } else { + $responseType = 'success'; + $response = 'success'; + } + Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]); + } + + public function list( $id = '' ) { + header('Access-Control-Allow-Origin: *'); + $user = self::$authToken->createdBy; + $folders = self::$folders->bySpecificUser( $user ); + + if ( ! $folders ) { + $responseType = 'error'; + $response = 'There was an error creating your folder.'; + } else { + $responseType = 'folders'; + $response = $folders; + } + Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]); + } +} + diff --git a/app/plugins/bookmarks/controllers/api/bookmarks.php b/app/plugins/bookmarks/controllers/api/bookmarks.php index fbbfc32..663b709 100644 --- a/app/plugins/bookmarks/controllers/api/bookmarks.php +++ b/app/plugins/bookmarks/controllers/api/bookmarks.php @@ -33,25 +33,22 @@ class Bookmarks extends ApiController { $payload = @file_get_contents('php://input'); $payload = json_decode( $payload, true ); - Debug::error($payload['name']); $result = self::$bookmarks->create( $payload['name'], $payload['url'], - 0, - $payload['notes'], - 'default', - 'private', - 'external', - $user + $payload['folder'] ?? 0, + $payload['notes'] ?? '', + $payload['color'] ?? 'default', + $payload['privacy'] ?? 'private', ); if ( ! $result ) { $responseType = 'error'; - $response = 'There was an error creating your bookmark.'; + $response = 'There was an error creating your folder.'; } else { - $responseType = 'success'; - $response = 'success'; + $responseType = 'data'; + $response = $result; } Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]); } diff --git a/app/plugins/bookmarks/models/bookmarks.php b/app/plugins/bookmarks/models/bookmarks.php index b40b9f8..3ad8c84 100644 --- a/app/plugins/bookmarks/models/bookmarks.php +++ b/app/plugins/bookmarks/models/bookmarks.php @@ -320,34 +320,34 @@ class Bookmarks extends DatabaseModel { } if ( empty( $instance->hiddenAt ) ) { $instance->hideBtn = ' - + '; } else { $instance->hideBtn = ' - + '; } if ( empty( $instance->archivedAt ) ) { $instance->archiveBtn = ' - + '; } else { $instance->archiveBtn = ' - + '; } if ( ! empty( $instance->refreshedAt ) && time() < ( $instance->refreshedAt + ( 60 * 10 ) ) ) { $instance->refreshBtn = ' - + '; } else { $instance->refreshBtn = ' - + '; } diff --git a/app/plugins/bookmarks/models/folders.php b/app/plugins/bookmarks/models/folders.php index 62a6367..4fe4481 100644 --- a/app/plugins/bookmarks/models/folders.php +++ b/app/plugins/bookmarks/models/folders.php @@ -38,7 +38,10 @@ class Folders extends DatabaseModel { parent::__construct(); } - public function create( $title, $folderID = 0, $description = '', $color = 'default', $privacy = 'private' ) { + public function create( $title, $folderID = 0, $description = '', $color = 'default', $privacy = 'private', $user = null ) { + if ( empty( $user ) ) { + $user = App::$activeUser->ID; + } if ( ! Check::dataTitle( $title ) ) { Debug::info( 'Folders: illegal title.' ); return false; @@ -48,9 +51,10 @@ class Folders extends DatabaseModel { 'description' => $description, 'color' => $color, 'privacy' => $privacy, - 'createdBy' => App::$activeUser->ID, + 'createdBy' => $user, 'createdAt' => time(), ]; + if ( !empty( $folderID ) ) { $fields['folderID'] = $folderID; } @@ -102,6 +106,20 @@ class Folders extends DatabaseModel { return $this->filter( $folders->results() ); } + public function bySpecificUser( $userID, $limit = null ) { + $whereClause = ['createdBy', '=', $userID]; + if ( empty( $limit ) ) { + $folders = self::$db->get( $this->tableName, $whereClause ); + } else { + $folders = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] ); + } + if ( !$folders->count() ) { + Debug::info( 'No Folders found.' ); + return false; + } + return $this->filter( $folders->results() ); + } + public function getName( $id ) { $folder = self::findById( $id ); if (false == $folder) { diff --git a/app/plugins/bookmarks/views/bookmarks/list.html b/app/plugins/bookmarks/views/bookmarks/list.html index 16dd9f1..7a25ff4 100644 --- a/app/plugins/bookmarks/views/bookmarks/list.html +++ b/app/plugins/bookmarks/views/bookmarks/list.html @@ -13,16 +13,16 @@ {LOOP}
Basic bookmark storage
No import/export
Completely free
- Sign Up + Sign Up @@ -40,7 +40,7 @@Import/export bookmarks
Advanced curation tools
{prettyPriceMonthly}/month
- Sign Up + Sign Up @@ -53,7 +53,7 @@Save with annual billing
All features included
{prettyPriceYearly}/year
- Sign Up + Sign Up diff --git a/app/plugins/members/views/landing2.html b/app/plugins/members/views/landing2.html index defd4c3..710d7bc 100644 --- a/app/plugins/members/views/landing2.html +++ b/app/plugins/members/views/landing2.html @@ -20,7 +20,7 @@ @@ -30,7 +30,7 @@ diff --git a/app/plugins/members/views/manage.html b/app/plugins/members/views/manage.html index a71143a..13ecb38 100644 --- a/app/plugins/members/views/manage.html +++ b/app/plugins/members/views/manage.html @@ -19,8 +19,8 @@