Improved logic for saving and added 'guess' the visibility functionality

This commit is contained in:
Andy Miller
2015-08-05 15:30:30 -06:00
parent ac6a79f069
commit 7e1b5db4ee
3 changed files with 39 additions and 14 deletions

View File

@@ -503,8 +503,9 @@ class Admin
if (isset($this->session->{$page->route()})) {
// Found the type and header from the session.
$data = $this->session->{$page->route()};
$visible = isset($data['visible']) && $data['visible'] != '' ? (bool) $data['visible'] : $this->guessVisibility($page);
$page->name($data['type'] . '.md');
$page->header(['title' => $data['title'], 'visible' => $data['visible']]);
$page->header(['title' => $data['title'], 'visible' => $visible]);
$page->frontmatter(Yaml::dump((array) $page->header()));
} else {
// Find out the type by looking at the parent.
@@ -518,6 +519,24 @@ class Admin
return $page;
}
/**
* Guess the intended visibility status based on other sibling folders
*
* @param \Grav\Common\Page\Page $page
*
* @return bool
*/
public function guessVisibility(Page $page)
{
$children = $page->parent()->children();
foreach ($children as $child) {
if ($child->order()) {
return true;
}
}
return false;
}
/**
* Static helper method to return current route.
*

View File

@@ -797,18 +797,7 @@ class AdminController
$obj = $obj->move($parent);
$this->preparePage($obj);
// rename folder based on visible
if (isset($data['header']['visible'])) {
if ($data['header']['visible'] && !$obj->order()) {
// needs to have order set
$obj->order(1000);
$reorder = true;
} elseif (!$data['header']['visible'] && $obj->order()) {
// needs to have order removed
$obj->folder($obj->slug());
$reorder = true;
}
}
// Reset slug and route. For now we do not support slug twig variable on save.
$obj->slug($original_slug);
@@ -818,8 +807,24 @@ class AdminController
$obj = $this->prepareData();
}
if ($obj) {
$visible_before = $obj->visible();
$obj->validate();
$obj->filter();
$visible_after = $obj->visible();
// rename folder based on visible
if ($visible_after && !$obj->order()) {
// needs to have order set
$obj->order(1000);
$reorder = true;
} elseif (!$visible_after && $obj->order()) {
// needs to have order removed
$obj->folder($obj->slug());
$reorder = true;
}
$obj->save($reorder);
$this->admin->setMessage('Successfully saved', 'info');
}

View File

@@ -172,6 +172,7 @@
{% include 'partials/page-move.html.twig' with { blueprints: admin.blueprints('pages/move'), data: context } %}
</div>
{% endif %}
<div class="remodal" data-remodal-id="delete" data-remodal-options="hashTracking: false">
<form>
@@ -186,7 +187,7 @@
</div>
</form>
</div>
{% endif %}
<div class="remodal" data-remodal-id="changes">
<form>