Skip to content

Commit

Permalink
[LiveEditor] Fix displaying empty zones (and initializing new disposi…
Browse files Browse the repository at this point in the history
…tion)
  • Loading branch information
eResnova committed Sep 22, 2015
1 parent 1620e97 commit a09f5fd
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 12 deletions.
4 changes: 2 additions & 2 deletions neofrag/classes/zone.php
Expand Up @@ -36,13 +36,13 @@ static public function display($disposition_id, $disposition, $page, $zone_id)
if (NeoFrag::live_editor() & NeoFrag::ZONES)
{
$output = ' <div class="pull-right">
'.($page == '*' ? '<button type="button" class="btn btn-link live-editor-fork" data-enable="0">'.icon('fa-toggle-off').' Disposition commune</button>' : '<button type="button" class="btn btn-link live-editor-fork" data-enable="1">'.icon('fa-toggle-on').' Disposition spécifique à la page</button>').'
'.($page == '*' ? '<button type="button" class="btn btn-link live-editor-fork" data-enable="0"'.($disposition_id == -1 ? ' style="display: none;"' : '').'>'.icon('fa-toggle-off').' Disposition commune</button>' : '<button type="button" class="btn btn-link live-editor-fork" data-enable="1">'.icon('fa-toggle-on').' Disposition spécifique à la page</button>').'
</div>
<h3>'.(!empty($NeoFrag->load->theme->zones[$zone_id]) ? $NeoFrag->load->theme->zones[$zone_id] : 'Zone #'.$zone_id).' <div class="btn-group"><button type="button" class="btn btn-xs btn-success live-editor-add-row" data-toggle="tooltip" title="Nouveau Row">'.icon('fa-plus').'</button></div></h3>'.
$output;
}

$output = '<div'.(NeoFrag::live_editor() & NeoFrag::ZONES ? ' class="live-editor-zone"' : '').' data-disposition-id="'.$disposition_id.'">'.$output.'</div>';
$output = '<div'.(NeoFrag::live_editor() & NeoFrag::ZONES ? ' class="live-editor-zone"' : '').' '.($disposition_id == -1 ? 'data-zone-id="'.$zone_id.'"' : 'data-disposition-id="'.$disposition_id.'"').'>'.$output.'</div>';
}

return $output;
Expand Down
4 changes: 4 additions & 0 deletions neofrag/core/output.php
Expand Up @@ -180,6 +180,10 @@ public function display_zone($zone_id)
$disposition = $dispositions[$zone_id];
return Zone::display($disposition['disposition_id'], unserialize($disposition['disposition']), $disposition['page'], $zone_id);
}
else if (NeoFrag::live_editor())
{
return Zone::display(-1, array(), '*', $zone_id);
}

return '';
}
Expand Down
10 changes: 10 additions & 0 deletions neofrag/modules/live_editor/controllers/ajax.php
Expand Up @@ -20,6 +20,16 @@

class m_live_editor_c_ajax extends Controller_Module
{
public function add_disposition($zone_id)
{
$this->extension('json');

return json_encode(array(
'disposition_id' => $disposition_id = $this->model()->add_disposition($zone_id),
'html' => $this->row_add($disposition_id, $this->model()->get_disposition($disposition_id))
));
}

public function zone_fork($disposition_id, $disposition, $url, $theme, $page, $zone)
{
$url = str_replace(url(), '', $url);
Expand Down
14 changes: 13 additions & 1 deletion neofrag/modules/live_editor/controllers/ajax_checker.php
Expand Up @@ -20,6 +20,18 @@

class m_live_editor_c_ajax_checker extends Controller_Module
{
public function add_disposition()
{
$post = post();

if ($this->user('admin') && !empty($post['zone_id']))
{
return array($post['zone_id']);
}

throw new Exception(NeoFrag::UNFOUND);
}

public function zone_fork()
{
return $this->_check_disposition('disposition_id', 'url');
Expand Down Expand Up @@ -157,7 +169,7 @@ public function widget_delete()

private function _check_disposition()
{
if ($this->user('admin') && !array_diff(array_keys($args = array_intersect_key(post(), array_flip(func_get_args()))), func_get_args()))
if ($this->user('admin') && !array_diff(func_get_args(), array_keys($args = array_intersect_key(post(), array_flip(func_get_args())))))
{
$args = array_merge(array_flip(func_get_args()), $args);
array_splice($args, 1, 0, array($this->model()->get_disposition($args['disposition_id'], $theme, $page, $zone)));
Expand Down
33 changes: 24 additions & 9 deletions neofrag/modules/live_editor/js/live-editor.js
Expand Up @@ -343,17 +343,32 @@ $(function(){

/* Row Add */
$iframe.on('click', '.live-editor-add-row', function(){
var $this = $(this).parents('[data-disposition-id]:first');
var $this = $(this).parents('.live-editor-zone:first');
$('.live-editor-save').show();

$.post('<?php echo url('ajax/live-editor/row-add.html'); ?>', {
disposition_id: $this.data('disposition-id'),
live_editor: $('input[type="hidden"][name="live_editor"]').val()
}, function(data){
$this.append(data);
}).always(function(){
$('.live-editor-save').hide();
});
if ($this.data('zone-id')){
$.post('<?php echo url('ajax/live-editor/add-disposition.json'); ?>', {
zone_id: $this.data('zone-id'),
live_editor: $('input[type="hidden"][name="live_editor"]').val()
}, function(data){
$this .attr('data-disposition-id', data.disposition_id)
.removeAttr('data-zone-id')
.append(data.html)
.find('.live-editor-fork').show();
}).always(function(){
$('.live-editor-save').hide();
});
}
else {
$.post('<?php echo url('ajax/live-editor/row-add.html'); ?>', {
disposition_id: $this.data('disposition-id'),
live_editor: $('input[type="hidden"][name="live_editor"]').val()
}, function(data){
$this.append(data);
}).always(function(){
$('.live-editor-save').hide();
});
}
});

/* Row Move */
Expand Down
10 changes: 10 additions & 0 deletions neofrag/modules/live_editor/models/live_editor.php
Expand Up @@ -41,6 +41,16 @@ public function set_disposition($disposition_id, $disposition)
'disposition' => serialize($disposition)
));
}

public function add_disposition($zone_id)
{
return $this->db->insert('nf_dispositions', array(
'theme' => $this->config->nf_default_theme,
'page' => '*',
'zone' => $zone_id,
'disposition' => serialize(array())
));
}

public function delete_disposition($rows)
{
Expand Down

0 comments on commit a09f5fd

Please sign in to comment.