javascript — портлет jQuery UI сохраняет состояние в базе данных

Мы можем перетаскивать элементы, используя Сортируемый пользовательский интерфейс jQuery — портлеты. Я хочу сохранить состояние в базе данных MySQL. Любой способ (возможно, AJAX) сделать это?

Мой HTML:

<div class="column" id = "column-1">
First Category

<div class="portlet">
<div class="portlet-header">Feeds</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

<div class="portlet">
<div class="portlet-header">News</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

</div>

<div class="column" id = "column-2">
Second Category

<div class="portlet">
<div class="portlet-header">Shopping</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

</div>

<div class="column" id = "column-3">
Third Category

<div class="portlet">
<div class="portlet-header">Shopping</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

<div class="portlet">
<div class="portlet-header">Shopping</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

</div>

<div class="column" id = "column-4">
Fourth Category

<div class="portlet">
<div class="portlet-header">Links</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

<div class="portlet">
<div class="portlet-header">Images</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>

</div>

Мой JavaScript:

<script>
$( function() {
$( ".column" ).sortable({
connectWith: ".column",
handle: ".portlet-header",
cancel: ".portlet-toggle",
placeholder: "portlet-placeholder ui-corner-all"});

$( ".portlet" )
.addClass( "ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" )
.find( ".portlet-header" )
.addClass( "ui-widget-header ui-corner-all" )
.prepend( "<span class='ui-icon ui-icon-minusthick portlet-toggle'></span>");

$( ".portlet-toggle" ).on( "click", function() {
var icon = $( this );
icon.toggleClass( "ui-icon-minusthick ui-icon-plusthick" );
icon.closest( ".portlet" ).find( ".portlet-content" ).toggle();
});
} );
</script>

Стайлинг:

<style>
body {
min-width: 520px;
}
.column {
width: 170px;
float: left;
padding-bottom: 100px;
}
.portlet {
margin: 0 1em 1em 0;
padding: 0.3em;
}
.portlet-header {
padding: 0.2em 0.3em;
margin-bottom: 0.5em;
position: relative;
}
.portlet-toggle {
position: absolute;
top: 50%;
right: 0;
margin-top: -8px;
}
.portlet-content {
padding: 0.4em;
}
.portlet-placeholder {
border: 1px dotted black;
margin: 0 1em 1em 0;
height: 50px;
}
</style>

Скрипты и таблицы стилей:

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

Любая помощь будет признательна за PHP. Ниже приведен скриншот текущего состояния:

введите описание изображения здесь

Всякий раз, когда пользователь перетаскивает элемент из Первая категория в Вторая категория, это должно быть обновлено в базе данных.

1

Решение

Вам нужно пройти AJAX запрос на портлет update, Подробности на Документация по API.

1

Другие решения

Я не совсем понимаю ваш вопрос или даже то, что вы подразумеваете под состояниями, но я сделаю снимок в темноте и предположу, что вы имеете в виду, что вы хотите сохранить положение каждой ячейки относительно столбцов.

Я бы настроил его так, чтобы у каждого столбца было имя / номер, а у каждого ящика — ранг.

Таким образом, каждое поле при инициализации или изменении будет иметь ранг (от 0 до бесконечности), а его родитель, столбец, будет иметь имя

Быстрый пример: пример

Скажем, вы перемещаете окно новостей из первой категории во вторую категорию под полкой с покупками.
Когда вы впервые посмотрите на это, Новости будут обозначены как ['First', 1], После переключения это будет ['Second', 1],

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector