creating folders from ui

This commit is contained in:
Bachir Soussi Chiadmi 2020-11-19 17:09:48 +01:00
parent 6718e5c9f9
commit 41177bd4e6
19 changed files with 122 additions and 297 deletions

View File

@ -1,32 +0,0 @@
uuid: 4183b53b-30db-4b2d-b087-cb903f23fe27
langcode: en
status: true
dependencies:
module:
- node
id: dossier
label: Dossier
bundles:
- article
- materiau
- thematique
entity_type: node
global: false
weight: 0
flag_short: 'Flag this item'
flag_long: ''
flag_message: ''
unflag_short: 'Unflag this item'
unflag_long: ''
unflag_message: ''
unflag_denied_text: ''
flag_type: 'entity:node'
link_type: reload
flagTypeConfig:
show_in_links: { }
show_as_field: true
show_on_form: false
show_contextual_link: true
extra_permissions:
owner: owner
linkTypeConfig: { }

View File

@ -1,32 +0,0 @@
uuid: cc972bc9-a9d6-4715-bde0-b686a22069d2
langcode: en
status: true
dependencies:
module:
- flag_lists
- node
_core:
default_config_hash: gv5HCXt_zANnxz5g4ygaALNMnN5yQzI4jy3A7c8phFc
id: flag_list_template_1
label: 'Flag list template 1'
bundles: { }
entity_type: node
global: false
weight: 0
flag_short: 'Add this item to the [flagging_collection:name] list'
flag_long: 'Add this to your flag list'
flag_message: 'Added to the flag list'
unflag_short: 'Remove this item from the [flagging_collection:name] list'
unflag_long: 'Remove this item from your flag list'
unflag_message: 'Removed from the flag list'
unflag_denied_text: ''
flag_type: 'entity:node'
link_type: ajax_link
flagTypeConfig:
show_in_links: { }
show_as_field: true
show_on_form: false
show_contextual_link: false
extra_permissions:
owner: '0'
linkTypeConfig: { }

View File

@ -1,33 +0,0 @@
uuid: null
langcode: en
status: true
dependencies:
module:
- flag_lists
- node
id: test_dossier
label: 'test dossier'
bundles:
- article
- materiau
- thematique
entity_type: node
global: false
weight: 0
flag_short: 'Flag this item'
flag_long: ''
flag_message: ''
unflag_short: 'Unflag this item'
unflag_long: ''
unflag_message: ''
unflag_denied_text: ''
flag_type: 'entity:node'
link_type: ajax_link
flagTypeConfig:
show_in_links: { }
show_as_field: true
show_on_form: false
show_contextual_link: false
extra_permissions:
owner: owner
linkTypeConfig: { }

View File

@ -1,9 +0,0 @@
uuid: null
langcode: en
status: true
dependencies: { }
id: dossier
label: Dossier
base_flag: dossier
owner: root
weight: null

View File

@ -1,11 +0,0 @@
uuid: e0111fa4-31c3-483a-918f-aca9c752190f
langcode: en
status: true
dependencies: { }
_core:
default_config_hash: is37xp2En_K1r0KAxyELb0cyrB6aQH5Ygr7o6tICk24
id: flag_list_template_1
label: 'Flag list template 1'
base_flag: flag_list_template_1
owner: 'Drupal Master'
weight: null

View File

@ -1,8 +0,0 @@
uuid: 93164e3c-1d21-4129-bafc-e8956664f1db
langcode: en
status: true
dependencies: { }
_core:
default_config_hash: FgMUj7Lcs3yxNwSGpVwKZ6N00JNmxn3FndQcd-230hM
id: flagging_collection_type_1
label: 'Flagging collection type 1'

View File

@ -1,15 +0,0 @@
uuid: 19f6415c-55ae-4d43-9804-3b6c9725eb29
langcode: en
status: true
dependencies:
config:
- flag.flag.dossier
module:
- flag
id: flag_action.dossier_flag
label: 'Flag this item'
type: node
plugin: 'flag_action:dossier_flag'
configuration:
flag_id: dossier
flag_action: flag

View File

@ -1,15 +0,0 @@
uuid: ee3693e6-2a01-4850-a464-099930242d42
langcode: en
status: true
dependencies:
config:
- flag.flag.dossier
module:
- flag
id: flag_action.dossier_unflag
label: 'Unflag this item'
type: node
plugin: 'flag_action:dossier_unflag'
configuration:
flag_id: dossier
flag_action: unflag

View File

@ -1,17 +0,0 @@
uuid: b883b2b8-2955-4df1-987b-10a5e1488fd2
langcode: en
status: true
dependencies:
config:
- flag.flag.flag_list_template_1
module:
- flag
_core:
default_config_hash: LkE1QB2Y0oqjrb33mVsdE0cSy6E9wujJklHGqH91GvE
id: flag_action.flag_list_template_1_flag
label: 'Add this item to a list'
type: node
plugin: 'flag_action:flag_list_template_1_flag'
configuration:
flag_id: flag_list_template_1
flag_action: flag

View File

@ -1,17 +0,0 @@
uuid: 657ee4d7-61e7-4466-b6d5-37270056d4ef
langcode: en
status: true
dependencies:
config:
- flag.flag.flag_list_template_1
module:
- flag
_core:
default_config_hash: dkSOtOrwdYQJVIAi2LOYl8XRZCqSIIIb0Hb9J-2NNug
id: flag_action.flag_list_template_1_unflag
label: 'Remove this item from the list'
type: node
plugin: 'flag_action:flag_list_template_1_unflag'
configuration:
flag_id: flag_list_template_1
flag_action: unflag

View File

@ -1,15 +0,0 @@
uuid: dbe3c645-f4b1-416c-b9b2-43bf919eb593
langcode: en
status: true
dependencies:
config:
- flag.flag.test_dossier
module:
- flag
id: flag_action.test_dossier_flag
label: 'Flag this item'
type: node
plugin: 'flag_action:test_dossier_flag'
configuration:
flag_id: test_dossier
flag_action: flag

View File

@ -1,15 +0,0 @@
uuid: c4aa7c16-1473-471b-81b0-3a862238bda7
langcode: en
status: true
dependencies:
config:
- flag.flag.test_dossier
module:
- flag
id: flag_action.test_dossier_unflag
label: 'Unflag this item'
type: node
plugin: 'flag_action:test_dossier_unflag'
configuration:
flag_id: test_dossier
flag_action: unflag

View File

@ -5,3 +5,11 @@ materio_flag.user_flagging_collections:
_title: 'User Flagging Colleciton'
requirements:
_permission: 'access content'
materio_flag.create_user_flagging_collection:
path: 'materio_flag/create_user_flagging_collection'
defaults:
_controller: '\Drupal\materio_flag\Controller\MaterioFlagController::createUserFlaggingCollection'
_title: 'Create User Flagging Collection'
requirements:
_permission: 'access content'

View File

@ -4,66 +4,27 @@ namespace Drupal\materio_flag\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
// use Drupal\Core\Entity\EntityManagerInterface;
// use Drupal\language\ConfigurableLanguageManagerInterface;
// use Drupal\Core\Render\RendererInterface;
// use Drupal\Core\Entity\EntityTypeManagerInterface;
// use Drupal\Core\Cache\CacheableJsonResponse;
// use Drupal\Core\Cache\CacheableMetadata;
use Symfony\Component\HttpFoundation\JsonResponse;
// use Drupal\Core\Url;
// use Drupal\core\render\RenderContext;
use Drupal\Core\Session\AccountProxy;
use Drupal\Core\Session\AccountProxyInterface;
use Drupal\flag_lists\FlagListsService;
use Drupal\flag_lists\Entity\FlaggingCollection;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
/**
* Class AjaxHomeController.
*/
class MaterioFlagController extends ControllerBase {
/**
* Drupal\Core\Entity\EntityManagerInterface definition.
*
* @var \Drupal\Core\Entity\EntityManagerInterface
*/
// protected $entityManager;
/**
* Drupal\language\ConfigurableLanguageManagerInterface definition.
*
* @var \Drupal\language\ConfigurableLanguageManagerInterface
*/
// protected $languageManager;
/**
* Drupal\Core\Render\RendererInterface definition.
*
* @var \Drupal\Core\Render\RendererInterface
*/
// protected $renderer;
/**
* Drupal\Core\Render\RendererInterface definition.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
// protected $entityTypeManager;
/**
* Drupal\Core\Render\RendererInterface definition.
*
* @var \Drupal\flag_lists\FlagListsService
*/
protected $flaglists;
/**
* Constructs a new AjaxHomeController object.
* @var \Drupal\user\User
*/
// public function __construct(EntityManagerInterface $entity_manager, ConfigurableLanguageManagerInterface $language_manager, RendererInterface $renderer, EntityTypeManagerInterface $entity_type_manager) {
// $this->entityManager = $entity_manager;
// $this->languageManager = $language_manager;
// $this->renderer = $renderer;
// $this->entityTypeManager = $entity_type_manager;
// }
public function __construct(FlagListsService $flag_lists_service ) {
$this->flaglists = $flag_lists_service;
}
protected $user;
/**
* {@inheritdoc}
@ -71,9 +32,18 @@ class MaterioFlagController extends ControllerBase {
public static function create(ContainerInterface $container) {
return new static(
$container->get('flaglists'),
$container->get('current_user')
);
}
/**
* Constructs a new MaterioFlagController object.
*/
public function __construct(FlagListsService $flag_lists_service, AccountProxyInterface $account) {
$this->flaglists = $flag_lists_service;
$this->user = $account;
}
/**
* Hello.
*
@ -82,21 +52,6 @@ class MaterioFlagController extends ControllerBase {
*/
public function getUsersFlaggingCollections() {
// $data['data'] = ['test', 'hello'];
// $data['data'] = $this->flaglists->getUsersFlaggingCollections();
// $data['#cache'] = [
// // 'max-age' => \Drupal\Core\Cache\Cache::PERMANENT,
// 'tags' => ['materio-flag-cache'],
// // 'contexts' => [
// // 'languages:language_content'
// // ]
// ];
// $response = new CacheableJsonResponse($data);
// $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data));
// return $response;
$colls = $this->flaglists->getUsersFlaggingCollections();
$data = [];
@ -110,4 +65,28 @@ class MaterioFlagController extends ControllerBase {
return new JsonResponse($data);
}
public function createUserFlaggingCollection(Request $request) {
// dpm($request);
$post_data = json_decode( $request->getContent(),TRUE);
$name = $post_data['name'];
$newFlagColl = FlaggingCollection::Create([
'type' => 'flagging_collection_type',
'name' => $name,
'user_id' => $this->user->id(),
'templateflag' => 'dossier'
]);
$newFlagColl->save();
$data = [
'status' => $newFlagColl->get('status')->value,
'id' => $newFlagColl->id(),
'name' => $newFlagColl->getName(),
'newflagcoll_toarray' => $newFlagColl->toArray()
];
return new JsonResponse($data);
}
}

View File

@ -61,6 +61,13 @@ fieldset[data-v-340aa566] {
}
li input[data-v-0e1971fa] {
border: none;
}
li span.mdi-plus-box[data-v-0e1971fa] {
cursor: pointer;
}
#user-tools[data-v-4e9a834e]{
margin-right:0.5em;

File diff suppressed because one or more lines are too long

View File

@ -4,14 +4,20 @@
class="mdi mdi-folder-outline"
>My folders</h4>
<ul>
<li v-for="flag in flags" :key="flag.id">
<li v-if="flags" v-for="flag in flags" :key="flag.id">
<h5>{{ flag.name }}</h5>
</li>
<li ref="create-flag">
<h5
class="mdi mdi-folder-plus-outline"
<span class="mdi mdi-folder-plus-outline"/>
<input
placeholder="new folder"
v-model="new_folder_name"
/>
<span
class="mdi mdi-plus-box"
v-if="new_folder_name"
@click.prevent="onCreateFlag()"
>new folder</h5>
/>
</li>
</ul>
</div>
@ -24,7 +30,7 @@ import { mapState, mapActions } from 'vuex'
export default {
name: "userFlags",
data: () => ({
new_folder_name: ""
}),
computed: {
...mapState({
@ -35,13 +41,27 @@ export default {
...mapActions({
createFlag: 'User/createFlag'
}),
onLogout () {
console.log("UserFlags onCreateFlag")
this.userLogout()
onCreateFlag () {
console.log("UserFlags onCreateFlag", this.new_folder_name)
this.createFlag(this.new_folder_name);
// .then(({ data }) => {
// console.log("UserFlag new folder", data.status);
// })
}
}
}
</script>
<style lang="scss" scoped>
li{
// cursor: pointer;
// h5{
// }
input{
border: none
}
span.mdi-plus-box{
cursor: pointer;
}
}
</style>

View File

@ -13,7 +13,7 @@
class="mdi mdi-logout"
title="logout"
></a>
<UserFlags v-if="flags"/>
<UserFlags/>
</div>
</template>

View File

@ -172,11 +172,18 @@ export default {
Promise.reject(error);
});
},
createFlag({ dispatch, commit, state }) {
createFlag({ dispatch, commit, state }, new_flag_name) {
console.log("user createFlag", new_flag_name);
// https://drupal.stackexchange.com/questions/248539/cant-get-flagging-api-to-accept-post-request
return REST.post("/entity/flagging_collection?_format=json")
const params = {
name: new_flag_name
};
return MA.post("materio_flag/create_user_flagging_collection", params)
.then(({ data }) => {
console.log("user REST createFlag data", data);
console.log("user MA createFlag data", data);
if (data.status) {
dispatch('getUserFlags');
}
// commit("setFlags", data);
})
.catch(error => {