diff --git a/src/admin/components/advanced-search/advanced-search.vue b/src/admin/components/advanced-search/advanced-search.vue new file mode 100644 index 000000000..27afacd4d --- /dev/null +++ b/src/admin/components/advanced-search/advanced-search.vue @@ -0,0 +1,123 @@ + + + + + \ No newline at end of file diff --git a/src/admin/components/edition/category-edition-form.vue b/src/admin/components/edition/category-edition-form.vue index 0c50a64da..e5f973225 100644 --- a/src/admin/components/edition/category-edition-form.vue +++ b/src/admin/components/edition/category-edition-form.vue @@ -195,14 +195,17 @@ if (formNotSaved) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_category_not_saved'), - onConfirm: () => { - next(); - }, - cancelText: this.$i18n.get('cancel'), - confirmText: this.$i18n.get('continue'), - type: 'is-secondary' - }); + onConfirm: () => { + next(); + }, + icon: 'alert-circle', + hasIcon: true, + cancelText: this.$i18n.get('cancel'), + confirmText: this.$i18n.get('continue'), + type: 'is-success' + }); } else { next() } diff --git a/src/admin/components/edition/collection-edition-form.vue b/src/admin/components/edition/collection-edition-form.vue index 30c03068b..9bcc36dce 100644 --- a/src/admin/components/edition/collection-edition-form.vue +++ b/src/admin/components/edition/collection-edition-form.vue @@ -301,6 +301,7 @@ class="control" custom> {{ registeredViewModes[viewMode].label }} @@ -326,6 +327,7 @@ @focus="clearErrors('default_view_mode')"> diff --git a/src/admin/components/edition/item-edition-form.vue b/src/admin/components/edition/item-edition-form.vue index 921a2fe3e..aa8b805c1 100644 --- a/src/admin/components/edition/item-edition-form.vue +++ b/src/admin/components/edition/item-edition-form.vue @@ -676,14 +676,17 @@ export default { beforeRouteLeave ( to, from, next ) { if (this.item.status == 'auto-draft') { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_item_not_saved'), - onConfirm: () => { - next(); - }, - cancelText: this.$i18n.get('cancel'), - confirmText: this.$i18n.get('continue'), - type: 'is-secondary' - }); + onConfirm: () => { + next(); + }, + icon: 'alert-circle', + hasIcon: true, + cancelText: this.$i18n.get('cancel'), + confirmText: this.$i18n.get('continue'), + type: 'is-success' + }); } else { next() } diff --git a/src/admin/components/lists/categories-list.vue b/src/admin/components/lists/categories-list.vue index 60d4db813..985d10fcb 100644 --- a/src/admin/components/lists/categories-list.vue +++ b/src/admin/components/lists/categories-list.vue @@ -180,6 +180,7 @@ }, deleteOneCategory(categoryId) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_category_delete'), onConfirm: () => { this.deleteCategory(categoryId) @@ -205,11 +206,15 @@ // queue: true // }); }); - } + }, + icon: 'alert-circle', + hasIcon: true, + type: 'is-success' }); }, deleteSelectedCategories() { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_selected_categories_delete'), onConfirm: () => { @@ -237,7 +242,10 @@ } } this.allCategoriesOnPageSelected = false; - } + }, + icon: 'alert-circle', + hasIcon: true, + type: 'is-success' }); }, goToCategoryPage(categoryId) { diff --git a/src/admin/components/lists/collections-list.vue b/src/admin/components/lists/collections-list.vue index f4630dcfb..1c70f6143 100644 --- a/src/admin/components/lists/collections-list.vue +++ b/src/admin/components/lists/collections-list.vue @@ -230,6 +230,7 @@ export default { }, deleteOneCollection(collectionId) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.isOnTrash ? this.$i18n.get('info_warning_collection_delete') : this.$i18n.get('info_warning_collection_trash'), onConfirm: () => { this.deleteCollection({ collectionId: collectionId, isPermanently: this.isOnTrash }) @@ -254,11 +255,15 @@ export default { // queue: true // }) }); - } + }, + icon: 'alert-circle', + hasIcon: true, + type: 'is-success' }); }, deleteSelectedCollections() { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.isOnTrash ? this.$i18n.get('info_warning_selected_collections_delete') : this.$i18n.get('info_warning_selected_collections_trash'), onConfirm: () => { @@ -286,7 +291,10 @@ export default { } } this.allCollectionsOnPageSelected = false; - } + }, + icon: 'alert-circle', + hasIcon: true, + type: 'is-success' }); }, goToCollectionPage(collectionId) { diff --git a/src/admin/components/lists/fields-list.vue b/src/admin/components/lists/fields-list.vue index dfb25e567..aaed4f7e7 100644 --- a/src/admin/components/lists/fields-list.vue +++ b/src/admin/components/lists/fields-list.vue @@ -195,15 +195,18 @@ export default { } if ((this.openedFieldId != '' && this.openedFieldId != undefined) || hasUnsavedForms ) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_fields_not_saved'), - onConfirm: () => { - this.onEditionCanceled(); - next(); - }, - cancelText: this.$i18n.get('cancel'), - confirmText: this.$i18n.get('continue'), - type: 'is-secondary' - }); + onConfirm: () => { + this.onEditionCanceled(); + next(); + }, + icon: 'alert-circle', + hasIcon: true, + cancelText: this.$i18n.get('cancel'), + confirmText: this.$i18n.get('continue'), + type: 'is-success' + }); } else { next() } diff --git a/src/admin/components/lists/filters-list.vue b/src/admin/components/lists/filters-list.vue index b2f184081..a05dc6e11 100644 --- a/src/admin/components/lists/filters-list.vue +++ b/src/admin/components/lists/filters-list.vue @@ -222,15 +222,18 @@ export default { } if ((this.openedFilterId != '' && this.openedFilterId != undefined) || hasUnsavedForms ) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_filters_not_saved'), - onConfirm: () => { - this.onEditionCanceled(); - next(); - }, - cancelText: this.$i18n.get('cancel'), - confirmText: this.$i18n.get('continue'), - type: 'is-secondary' - }); + onConfirm: () => { + this.onEditionCanceled(); + next(); + }, + icon: 'alert-circle', + hasIcon: true, + cancelText: this.$i18n.get('cancel'), + confirmText: this.$i18n.get('continue'), + type: 'is-success' + }); } else { next() } diff --git a/src/admin/components/lists/items-list.vue b/src/admin/components/lists/items-list.vue index 35f1153cd..0d887c83a 100644 --- a/src/admin/components/lists/items-list.vue +++ b/src/admin/components/lists/items-list.vue @@ -214,6 +214,7 @@ export default { }, deleteOneItem(itemId) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.isOnTrash ? this.$i18n.get('info_warning_item_delete') : this.$i18n.get('info_warning_item_trash'), onConfirm: () => { this.deleteItem({ itemId: itemId, isPermanently: this.isOnTrash }) @@ -239,11 +240,15 @@ export default { // queue: true // }) }); - } + }, + icon: 'alert-circle', + hasIcon: true, + type: 'is-success' }); }, deleteSelectedItems() { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.isOnTrash ? this.$i18n.get('info_warning_selected_items_delete') : this.$i18n.get('info_warning_selected_items_trash'), onConfirm: () => { @@ -275,7 +280,10 @@ export default { } } this.allItemsOnPageSelected = false; - } + }, + icon: 'alert-circle', + hasIcon: true, + type: 'is-success' }); }, goToItemPage(item) { diff --git a/src/admin/components/lists/terms-list.vue b/src/admin/components/lists/terms-list.vue index 918ff369a..9a0586306 100644 --- a/src/admin/components/lists/terms-list.vue +++ b/src/admin/components/lists/terms-list.vue @@ -213,13 +213,16 @@ export default { // Checks if user is deleting a term with unsaved info. if (term.id == 'new' || !term.saved || term.opened) { this.$dialog.confirm({ + title: this.$i18n.get('label_warning'), message: this.$i18n.get('info_warning_terms_not_saved'), - onCancel: () => { return }, - onConfirm: () => { this.removeTerm(term);}, - cancelText: this.$i18n.get('cancel'), - confirmText: this.$i18n.get('continue'), - type: 'is-secondary' - }); + onCancel: () => { return }, + onConfirm: () => { this.removeTerm(term); }, + icon: 'alert-circle', + hasIcon: true, + cancelText: this.$i18n.get('cancel'), + confirmText: this.$i18n.get('continue'), + type: 'is-success' + }); } else{ this.removeTerm(term); } diff --git a/src/admin/components/navigation/tainacan-header.vue b/src/admin/components/navigation/tainacan-header.vue index 2f6b0abc1..5fa34bcb6 100644 --- a/src/admin/components/navigation/tainacan-header.vue +++ b/src/admin/components/navigation/tainacan-header.vue @@ -20,7 +20,7 @@
@@ -28,7 +28,7 @@
- {{ $i18n.get('advanced_search') }} + {{ $i18n.get('advanced_search') }}

- +
{{ $i18n.get('advanced_search') }}

{{ $i18n.get('filters') }}

- + + @@ -332,7 +336,7 @@ import ItemsList from '../../components/lists/items-list.vue'; import FiltersItemsList from '../../components/search/filters-items-list.vue'; import Pagination from '../../components/search/pagination.vue' - // import AdvancedSearch from '../../components/advanced-search/advanced-search.vue'; + import AdvancedSearch from '../../components/advanced-search/advanced-search.vue'; import { mapActions, mapGetters } from 'vuex'; export default { @@ -361,6 +365,10 @@ enabledViewModes: Object // Used only on theme }, computed: { + openAdvancedSearch(){ + console.log('Called here', this.$route.meta); + return this.$route.meta.openAdvancedSearch; + }, items() { return this.getItems(); }, @@ -396,7 +404,7 @@ ItemsList, FiltersItemsList, Pagination, - // AdvancedSearch, + AdvancedSearch, }, watch: { tableFields() { @@ -428,6 +436,11 @@ 'getViewMode', 'getTotalItems' ]), + openAdvancedSearchComponent(){ + console.log('Called here', this.$route.meta); + this.$set(this.$route.meta, 'openAdvancedSearch', !this.$route.meta.openAdvancedSearch); + console.log('Called here', this.$route.meta); + }, updateSearch() { this.$eventBusSearch.setSearchQuery(this.futureSearchQuery); }, diff --git a/src/admin/scss/_modals.scss b/src/admin/scss/_modals.scss index 637c2ad51..2e517cd91 100644 --- a/src/admin/scss/_modals.scss +++ b/src/admin/scss/_modals.scss @@ -1,4 +1,3 @@ - // Tainacan modals .tainacan-modal-title { h1, h2 { @@ -35,9 +34,64 @@ padding: 80px 0em 0.4em 0em !important; } } +// Bulma modals customized for Tainacan +.dialog{ + .modal-background { + background-color: rgba(0, 0, 0, 0.70); + } + .modal-card { + background-color: $modal-backgound-color; + color: $secondary; + border-radius: 10px; -.modal-background { - background-color: rgba(0, 0, 0, 0.70); + .modal-card-head, .modal-card-body, .modal-card-foot { + background-color: $modal-backgound-color; + color: $secondary; + border: none; + } + .modal-card-head { + p { color: $secondary; } + font-weight: normal; + padding: 30px 35px 0px 35px; + } + .modal-card-body { + padding: 16px 35px; + + i { + color: white !important; + &::before { + background-color: $danger; + border-radius: 55px; + display: initial; + } + } + } + .modal-card-foot { + justify-content: space-between; + padding: 0px 35px 30px 35px; + + .button { + border-radius: 6px !important; + font-weight: normal; + padding: 2px 15px !important; + margin-top: 0px !important; + margin-bottom: 0px !important; + height: inherit !important; + box-shadow: none !important; + display: inline-flex !important; + cursor: pointer; + font-size: 13px !important; + } + .button.is-success { + border: none; + } + .button:not(.is-success) { + background-color: white; + color: $tertiary; + border: 1px solid $gray-light; + } + } + } } // WordPress Media Modal customization diff --git a/src/admin/scss/_variables.scss b/src/admin/scss/_variables.scss index 1e46513db..d0848ebce 100644 --- a/src/admin/scss/_variables.scss +++ b/src/admin/scss/_variables.scss @@ -18,6 +18,7 @@ $primary-darker: darken($primary-dark, 5%); $success: #25a189; $success-invert: findColorInvert($success); +$modal-backgound-color: #bfd8dd; $separator-color: #2b98a4; $tainacan-input-color: #1d1d1d; $tainacan-input-background: #e5e5e5; diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index d784127ae..36f06217f 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -197,6 +197,8 @@ return [ 'label_default_view_mode' => __( 'Default view mode', 'tainacan' ), 'label_enabled_view_modes' => __( 'Enabled view modes', 'tainacan' ), 'label_view_modes_available' => __( 'View modes available on theme', 'tainacan' ), + 'label_warning' => __( 'Warning', 'tainacan' ), + 'label_error' => __( 'Erro', 'tainacan' ), // Instructions. More complex sentences to guide user and placeholders 'instruction_delete_selected_collections' => __( 'Delete selected collections', 'tainacan' ), diff --git a/src/api/endpoints/class-tainacan-rest-filters-controller.php b/src/api/endpoints/class-tainacan-rest-filters-controller.php index c1e9d168c..7a93f4c13 100644 --- a/src/api/endpoints/class-tainacan-rest-filters-controller.php +++ b/src/api/endpoints/class-tainacan-rest-filters-controller.php @@ -327,7 +327,7 @@ class REST_Filters_Controller extends REST_Controller { $item_arr['enabled'] = $item->get_enabled_for_collection(); } - $item_arr['filter_type_object'] = $item->get_filter_type_object()->_toArray(); + $item_arr['filter_type_object'] = $item->get_filter_type_object() ? $item->get_filter_type_object()->_toArray() : $item->get_filter_type_object(); return $item_arr; } diff --git a/src/classes/filter-types/custom-interval/CustomInterval.vue b/src/classes/filter-types/custom-interval/CustomInterval.vue index 4b08e2ef3..2ebbf6999 100644 --- a/src/classes/filter-types/custom-interval/CustomInterval.vue +++ b/src/classes/filter-types/custom-interval/CustomInterval.vue @@ -4,7 +4,7 @@
get_id().'.txt', 'w' ); fwrite( $file, $tmp['body'] ); fclose( $file ); diff --git a/src/importer/import.php b/src/importer/import.php new file mode 100644 index 000000000..11d819694 --- /dev/null +++ b/src/importer/import.php @@ -0,0 +1,90 @@ +parse_args($argv); + $this->run(); + + } + + /** + * parse args from and set the attributs + * 1 - Old Tainacan url (required) + */ + function parse_args($argv) { + + if (!is_array($argv)) + return; + + + if (isset($argv[1])) { + + if (filter_var($argv[1], FILTER_VALIDATE_URL)) { + $this->url = $argv[1]; + } + + } + + if (isset($argv[2])) { + + if (is_numeric($argv[2])) { + $this->step = $argv[2]; + } else { + $this->run = ''; + } + + } + + } + + /** + * echo message in prompt line + */ + function log($msg) { + + echo $msg . PHP_EOL; + + } + + function run() { + + $start = $partial = microtime(true); + + // Avoid warnings + $_SERVER['SERVER_PROTOCOL'] = "HTTP/1.1"; + $_SERVER['REQUEST_METHOD'] = "GET"; + + define( 'WP_USE_THEMES', false ); + define( 'SHORTINIT', false ); + require( dirname(__FILE__) . '/../../../../wp-blog-header.php' ); + + $old_tainacan = new \Tainacan\Importer\Old_Tainacan(); + $id = $old_tainacan->get_id(); + + $_SESSION['tainacan_importer'][$id]->set_url($url); + $_SESSION['tainacan_importer'][$id]->set_repository(); + + while (!$_SESSION['tainacan_importer'][$id]->is_finished()){ + $_SESSION['tainacan_importer'][$id]->run(); + } + + $scripttime = microtime(true) - $start; + + $this->log("=========================================================="); + $this->log("=========================================================="); + $this->log("=== Fim do script. Tempo de execução {$scripttime}s"); + $this->log("=========================================================="); + $this->log("=========================================================="); + + } +} + +$x = new ScriptTainacanOld($argv); \ No newline at end of file diff --git a/tests/test-importer.php b/tests/test-importer.php index 908d074c1..064c5e66f 100644 --- a/tests/test-importer.php +++ b/tests/test-importer.php @@ -55,6 +55,10 @@ class ImporterTests extends TAINACAN_UnitTestCase { $_SESSION['tainacan_importer'][$id]->run(); } + $Tainacan_Collections = \Tainacan\Repositories\Collections::get_instance(); + $collections = $Tainacan_Collections->fetch([], 'OBJECT'); + $this->assertEquals(3, $collections, 'total collection in this url does not match'); + $this->assertTrue(true); }*/