* SimplePages Bugfix when creating new Pages

This commit is contained in:
kolaente 2016-09-21 13:55:36 +02:00
parent e8b6acdecc
commit 528d2c4e49
11 changed files with 986 additions and 822 deletions

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 264 KiB

View File

@ -11,7 +11,7 @@ if (hasPerm('edit_permissions'))
$permArr = [];
foreach ($_POST as $perm => $val)
{
if ($perm != 'smbt')
if ($perm != 'smbt' && $val == 'true')
{
$perm_full = $perm;
$perm = explode('_', $perm);

View File

@ -6,47 +6,60 @@ if (isset($_GET['page']))
if ($_SESSION['userid'] == $confirmationUser)
{
//Get the new Content
$hasContent = false;
$created = false;
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['page'];
$db->get();
if (isset($db->data[0]))
{
$hasContent = true;
$data_new = $db->data[0];
} else
{
$db->setCol('simplePages_pages');
$db->data['page_id'] = $_GET['page'];
$db->data['status'] = 2;
$db->get();
$data_new = [];
$hasContent = true;
$created = true;
}
if ($hasContent)
{
//If submitted, insert the new content
if(isset($_POST['confirm']))
if (isset($_POST['confirm']))
{
$db->setCol('simplePages_pages');
$db->data = json_decode($_POST['contentToUpdate'], true);
if($db->update(['id' => $_GET['page']]))
if ($db->update(['id' => $_GET['page']]))
{
//Delete the old data
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['page'];
$db->delete();
echo msg('success', $lang->get('sp_confirm_success').' <a href="management.php">'.$lang->get('back').'</a>');
}
else
echo msg('success', $lang->get('sp_confirm_success') . ' <a href="management.php">' . $lang->get('back') . '</a>');
} else
{
echo msg('fail', $lang->get('sp_confirm_fail').' <a href="management.php">'.$lang->get('back').'</a>');
echo msg('fail', $lang->get('sp_confirm_fail') . ' <a href="management.php">' . $lang->get('back') . '</a>');
}
}//If request to delete, delete it
elseif(isset($_POST['delete']))
elseif (isset($_POST['delete']))
{
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['page'];
if($db->delete())
if ($db->delete())
{
echo msg('success', $lang->get('sp_confirm_delete_success').' <a href="management.php">'.$lang->get('back').'</a>');
}
else
echo msg('success', $lang->get('sp_confirm_delete_success') . ' <a href="management.php">' . $lang->get('back') . '</a>');
} else
{
echo msg('fail', $lang->get('sp_confirm_delete_fail').' <a href="management.php">'.$lang->get('back').'</a>');
echo msg('fail', $lang->get('sp_confirm_delete_fail') . ' <a href="management.php">' . $lang->get('back') . '</a>');
}
}
else
} else
{
//Get the old Content
$db->setCol('simplePages_pages');
@ -57,25 +70,46 @@ if (isset($_GET['page']))
$changed = false;
$data_old = $db->data[0];
//Find differences between them
$data_display = [];
foreach ($data_new as $key => $new_data)
//If The page to confirm was just created
if ($created)
{
if (array_key_exists($key, $data_old))
$changed = true;
$data_new = $data_old;
$data_display = $data_old;
unset($data_display['id']);
unset($data_display['user']);
unset($data_display['lastedit']);
unset($data_display['created']);
} else
{
//Find differences between them
$data_display = [];
foreach ($data_new as $key => $new_data)
{
if ($new_data != $data_old[$key] && $key != 'id' && $key != 'user' && $key != 'lastedit')
if (array_key_exists($key, $data_old))
{
$changed = true;
$data_display[$key] = $new_data;
if ($new_data != $data_old[$key] && $key != 'id' && $key != 'user' && $key != 'lastedit' && $key != 'created')
{
$changed = true;
$data_display[$key] = $new_data;
}
}
}
}
//Only display differences if any found
if($changed)
if ($changed)
{
echo '<div class="main">';
echo '<p>'.sprintf($lang->get('sp_confirm_changed'), date('d.m.Y \u\m H:i', $data_new['lastedit']), getUserByID($data_new['user'])).':</p>';
if ($created)
{
echo '<p>' . sprintf($lang->get('sp_confirm_created'), date('d.m.Y \u\m H:i', $data_new['lastedit']), getUserByID($data_new['user'])) . ':</p>';
} else
{
echo '<p>' . sprintf($lang->get('sp_confirm_changed'), date('d.m.Y \u\m H:i', $data_new['lastedit']), getUserByID($data_new['user'])) . ':</p>';
}
$msg = [
'title' => $lang->get('sp_edit_title'),
'alias' => $lang->get('sp_edit_alias'),
@ -91,30 +125,27 @@ if (isset($_GET['page']))
$data_display['user'] = $data_new['user'];
$data_display['lastedit'] = $data_new['lastedit'];
$data_display['status'] = 1;
//echo '<pre>'.print_r($data_old, true).'</pre>';
echo '<form action="<?php echo $_SERVER['REQUEST_URI']?>" method="post"><input type="hidden" name="contentToUpdate" value=\'' . json_encode($data_display) . '\'/><input type="submit" name="confirm" value="'.$lang->get('sp_confirm_confirm').'"/><input type="submit" name="delete" value="'.$lang->get('sp_confirm_delete').'" class="btn_del"/></form>';
echo '<form action="' . $_SERVER['REQUEST_URI'] . '" method="post"><input type="hidden" name="contentToUpdate" value=\'' . json_encode($data_display) . '\'/><input type="submit" name="confirm" value="' . $lang->get('sp_confirm_confirm') . '"/><input type="submit" name="delete" value="' . $lang->get('sp_confirm_delete') . '" class="btn_del"/></form>';
echo '</div>';
}
else
} else
{
echo msg('info', $lang->get('sp_confirm_no_changes').' <a href="management.php">'.$lang->get('back').'</a>');
echo msg('info', $lang->get('sp_confirm_no_changes') . ' <a href="management.php">' . $lang->get('back') . '</a>');
}
}
else
} else
{
echo msg('info', $lang->get('sp_confirm_no_changes').' <a href="management.php">'.$lang->get('back').'</a>');
echo msg('info', $lang->get('sp_confirm_no_changes') . ' <a href="management.php">' . $lang->get('back') . '</a>');
}
}
}
else
} else
{
echo msg('info', $lang->get('sp_confirm_no_changes').' <a href="management.php">'.$lang->get('back').'</a>');
echo msg('info', $lang->get('sp_confirm_no_changes') . ' <a href="management.php">' . $lang->get('back') . '</a>');
}
}
else
} else
{
echo msg('info', $lang->get('missing_permission').' <a href="management.php">'.$lang->get('back').'</a>');
echo msg('info', $lang->get('missing_permission') . ' <a href="management.php">' . $lang->get('back') . '</a>');
}
}
require_once '../../../inc/footer.php';

View File

@ -99,14 +99,23 @@ if (hasPerm('manage_pages'))
}
else
{
//Delete old pages, we only want the newest version in the database
$db->clear();
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['id'];
$db->delete();
//If New Page created
if(isset($_GET['new']))
{
$status = 2;
$db->setCol('simplePages_pages');
}
else
{
//Delete old pages, we only want the newest version in the database
$db->clear();
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['id'];
$db->delete();
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['id'];
$db->setCol('simplePages_pages_confirm');
$db->data['page_id'] = $_GET['id'];
}
}
}
else
@ -118,12 +127,16 @@ if (hasPerm('manage_pages'))
$db->data['alias'] = str_replace(' ', '-', $_POST['alias']);
$db->data['content'] = $_POST['content'];
$db->data['user'] = $_SESSION['userid'];
$status = 0;
if (isset($_POST['status'])) $status = $_POST['status'];
if(!isset($status))
{
$status = 0;
if (isset($_POST['status'])) $status = $_POST['status'];
}
$db->data['status'] = $status;
$db->data['meta_description'] = $_POST['meta_description'];
$db->data['meta_keywords'] = $_POST['meta_keywords'];
$db->data['lastedit'] = time();
if(isset($_GET['new'])) $db->data['created'] = time();
//$db->update(['id' => $_GET['id']]);
$id = 0;
@ -184,13 +197,16 @@ if (hasPerm('manage_pages'))
if($confirmationRequierd && ($_SESSION['userid'] != $confirmationUser))
{
$subject = sprintf($lang->get('sp_edit_confirm_subject'), $_POST['title']);
$message = sprintf($lang->get('sp_edit_confirm_message'), $_SESSION['user'], $_POST['title'], $MCONF['web_uri'] . 'apps/SimplePages/backend/confirm.php?page=' . $id);
$header = 'From: noreply@' . $_SERVER['SERVER_NAME'] . "\r\n" .
'Reply-To: noreply@' . $_SERVER['SERVER_NAME'] . "\r\n" .
'X-Mailer: PHP/' . phpversion() .
'MIME-Version: 1.0' . "\r\n" .
'content-type: text/html; charset=UTF-8' . "\r\n";
mail($confirmationUserMail, $subject, $message, $header);
if(isset($_GET['new']))
{
$message = sprintf($lang->get('sp_edit_confirm_message'), $_SESSION['user'], $_POST['title'], $MCONF['web_uri'] . 'apps/SimplePages/backend/confirm.php?page=' . $id);
}
else
{
$message = sprintf($lang->get('sp_create_confirm_message'), $_SESSION['user'], $_POST['title'], $MCONF['web_uri'] . 'apps/SimplePages/backend/confirm.php?page=' . $id);
}
mmail($confirmationUserMail, $subject, $message, 'noreply@' . $_SERVER['SERVER_NAME'], true);
}
}
else
@ -282,7 +298,7 @@ if (hasPerm('manage_pages'))
value="<?php echo $data[0]['alias']; ?>" autocomplete="off"/>
</p>
<p><span><?php echo $lang->get('sp_edit_public');?>:</span><input type="checkbox" name="status" id="status" value="1"<?php
if ($data[0]['status'] == 1) echo ' checked';
if ($data[0]['status'] == 1 || isset($_GET['new'])) echo ' checked';
?>/><label for="status"><i></i></label></p>
<p><span><?php echo $lang->get('sp_edit_keywords');?>:</span><input type="text" name="meta_keywords"
value="<?php echo $data[0]['meta_keywords']; ?>"/></p>

View File

@ -16,6 +16,7 @@ if (hasPerm('manage_pages'))
<tr>
<th><?php echo $lang->get('sp_page');?></th>
<th><?php echo $lang->get('sp_last_edit');?></th>
<th><?php echo $lang->get('sp_edit_status');?></th>
<th><?php echo $lang->get('sp_action');?></th>
</tr>
</thead>
@ -31,6 +32,7 @@ if (hasPerm('manage_pages'))
if (hasPerm('admin_manage'))//If the User has the persmission to edit every page
{
$status = [$lang->get('sp_status_inactive'), $lang->get('sp_status_active'), $lang->get('sp_status_pending_confirmation')];
foreach ($pages as $id => $pageitem)
{
echo '<tr>';
@ -43,6 +45,7 @@ if (hasPerm('manage_pages'))
{
echo '<td>'.$lang->get('sp_never').'</td>';
}
echo '<td>'.$status[$pageitem['status']].'</td>';
echo '<td><a href="edit.php?id=' . $pageitem['id'] . '"><i class="fa fa-pencil"></i> '.$lang->get('sp_edit').'</a> | <a href="edit.php?id=' . $pageitem['id'] . '&del"><i class="fa fa-trash-o"></i> '.$lang->get('sp_delete').'</a> | <a href="' . $MCONF['web_uri'] . $pageitem['alias'] . '" target="_blank"><i class="fa fa-external-link"></i> '.$lang->get('sp_preview').'</a></td>';
echo '</tr>';
}

View File

@ -33,6 +33,11 @@ $lang['sp_preview'] = 'Vorschau';
$lang['sp_permissions'] = 'Berechtigungen';
$lang['sp_manage_permission'] = 'Berechtigungen vergeben';
//Status
$lang['sp_status_inactive'] = 'Inaktiv';
$lang['sp_status_active'] = 'Aktiv';
$lang['sp_status_pending_confirmation'] = 'Warte auf Freischaltung';
//Permissions
$lang['sp_user_already_access'] = '%1$s hat schon Zugriff auf diese Seite.';
$lang['sp_grant_permissions_success'] = 'Die neuen Berechtigungen wurden erfolgreich vergeben';
@ -45,7 +50,8 @@ $lang['sp_confirm_success'] = 'Die Änderungen wurden erfolgreich freigeschaltet
$lang['sp_confirm_fail'] = 'Fehler beim Freischalten der Änderungen.';
$lang['sp_confirm_delete_success'] = 'Die Änderungen wurden erfolgreich gelöscht.';
$lang['sp_confirm_delete_fail'] = 'Fehler beim Löschen der Änderungen.';
$lang['sp_confirm_changed'] = 'Wurde geändert am %1$s von %2$s (Veränderte Felder werden angezeigt)';
$lang['sp_confirm_changed'] = 'Wurde am %1$s von %2$s geändert (Veränderte Felder werden angezeigt)';
$lang['sp_confirm_created'] = 'Wurde am %1$s von %2$s erstellt';
$lang['sp_confirm_confirm'] = 'Freischalten';
$lang['sp_confirm_delete'] = 'Verwerfen';
$lang['sp_confirm_no_changes'] = 'Es wurden keine Änderungen zum Freischalten gefunden.';
@ -65,6 +71,7 @@ $lang['sp_edit_edited_need_confirm'] = 'Diese Änderungen werden öffentlich, so
$lang['sp_edit_edit_error'] = 'Fehler beim Ändern der Seite.';
$lang['sp_edit_confirm_subject'] = 'Freischaltung der Seite "%1$s"';
$lang['sp_edit_confirm_message'] = '%1$s hat die Seite "%2$s" ge&auml;ndert. Diese steht jetzt zum Freischalten f&uuml;r dich bereit. <a href="%3$s">Freischalten</a>';
$lang['sp_create_confirm_message'] = '%1$s hat die Seite "%2$s" erstellt. Diese steht jetzt zum Freischalten f&uuml;r dich bereit. <a href="%3$s">Freischalten</a>';
$lang['sp_edit_delete_success'] = 'Die Seite wurde erfolgreich gelöscht.';
$lang['sp_edit_delete'] = '"%1$s" löschen';
$lang['sp_edit_delete_confirm'] = 'Soll die Seite "%1$s" wirklich gelöscht werden?<br/><b>Dieser Vorgang kann nicht rückgängig gemacht werden!</b>';

View File

@ -33,6 +33,11 @@ $lang['sp_preview'] = 'Preview';
$lang['sp_permissions'] = 'Permissions';
$lang['sp_manage_permission'] = 'Grant Permissions';
//Status
$lang['sp_status_inactive'] = 'Inactive';
$lang['sp_status_active'] = 'Active';
$lang['sp_status_pending_confirmation'] = 'Waiting for Confirmation';
//Permissions
$lang['sp_user_already_access'] = '%1$s has already access to that page.';
$lang['sp_grant_permissions_success'] = 'The new permissions were granted successfully';
@ -46,6 +51,7 @@ $lang['sp_confirm_fail'] = 'An error occured while confirming changes.';
$lang['sp_confirm_delete_success'] = 'Changes were successfully deleted.';
$lang['sp_confirm_delete_fail'] = 'An error occured while deleting changes.';
$lang['sp_confirm_changed'] = 'Was changed at %1$s by %2$s (Showing changed Contents)';
$lang['sp_confirm_created'] = 'Was created at %1$s by %2$s';
$lang['sp_confirm_confirm'] = 'Confirm';
$lang['sp_confirm_delete'] = 'Dismiss';
$lang['sp_confirm_no_changes'] = 'No changes for confirmation were found.';
@ -65,6 +71,7 @@ $lang['sp_edit_edited_need_confirm'] = 'These changes get public, when %1$s conf
$lang['sp_edit_edit_error'] = 'An error occured while saving the changes.';
$lang['sp_edit_confirm_subject'] = 'Confirmation of "%1$s"';
$lang['sp_edit_confirm_message'] = '%1$s edited the page "%2$s". It is now ready for you to confirm. <a href="%3$s">Confirm</a>';
$lang['sp_create_confirm_message'] = '%1$s created the page "%2$s". It is now ready for you to confirm. <a href="%3$s">Confirm</a>';
$lang['sp_edit_delete_success'] = 'The page was deleted successfully.';
$lang['sp_edit_delete'] = 'Delete "%1$s"';
$lang['sp_edit_delete_confirm'] = 'Are you sure to delete the page "%1$s"?<br/><b>You cannot undo this!</b>';

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 264 KiB

View File

@ -55,7 +55,7 @@ if (!isset($_GET['direct']))
pageBodyParser();
function findPage(ctx, next) {
//console.log(ctx);
console.log(ctx);
if(!ctx.init) {
if (ctx.body) { //If POST-Request, send Post via ajax

View File

@ -234,7 +234,7 @@ function printHeader($title)
<label for="options_menu">
<p><span class="usr_info">';
//<img src="http://www.gravatar.com/avatar/' . md5(strtolower(trim($_SESSION['mail']))) . '?s=40&d=mm" alt=""/>
echo $_SESSION['user'] . '</span> <span class="fa fa-chevron-down"></span></p>
echo '<img src="http://www.gravatar.com/avatar/' . md5(strtolower(trim($_SESSION['mail']))) . '?s=40&d=mm" alt=""/> '.$_SESSION['user'] . '</span> <span class="fa fa-chevron-down"></span></p>
<ul>
<li><a href="' . $GLOBALS['MCONF']['web_uri'] . 'admin/user_settings.php"><span class="fa fa-gear"></span> ' . $GLOBALS['lang']->get('settings') . '</a></li>
<li><a href="' . $GLOBALS['MCONF']['web_uri'] . 'admin/logout.php" rel="external"><span class="fa fa-sign-out"></span> ' . $GLOBALS['lang']->get('logout') . '</a></li>