mirror of
https://github.com/typemill/typemill.git
synced 2025-08-06 14:16:46 +02:00
v2.2.0 resolve conflict user getFullName
This commit is contained in:
@@ -332,7 +332,7 @@ class ControllerApiAuthorArticle extends Controller
|
||||
# META is important e.g. for newsletter, so send it, too
|
||||
$meta = new Meta();
|
||||
$metadata = $meta->getMetaData($item);
|
||||
$metadata = $meta->addMetaDefaults($metadata, $item, $this->settings['author']);
|
||||
$metadata = $meta->addMetaDefaults($metadata, $item, $this->settings['author'], $request->getAttribute('c_username'));
|
||||
# $metadata = $meta->addMetaTitleDescription($metadata, $item, $markdownArray);
|
||||
|
||||
# dispatch event, e.g. send newsletter and more
|
||||
|
@@ -33,9 +33,15 @@ class ControllerApiAuthorMeta extends Controller
|
||||
|
||||
$metadata = $meta->getMetaData($item);
|
||||
|
||||
if(!$metadata)
|
||||
if(!$metadata or !isset($metadata['meta']['owner']) OR !$metadata['meta']['owner'])
|
||||
{
|
||||
$metadata = $meta->addMetaDefaults($metadata, $item, $this->settings['author']);
|
||||
$metadata = $meta->addMetaDefaults($metadata, $item, $this->settings['author'], $request->getAttribute('c_username'));
|
||||
}
|
||||
|
||||
#fix for version 1 because owner in meta is often 'false'
|
||||
if(!isset($metadata['meta']['owner']) OR !$metadata['meta']['owner'])
|
||||
{
|
||||
$metadata = $meta->addMetaDefaults($metadata, $item, $this->settings['author'], $request->getAttribute('c_username'));
|
||||
}
|
||||
|
||||
# if user is not allowed to perform this action (e.g. not admin)
|
||||
|
@@ -159,14 +159,23 @@ class ControllerWebFrontend extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
$refKeyPathArray = explode(".", $refpageinfo['keyPath']);
|
||||
$refItem = $navigation->getItemWithKeyPath($draftNavigation, $refKeyPathArray);
|
||||
$refKeyPathArray = explode(".", $refpageinfo['keyPath']);
|
||||
$refitem = $navigation->getItemWithKeyPath($draftNavigation, $refKeyPathArray);
|
||||
|
||||
# GET THE CONTENT FROM REFENCED PAGE
|
||||
$liveMarkdown = $content->getLiveMarkdown($refItem);
|
||||
$liveMarkdown = $content->getLiveMarkdown($refitem);
|
||||
$liveMarkdown = $this->c->get('dispatcher')->dispatch(new OnMarkdownLoaded($liveMarkdown), 'onMarkdownLoaded')->getData();
|
||||
$markdownArray = $content->markdownTextToArray($liveMarkdown);
|
||||
|
||||
# GET THE META FROM REFERENCED PAGE
|
||||
$refmeta = $meta->getMetaData($refitem);
|
||||
if($refmeta && isset($refmeta['meta']))
|
||||
{
|
||||
$metadata = $meta->getMetaData($refitem);
|
||||
$metadata = $meta->addMetaDefaults($metadata, $refitem, $this->settings['author']);
|
||||
$metadata = $meta->addMetaTitleDescription($metadata, $refItem, $markdownArray);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -545,7 +545,6 @@ class ParsedownExtension extends \ParsedownExtra
|
||||
# has a fix for visual editor mode and option for spanFootnotes
|
||||
public function buildFootnoteElement()
|
||||
{
|
||||
|
||||
# we do not need a footnote element if we use w3c inline style with spans for footnotes
|
||||
if($this->spanFootnotes)
|
||||
{
|
||||
@@ -564,7 +563,7 @@ class ParsedownExtension extends \ParsedownExtra
|
||||
),
|
||||
);
|
||||
|
||||
uasort($this->DefinitionData['Footnote'], 'self::sortFootnotes');
|
||||
uasort($this->DefinitionData['Footnote'], [$this, 'sortFootnotes']);
|
||||
|
||||
foreach ($this->DefinitionData['Footnote'] as $definitionId => $DefinitionData)
|
||||
{
|
||||
|
@@ -20,7 +20,7 @@ class Meta
|
||||
public function getMetaData($item)
|
||||
{
|
||||
$metadata = $this->storage->getYaml('contentFolder', '', $item->pathWithoutType . '.yaml');
|
||||
|
||||
|
||||
return $metadata;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,11 @@ class Meta
|
||||
$user = new User();
|
||||
if($user->setUser($username))
|
||||
{
|
||||
$author = $user->getFullName();
|
||||
$fullname = $user->getFullName();
|
||||
if($fullname)
|
||||
{
|
||||
$author = $fullname;
|
||||
}
|
||||
}
|
||||
|
||||
$meta = [];
|
||||
@@ -112,10 +116,13 @@ class Meta
|
||||
$meta['meta'] = [];
|
||||
}
|
||||
|
||||
if(!isset($meta['meta']['owner']))
|
||||
if(!isset($meta['meta']['owner']) OR !$meta['meta']['owner'])
|
||||
{
|
||||
$meta['meta']['owner'] = $currentuser;
|
||||
$modified = true;
|
||||
if($currentuser)
|
||||
{
|
||||
$meta['meta']['owner'] = $currentuser;
|
||||
$modified = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isset($meta['meta']['author']))
|
||||
@@ -127,7 +134,11 @@ class Meta
|
||||
$user = new User();
|
||||
if($user->setUser($currentuser))
|
||||
{
|
||||
$author = $user->getFullName();
|
||||
$fullname = $user->getFullName();
|
||||
if($fullname)
|
||||
{
|
||||
$author = $fullname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -71,15 +71,16 @@ class User
|
||||
|
||||
public function getFullName()
|
||||
{
|
||||
$firstname = isset($this->user['firstname']) ? trim($this->user['firstname']) : false;
|
||||
$lastname = isset($this->user['lastname']) ? trim($this->user['lastname']) : false;
|
||||
$firstname = $this->user['firstname'] ?? '';
|
||||
$lastname = $this->user['lastname'] ?? '';
|
||||
$fullname = trim($firstname . ' ' . $lastname);
|
||||
|
||||
if($firstname OR $lastname)
|
||||
if($fullname != '')
|
||||
{
|
||||
return trim($this->user['firstname'] . ' ' . $this->user['lastname']);
|
||||
return $fullname;
|
||||
}
|
||||
|
||||
return $this->user['username'];
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getError()
|
||||
|
@@ -142,6 +142,18 @@ abstract class Plugin implements EventSubscriberInterface
|
||||
return $storage->getError();
|
||||
}
|
||||
|
||||
protected function deletePluginData($filename, $pluginname = false)
|
||||
{
|
||||
$pluginname = $this->getPluginName($pluginname);
|
||||
|
||||
$storageClass = $this->container->get('settings')['storage'];
|
||||
$storage = new StorageWrapper($storageClass);
|
||||
|
||||
$data = $storage->deleteFile('dataFolder', $pluginname, $filename);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function getPluginName($pluginname = NULL)
|
||||
{
|
||||
if(!$pluginname)
|
||||
|
@@ -547,7 +547,7 @@
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
.blox-editor input.urlinput{
|
||||
.inlineFormatBar input.urlinput{
|
||||
width: 75%;
|
||||
min-height: auto;
|
||||
background: #555;
|
||||
@@ -555,7 +555,7 @@
|
||||
border: 0px;
|
||||
padding: 5px;
|
||||
}
|
||||
.blox-editor input.urlinput:focus{
|
||||
.inlineFormatBar input.urlinput:focus{
|
||||
outline: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
|
@@ -96,143 +96,11 @@ const bloxeditor = Vue.createApp({
|
||||
|
||||
bloxeditor.component('draggable', vuedraggable);
|
||||
|
||||
bloxeditor.component('new-block',{
|
||||
props: ['markdown', 'index'],
|
||||
template: `
|
||||
<div class="w-full mb-4">
|
||||
<div v-if="!componentType" class="w-full flex p-4 dark:bg-stone-900">
|
||||
<button v-for="button in formats"
|
||||
class="p-2 m-1 border border-stone-300 bg-stone-100 dark:border-stone-700 dark:bg-stone-700 hover:bg-stone-700 hover:dark:bg-stone-600 hover:text-stone-50 transition-1"
|
||||
@click.prevent="setComponentType( $event, button.component )"
|
||||
:title="button.title"
|
||||
v-html="button.label">
|
||||
</button>
|
||||
</div>
|
||||
<div v-if="componentType" class="relative bg-stone-100 dark:bg-stone-900">
|
||||
<component ref="activeComponent" :disabled="disabled" :markdown="newblockmarkdown" :index="index" @saveBlockEvent="saveNewBlock" @updateMarkdownEvent="updateMarkdownFunction" :is="componentType"></component>
|
||||
<div class="edit-buttons absolute -bottom-3 right-4 z-2 text-xs">
|
||||
<button class="cancel w-20 p-1 border-r border-stone-700 bg-stone-200 dark:bg-stone-600 hover:bg-rose-500 hover:dark:bg-rose-500 hover:text-white transition-1" :disabled="disabled" @click.prevent="closeComponent">{{ $filters.translate('cancel') }}</button>
|
||||
<button class="save w-20 p-1 border-l border-stone-700 bg-stone-200 dark:bg-stone-600 hover:bg-teal-500 hover:dark:bg-teal-500 hover:text-white transition-1" :disabled="disabled" @click.prevent="beforeSaveNew()">{{ $filters.translate('save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
data: function () {
|
||||
return {
|
||||
formats: bloxFormats,
|
||||
componentType: false,
|
||||
disabled: false,
|
||||
newblockmarkdown: '',
|
||||
unsafedcontent: false,
|
||||
}
|
||||
},
|
||||
mounted: function()
|
||||
{
|
||||
eventBus.$on('closeComponents', this.closeComponent);
|
||||
|
||||
eventBus.$on('inlineFormat', content => {
|
||||
this.newblockmarkdown = content;
|
||||
});
|
||||
|
||||
eventBus.$on('lockcontent', content => {
|
||||
this.unsafedcontent = true;
|
||||
});
|
||||
|
||||
eventBus.$on('unlockcontent', content => {
|
||||
this.unsafedcontent = false;
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
setComponentType(event, componenttype)
|
||||
{
|
||||
if(this.unsafedcontent)
|
||||
{
|
||||
eventBus.$emit('publishermessage', 'Save or cancel your changes first.');
|
||||
}
|
||||
else
|
||||
{
|
||||
eventBus.$emit('freezeblocks');
|
||||
|
||||
this.componentType = componenttype;
|
||||
}
|
||||
},
|
||||
closeComponent()
|
||||
{
|
||||
this.componentType = false;
|
||||
this.newblockmarkdown = '';
|
||||
eventBus.$emit('unlockcontent');
|
||||
eventBus.$emit('publisherclear');
|
||||
},
|
||||
updateMarkdownFunction(value)
|
||||
{
|
||||
eventBus.$emit('lockcontent');
|
||||
this.newblockmarkdown = value;
|
||||
},
|
||||
beforeSaveNew()
|
||||
{
|
||||
eventBus.$emit('beforeSave');
|
||||
},
|
||||
saveNewBlock()
|
||||
{
|
||||
if(
|
||||
this.newblockmarkdown == undefined ||
|
||||
this.newblockmarkdown.replace(/(\r\n|\n|\r|\s)/gm,"") == ''
|
||||
)
|
||||
{
|
||||
this.closeComponent();
|
||||
return;
|
||||
}
|
||||
|
||||
if(typeof this.$refs.activeComponent.saveBlock === "function")
|
||||
{
|
||||
this.$refs.activeComponent.saveBlock(this.updatedmarkdown);
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
|
||||
eventBus.$emit('publisherclear');
|
||||
|
||||
tmaxios.post('/api/v1/block',{
|
||||
'url': data.urlinfo.route,
|
||||
'block_id': this.index,
|
||||
'markdown': this.newblockmarkdown.trim(),
|
||||
})
|
||||
.then(function (response)
|
||||
{
|
||||
self.$root.$data.content = response.data.content;
|
||||
self.closeComponent();
|
||||
eventBus.$emit('closeComponents');
|
||||
if(response.data.navigation)
|
||||
{
|
||||
eventBus.$emit('navigation', response.data.navigation);
|
||||
}
|
||||
if(response.data.item)
|
||||
{
|
||||
eventBus.$emit('item', response.data.item);
|
||||
}
|
||||
})
|
||||
.catch(function (error)
|
||||
{
|
||||
if(error.response)
|
||||
{
|
||||
let message = handleErrorMessage(error);
|
||||
if(message)
|
||||
{
|
||||
eventBus.$emit('publishermessage', message);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
bloxeditor.component('content-block', {
|
||||
props: ['element', 'index'],
|
||||
template: `
|
||||
<div :class="{'edit': edit}">
|
||||
<div v-if="newblock" class="bg-stone-100 dark:bg-stone-600">
|
||||
<div v-if="newblock" class="blox-editor bg-stone-100 dark:bg-stone-600">
|
||||
<div class="w-full flex justify-between bg-stone-200 dark:bg-stone-600">
|
||||
<p class="p-2 pl-4">Choose a content type</p>
|
||||
<button class="p-2 border-l border-stone-700 hover:text-white hover:bg-rose-500 transition-1" @click="closeNewBlock">{{ $filters.translate('close') }}</button>
|
||||
@@ -302,6 +170,7 @@ bloxeditor.component('content-block', {
|
||||
}
|
||||
else
|
||||
{
|
||||
eventBus.$emit('closeComponents');
|
||||
eventBus.$emit('freeze');
|
||||
|
||||
this.newblock = true;
|
||||
@@ -314,7 +183,7 @@ bloxeditor.component('content-block', {
|
||||
eventBus.$emit('unfreeze');
|
||||
eventBus.$emit('publisherclear');
|
||||
|
||||
this.newblock = false;
|
||||
this.newblock = false;
|
||||
},
|
||||
closeEditor()
|
||||
{
|
||||
@@ -483,4 +352,141 @@ bloxeditor.component('content-block', {
|
||||
});
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
bloxeditor.component('new-block',{
|
||||
props: ['markdown', 'index'],
|
||||
template: `
|
||||
<div class="w-full mb-4">
|
||||
<div v-if="!componentType" class="w-full flex p-4 dark:bg-stone-900">
|
||||
<button v-for="button in formats"
|
||||
class="p-2 m-1 border border-stone-300 bg-stone-100 dark:border-stone-700 dark:bg-stone-700 hover:bg-stone-700 hover:dark:bg-stone-600 hover:text-stone-50 transition-1"
|
||||
@click.prevent="setComponentType( $event, button.component )"
|
||||
:title="button.title"
|
||||
v-html="button.label">
|
||||
</button>
|
||||
</div>
|
||||
<div v-if="componentType" class="relative bg-stone-100 dark:bg-stone-900">
|
||||
<component ref="activeComponent" :disabled="disabled" :markdown="newblockmarkdown" :index="index" @saveBlockEvent="saveNewBlock" @updateMarkdownEvent="updateMarkdownFunction" :is="componentType"></component>
|
||||
<div class="edit-buttons absolute -bottom-3 right-4 z-2 text-xs">
|
||||
<button class="cancel w-20 p-1 border-r border-stone-700 bg-stone-200 dark:bg-stone-600 hover:bg-rose-500 hover:dark:bg-rose-500 hover:text-white transition-1" :disabled="disabled" @click.prevent="closeComponent">{{ $filters.translate('cancel') }}</button>
|
||||
<button class="save w-20 p-1 border-l border-stone-700 bg-stone-200 dark:bg-stone-600 hover:bg-teal-500 hover:dark:bg-teal-500 hover:text-white transition-1" :disabled="disabled" @click.prevent="beforeSaveNew()">{{ $filters.translate('save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
data: function () {
|
||||
return {
|
||||
formats: bloxFormats,
|
||||
componentType: false,
|
||||
disabled: false,
|
||||
newblockmarkdown: '',
|
||||
unsafedcontent: false,
|
||||
}
|
||||
},
|
||||
mounted: function()
|
||||
{
|
||||
eventBus.$on('closeComponents', this.closeComponent);
|
||||
|
||||
eventBus.$on('inlineFormat', content => {
|
||||
this.newblockmarkdown = content;
|
||||
});
|
||||
|
||||
eventBus.$on('lockcontent', content => {
|
||||
this.unsafedcontent = true;
|
||||
});
|
||||
|
||||
eventBus.$on('unlockcontent', content => {
|
||||
this.unsafedcontent = false;
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
setComponentType(event, componenttype)
|
||||
{
|
||||
if(this.unsafedcontent)
|
||||
{
|
||||
eventBus.$emit('publishermessage', 'Save or cancel your changes first.');
|
||||
}
|
||||
else
|
||||
{
|
||||
/* if it is a new block at the end of the page, close other open blocks first */
|
||||
if(this.index == 999999)
|
||||
{
|
||||
eventBus.$emit('closeComponents');
|
||||
}
|
||||
|
||||
eventBus.$emit('freezeblocks');
|
||||
|
||||
this.componentType = componenttype;
|
||||
}
|
||||
},
|
||||
closeComponent()
|
||||
{
|
||||
this.componentType = false;
|
||||
this.newblockmarkdown = '';
|
||||
eventBus.$emit('unlockcontent');
|
||||
eventBus.$emit('publisherclear');
|
||||
},
|
||||
updateMarkdownFunction(value)
|
||||
{
|
||||
eventBus.$emit('lockcontent');
|
||||
this.newblockmarkdown = value;
|
||||
},
|
||||
beforeSaveNew()
|
||||
{
|
||||
eventBus.$emit('beforeSave');
|
||||
},
|
||||
saveNewBlock()
|
||||
{
|
||||
if(
|
||||
this.newblockmarkdown == undefined ||
|
||||
this.newblockmarkdown.replace(/(\r\n|\n|\r|\s)/gm,"") == ''
|
||||
)
|
||||
{
|
||||
this.closeComponent();
|
||||
return;
|
||||
}
|
||||
|
||||
if(typeof this.$refs.activeComponent.saveBlock === "function")
|
||||
{
|
||||
this.$refs.activeComponent.saveBlock(this.updatedmarkdown);
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
|
||||
eventBus.$emit('publisherclear');
|
||||
|
||||
tmaxios.post('/api/v1/block',{
|
||||
'url': data.urlinfo.route,
|
||||
'block_id': this.index,
|
||||
'markdown': this.newblockmarkdown.trim(),
|
||||
})
|
||||
.then(function (response)
|
||||
{
|
||||
self.$root.$data.content = response.data.content;
|
||||
self.closeComponent();
|
||||
eventBus.$emit('closeComponents');
|
||||
if(response.data.navigation)
|
||||
{
|
||||
eventBus.$emit('navigation', response.data.navigation);
|
||||
}
|
||||
if(response.data.item)
|
||||
{
|
||||
eventBus.$emit('item', response.data.item);
|
||||
}
|
||||
})
|
||||
.catch(function (error)
|
||||
{
|
||||
if(error.response)
|
||||
{
|
||||
let message = handleErrorMessage(error);
|
||||
if(message)
|
||||
{
|
||||
eventBus.$emit('publishermessage', message);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
});
|
||||
|
@@ -70,7 +70,7 @@ const navigation = Vue.createApp({
|
||||
{
|
||||
return tmaxios.defaults.baseURL + '/tm/content/' + data.settings.editor;
|
||||
},
|
||||
toggleFolder(name)
|
||||
toggleFolderOLD(name)
|
||||
{
|
||||
var index = this.expanded.indexOf(name);
|
||||
if (index > -1)
|
||||
@@ -84,40 +84,53 @@ const navigation = Vue.createApp({
|
||||
}
|
||||
localStorage.setItem("expanded", this.expanded.toString());
|
||||
},
|
||||
toggleFolder(url)
|
||||
{
|
||||
var index = this.expanded.indexOf(url);
|
||||
if (index > -1)
|
||||
{
|
||||
this.expanded.splice(index, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.expanded.push(url);
|
||||
}
|
||||
localStorage.setItem("expanded", this.expanded.toString());
|
||||
},
|
||||
expandNavigation()
|
||||
{
|
||||
this.expanded = this.getFolderNames(this.navigation, []);
|
||||
this.expanded = this.getFolderUrls(this.navigation, []);
|
||||
localStorage.setItem("expanded", this.expanded.toString());
|
||||
},
|
||||
collapseNavigation()
|
||||
{
|
||||
this.expanded = this.getActiveNames(this.navigation, []);
|
||||
this.expanded = this.getActiveUrls(this.navigation, []);
|
||||
localStorage.setItem("expanded", this.expanded.toString());
|
||||
},
|
||||
getActiveNames(navigation, expanded)
|
||||
getActiveUrls(navigation, expanded)
|
||||
{
|
||||
for (const item of navigation)
|
||||
{
|
||||
if(item.activeParent || item.active)
|
||||
{
|
||||
expanded.push(item.name);
|
||||
expanded.push(item.urlRelWoF);
|
||||
}
|
||||
|
||||
if (item.elementType == 'folder')
|
||||
{
|
||||
this.getActiveNames(item.folderContent, expanded);
|
||||
this.getActiveUrls(item.folderContent, expanded);
|
||||
}
|
||||
}
|
||||
return expanded;
|
||||
},
|
||||
getFolderNames(navigation, result)
|
||||
getFolderUrls(navigation, result)
|
||||
{
|
||||
for (const item of navigation)
|
||||
{
|
||||
if (item.elementType == 'folder')
|
||||
{
|
||||
result.push(item.name);
|
||||
this.getFolderNames(item.folderContent, result);
|
||||
result.push(item.urlRelWoF);
|
||||
this.getFolderUrls(item.folderContent, result);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -169,8 +182,8 @@ navigation.component('navilevel',{
|
||||
<use xlink:href="#icon-eye-blocked"></use>
|
||||
</svg>
|
||||
</div>
|
||||
<div v-if="element.elementType == 'folder' && element.contains == 'pages'" class=" p-1 bg-transparent absolute right-0" @click="callToggle(element.name)">
|
||||
<svg v-if="isExpanded(element.name)" class="icon icon-cheveron-up">
|
||||
<div v-if="element.elementType == 'folder' && element.contains == 'pages'" class=" p-1 bg-transparent absolute right-0" @click="callToggle(element.urlRelWoF)">
|
||||
<svg v-if="isExpanded(element.urlRelWoF)" class="icon icon-cheveron-up">
|
||||
<use xlink:href="#icon-cheveron-up"></use>
|
||||
</svg>
|
||||
<svg v-else class="icon icon-cheveron-down">
|
||||
@@ -178,7 +191,7 @@ navigation.component('navilevel',{
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<navilevel v-show="isExpanded(element.name)" v-if="element.elementType == 'folder' && element.contains == 'pages'" :list="element.folderContent" :navigation="element.folderContent" :parentId="element.keyPath" :expanded="expanded" />
|
||||
<navilevel v-show="isExpanded(element.urlRelWoF)" v-if="element.elementType == 'folder' && element.contains == 'pages'" :list="element.folderContent" :navigation="element.folderContent" :parentId="element.keyPath" :expanded="expanded" />
|
||||
</li>
|
||||
</template>
|
||||
<template #footer>
|
||||
@@ -305,13 +318,13 @@ navigation.component('navilevel',{
|
||||
{
|
||||
return tmaxios.defaults.baseURL + '/tm/content/' + data.settings.editor + segment;
|
||||
},
|
||||
callToggle(name)
|
||||
callToggle(url)
|
||||
{
|
||||
eventBus.$emit('toggleFolder', name);
|
||||
eventBus.$emit('toggleFolder', url);
|
||||
},
|
||||
isExpanded(name)
|
||||
isExpanded(url)
|
||||
{
|
||||
if(this.expanded.indexOf(name) > -1)
|
||||
if(this.expanded.indexOf(url) > -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
version: '2.1.1'
|
||||
version: '2.1.2'
|
||||
title: 'Typemill'
|
||||
author: 'Unknown'
|
||||
copyright: false
|
||||
|
Reference in New Issue
Block a user