diff --git a/src/admin/admin.vue b/src/admin/admin.vue
index 7de35121a..b2bab7a25 100644
--- a/src/admin/admin.vue
+++ b/src/admin/admin.vue
@@ -2,17 +2,15 @@
@@ -40,6 +38,8 @@
.is-fullheight {
height: 100%;
+ margin-bottom: 0px;
+ margin-top: 0px;
}
#primary-menu {
@@ -51,6 +51,11 @@
}
}
+ .is-main-content {
+ padding-bottom: 0px;
+ padding-top: 0px;
+ }
+
#secondary-menu {
background-color: $secondary;
diff --git a/src/admin/components/collections-list.vue b/src/admin/components/collections-list.vue
index 8d279ee53..f9ac2d60f 100644
--- a/src/admin/components/collections-list.vue
+++ b/src/admin/components/collections-list.vue
@@ -31,7 +31,7 @@
@page-change="onPageChange">
-
+
diff --git a/src/admin/images/tainacan_logo_header.png b/src/admin/images/tainacan_logo_header.png
deleted file mode 100644
index eaae2c0f5..000000000
Binary files a/src/admin/images/tainacan_logo_header.png and /dev/null differ
diff --git a/src/admin/js/main.js b/src/admin/js/main.js
index be4165b88..93dd653bc 100644
--- a/src/admin/js/main.js
+++ b/src/admin/js/main.js
@@ -38,16 +38,13 @@ Vue.component('tainacan-relationship', Relationship);
Vue.component('tainacan-form-item', TaincanFormItem);
//------------------------------------------------
-// I18N DIRECTIVE
+// I18N PLUGIN
const I18NPlugin = {};
I18NPlugin.install = function (Vue, options = {}) {
Vue.prototype.$i18n = {
- getString: function (component, key) {
- if (wp_settings.i18n[component] == null || wp_settings.i18n[component] == undefined)
- return "ERROR: Invalid i18n component!"
-
- let string = wp_settings.i18n[component][key];
+ get: function (key) {
+ let string = wp_settings.i18n[key];
return (string != undefined && string != null && string != '' ) ? string : "ERROR: Invalid i18n key!";
}
}
diff --git a/src/admin/pages/collection-page.vue b/src/admin/pages/collection-page.vue
index 58fc8e143..e04b7815a 100644
--- a/src/admin/pages/collection-page.vue
+++ b/src/admin/pages/collection-page.vue
@@ -3,11 +3,10 @@
diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php
index a5389ef78..2585d315f 100644
--- a/src/admin/tainacan-admin-i18n.php
+++ b/src/admin/tainacan-admin-i18n.php
@@ -1,26 +1,24 @@
[
- 'collections' => __('Collections', 'tainacan'),
- 'items' => __('Items', 'tainacan'),
- 'fields' => __('Fields', 'tainacan'),
- 'filters' => __('Filters', 'tainacan'),
- 'categories' => __('Categories', 'tainacan'),
- 'events' => __('Events', 'tainacan')
- ],
-
- 'collection_page' => [
- 'title' => __('Collections', 'tainacan'),
- 'subtitle' => __('Browse Collections', 'tainacan'),
- ],
-
- 'Items_page' => [
- 'title' => __('Items', 'tainacan'),
- 'subtitle' => __('Browse Items', 'tainacan'),
- ]
+ // Tainacan common terms
+ 'repository' => __('Repository', 'tainacan'),
+ 'collections' => __('Collections', 'tainacan'),
+ 'items' => __('Items', 'tainacan'),
+ 'fields' => __('Fields', 'tainacan'),
+ 'filters' => __('Filters', 'tainacan'),
+ 'categories' => __('Categories', 'tainacan'),
+ 'events' => __('Events', 'tainacan'),
+ 'collection' => __('Collection', 'tainacan'),
+ 'item' => __('Item', 'tainacan'),
+ 'field' => __('Field', 'tainacan'),
+ 'filter' => __('Filter', 'tainacan'),
+ 'category' => __('Categorie', 'tainacan'),
+ 'event' => __('Event', 'tainacan'),
+ // Actions
+ 'edit' => __('Edit', 'tainacan'),
+ 'new' => __('New', 'tainacan'),
]
?>
\ No newline at end of file
diff --git a/src/importer/class-tainacan-csv.php b/src/importer/class-tainacan-csv.php
index abc629944..a171115ca 100644
--- a/src/importer/class-tainacan-csv.php
+++ b/src/importer/class-tainacan-csv.php
@@ -5,17 +5,31 @@ use Tainacan;
class CSV extends Importer {
- public $delimiter;
+ public $delimiter = ',';
public function __construct() {
parent::__construct();
}
/**
- *
+ * @return string $delimiter value that divides each column
+ */
+ public function get_delimiter(){
+ return $this->delimiter;
+ }
+
+
+ public function set_delimiter( $delimiter ){
+ $this->delimiter = $delimiter;
+ }
+
+ /**
+ * @inheritdoc
*/
public function get_fields_source(){
- // TODO: Implement get_fields_source() method.
+ $file = new \SplFileObject( $this->tmp_file, 'r' );
+ $file->seek(0 );
+ return $file->fgetcsv( $this->get_delimiter() );
}
/**
@@ -31,4 +45,16 @@ class CSV extends Importer {
public function get_options(){
// TODO: Implement get_options() method.
}
+
+
+ public function get_total_items(){
+ if( isset( $this->total_items ) ){
+ return $this->total_items;
+ } else {
+ $file = new \SplFileObject( $this->tmp_file, 'r' );
+ $file->seek(PHP_INT_MAX);
+ // -1 removing header
+ return $this->total_items = $file->key() - 1;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/importer/class-tainacan-importer.php b/src/importer/class-tainacan-importer.php
index 76f8730bc..65b5684cd 100644
--- a/src/importer/class-tainacan-importer.php
+++ b/src/importer/class-tainacan-importer.php
@@ -27,6 +27,14 @@ abstract class Importer {
return $this->id;
}
+
+ /**
+ * @return array
+ */
+ public function get_mapping(){
+ return $this->mapping;
+ }
+
/**
* @param Tainacan\Entities\Collection $collection
*/
@@ -35,6 +43,8 @@ abstract class Importer {
}
/**
+ * save an associative array with tainacan field id and field from source
+ *
* @param array $mapping Mapping importer-fields
*/
public function set_mapping( $mapping ){
@@ -48,8 +58,7 @@ abstract class Importer {
public function set_file( $file ){
$new_file = $this->upload_file( $file );
if ( is_numeric( $new_file ) ) {
- $attach = get_post($new_file);
- $this->tmp_file = $attach->guid;
+ $this->tmp_file = get_attached_file( $new_file );
} else {
return false;
}
@@ -85,9 +94,18 @@ abstract class Importer {
}
}
+ /**
+ * @return mixed
+ */
+ public function get_collection_fields(){
+ return $this->collection;
+ }
+
/**
* get the fields of file/url to allow mapping
* should returns an array
+ *
+ * @return array $fields_source the fields from the source
*/
abstract public function get_fields_source();
@@ -101,6 +119,13 @@ abstract class Importer {
*/
abstract public function get_options();
+ /**
+ * return the all items found
+ *
+ * @return int Total of items
+ */
+ abstract public function get_total_items();
+
/**
* @param $start
* @param $end
diff --git a/tests/test-importer.php b/tests/test-importer.php
index d8da9648a..7765c7a31 100644
--- a/tests/test-importer.php
+++ b/tests/test-importer.php
@@ -36,7 +36,9 @@ class ImporterTests extends TAINACAN_UnitTestCase {
/**
* @group importer
*/
- public function test_file_import_csv () {
+ public function test_file_csv () {
+ global $Tainacan_Fields;
+
$csv_importer = new Importer\CSV();
$id = $csv_importer->get_id();
@@ -65,8 +67,46 @@ class ImporterTests extends TAINACAN_UnitTestCase {
$_SESSION['tainacan_importer'][$id]->set_file( 'demosaved.csv' );
- // here the session is init already
+ // file isset on importer
$this->assertTrue( isset( $_SESSION['tainacan_importer'][$id]->tmp_file ) );
+
+ // count size of csv
+ $this->assertEquals( 5, $_SESSION['tainacan_importer'][$id]->get_total_items() );
+
+ // get fields to mapping
+ $headers = $_SESSION['tainacan_importer'][$id]->get_fields_source();
+ $this->assertEquals( $headers[4], 'Column 5' );
+
+ // inserting the collection
+ $collection = $this->tainacan_entity_factory->create_entity(
+ 'collection',
+ array(
+ 'name' => 'Other',
+ 'description' => 'adasdasdsa',
+ 'default_order' => 'DESC',
+ 'status' => 'publish'
+ ),
+ true
+ );
+
+ // set the importer
+ $_SESSION['tainacan_importer'][$id]->set_collection( $collection );
+
+ // get collection fields to map
+ $fields = $Tainacan_Fields->fetch_by_collection( $collection, [], 'OBJECT' ) ;
+
+ //create a random mapping
+ $map = [];
+ foreach ( $fields as $index => $field ){
+ $map[$field->get_id()] = $headers[$index];
+ }
+
+ // set the mapping
+ $_SESSION['tainacan_importer'][$id]->set_mapping( $map );
+
+ // check is equal
+ $this->assertEquals( $_SESSION['tainacan_importer'][$id]->get_mapping(), $map );
+
}
/**