Adding and changing dictionaries.
This commit is contained in:
parent
8a025d14b5
commit
8861ca24b5
|
@ -224,7 +224,7 @@ elseif (isset($_GET['loggedout']) && $current_user <= 0) {
|
||||||
<label><button type="button" onclick="ExportDictionary()" style="cursor:pointer;">Export Current Dictionary</button></label>
|
<label><button type="button" onclick="ExportDictionary()" style="cursor:pointer;">Export Current Dictionary</button></label>
|
||||||
<?php if ($current_user > 0) { //If logged in, show the log out button. ?>
|
<?php if ($current_user > 0) { //If logged in, show the log out button. ?>
|
||||||
<label><span>Change Dictionaries</span>
|
<label><span>Change Dictionaries</span>
|
||||||
<select id="userDictionaries" onchange="LoadOtherDictionary();"></select>
|
<select id="userDictionaries" onchange="ChangeDictionary();"></select>
|
||||||
</label>
|
</label>
|
||||||
<label><button type="button" onclick="CreateNewDictionary()" style="cursor:pointer;">Create a New Dictionary</button></label>
|
<label><button type="button" onclick="CreateNewDictionary()" style="cursor:pointer;">Create a New Dictionary</button></label>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* global markdown */
|
/* global markdown */
|
||||||
/* global Defiant */
|
/* global Defiant */
|
||||||
|
|
||||||
var currentUser = 0;
|
var currentUser = 0;
|
||||||
|
@ -299,7 +299,7 @@ function SaveSettings() {
|
||||||
SaveAndUpdateDictionary(true);
|
SaveAndUpdateDictionary(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function CheckForPartsOfSpeechChange () {
|
function CheckForPartsOfSpeechChange() {
|
||||||
if (htmlEntities(document.getElementById("dictionaryPartsOfSpeechEdit").value) != currentDictionary.settings.partsOfSpeech) {
|
if (htmlEntities(document.getElementById("dictionaryPartsOfSpeechEdit").value) != currentDictionary.settings.partsOfSpeech) {
|
||||||
if (htmlEntities(document.getElementById("dictionaryPartsOfSpeechEdit").value) != "") {
|
if (htmlEntities(document.getElementById("dictionaryPartsOfSpeechEdit").value) != "") {
|
||||||
currentDictionary.settings.partsOfSpeech = htmlEntities(document.getElementById("dictionaryPartsOfSpeechEdit").value);
|
currentDictionary.settings.partsOfSpeech = htmlEntities(document.getElementById("dictionaryPartsOfSpeechEdit").value);
|
||||||
|
@ -310,13 +310,26 @@ function CheckForPartsOfSpeechChange () {
|
||||||
|
|
||||||
function EmptyWholeDictionary() {
|
function EmptyWholeDictionary() {
|
||||||
if (confirm("This will delete the entire current dictionary. If you do not have a backed up export, you will lose it forever!\n\nDo you still want to delete?")) {
|
if (confirm("This will delete the entire current dictionary. If you do not have a backed up export, you will lose it forever!\n\nDo you still want to delete?")) {
|
||||||
currentDictionary = JSON.parse(defaultDictionaryJSON);
|
ResetDictionaryToDefault();
|
||||||
SaveAndUpdateDictionary(false);
|
SaveAndUpdateDictionary(false);
|
||||||
SetPartsOfSpeech();
|
SetPartsOfSpeech();
|
||||||
HideSettings();
|
HideSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CreateNewDictionary() {
|
||||||
|
// This is EmptyWholeDictionary() without the confirmation. ONLY USE WHEN LOGGED IN.
|
||||||
|
ResetDictionaryToDefault();
|
||||||
|
SaveAndUpdateDictionary(false);
|
||||||
|
LoadUserDictionaries();
|
||||||
|
SetPartsOfSpeech();
|
||||||
|
HideSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ResetDictionaryToDefault() {
|
||||||
|
currentDictionary = JSON.parse(defaultDictionaryJSON);
|
||||||
|
}
|
||||||
|
|
||||||
function SaveDictionary(sendToDatabase, sendWords) {
|
function SaveDictionary(sendToDatabase, sendWords) {
|
||||||
localStorage.setItem('dictionary', JSON.stringify(currentDictionary));
|
localStorage.setItem('dictionary', JSON.stringify(currentDictionary));
|
||||||
|
|
||||||
|
@ -368,7 +381,7 @@ function DataToSend(doSendWords) {
|
||||||
if (currentDictionary.externalID == 0) {
|
if (currentDictionary.externalID == 0) {
|
||||||
data = "name=" + encodeURIComponent(currentDictionary.name) + "&description=" + encodeURIComponent(currentDictionary.description) + "&words=" + encodeURIComponent(JSON.stringify(currentDictionary.words));
|
data = "name=" + encodeURIComponent(currentDictionary.name) + "&description=" + encodeURIComponent(currentDictionary.description) + "&words=" + encodeURIComponent(JSON.stringify(currentDictionary.words));
|
||||||
data += "&allowduplicates=" + ((currentDictionary.settings.allowDuplicates) ? "1" : "0") + "&casesensitive=" + ((currentDictionary.settings.caseSensitive) ? "1" : "0");
|
data += "&allowduplicates=" + ((currentDictionary.settings.allowDuplicates) ? "1" : "0") + "&casesensitive=" + ((currentDictionary.settings.caseSensitive) ? "1" : "0");
|
||||||
data += "&partsofspeech=" + encodeURIComponent(currentDictionary.settings.partsOfSpeech) + "&iscomplete=" + ((currentDictionary.settings.isComplete) ? "1" : "0") + "&ispublic=0";
|
data += "&partsofspeech=" + encodeURIComponent(currentDictionary.settings.partsOfSpeech) + "&sortbyequivalent=" + ((currentDictionary.settings.sortByEquivalent) ? "1" : "0") + "&iscomplete=" + ((currentDictionary.settings.isComplete) ? "1" : "0") + "&ispublic=0";
|
||||||
} else {
|
} else {
|
||||||
if (currentDictionary.name != previousDictionary.name) {
|
if (currentDictionary.name != previousDictionary.name) {
|
||||||
data += "name=" + encodeURIComponent(currentDictionary.name);
|
data += "name=" + encodeURIComponent(currentDictionary.name);
|
||||||
|
@ -407,13 +420,12 @@ function LoadDictionary() {
|
||||||
if (loadDictionary.readyState == 4 && loadDictionary.status == 200) {
|
if (loadDictionary.readyState == 4 && loadDictionary.status == 200) {
|
||||||
if (loadDictionary.responseText == "no dictionaries") {
|
if (loadDictionary.responseText == "no dictionaries") {
|
||||||
SendDictionary(false);
|
SendDictionary(false);
|
||||||
console.log(loadDictionary.responseText);
|
} else if (loadDictionary.responseText.length > 50) {
|
||||||
} else if (loadDictionary.responseText.length < 20) {
|
|
||||||
console.log(loadDictionary.responseText);
|
|
||||||
} else {
|
|
||||||
currentDictionary = JSON.parse(loadDictionary.responseText);
|
currentDictionary = JSON.parse(loadDictionary.responseText);
|
||||||
SaveDictionary(false, false);
|
SaveDictionary(false, false);
|
||||||
ProcessLoad();
|
ProcessLoad();
|
||||||
|
} else {
|
||||||
|
console.log(loadDictionary.responseText);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -423,6 +435,35 @@ function LoadDictionary() {
|
||||||
loadDictionary.send();
|
loadDictionary.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ChangeDictionary() {
|
||||||
|
var userDictionariesSelect = document.getElementById("userDictionaries");
|
||||||
|
if (currentDictionary.externalID != userDictionariesSelect.value && userDictionariesSelect.options.length > 1) {
|
||||||
|
var changeDictionaryRequest = new XMLHttpRequest();
|
||||||
|
changeDictionaryRequest.open('POST', "php/ajax_dictionarymanagement.php?action=switch");
|
||||||
|
changeDictionaryRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||||
|
var postString = "newdictionaryid=" + userDictionariesSelect.value.toString();
|
||||||
|
changeDictionaryRequest.onreadystatechange = function() {
|
||||||
|
if (changeDictionaryRequest.readyState == 4 && changeDictionaryRequest.status == 200) {
|
||||||
|
if (changeDictionaryRequest.responseText == "no dictionaries") {
|
||||||
|
SendDictionary(false);
|
||||||
|
console.log(changeDictionaryRequest.responseText);
|
||||||
|
} else if (changeDictionaryRequest.responseText.length > 50) {
|
||||||
|
currentDictionary = JSON.parse(changeDictionaryRequest.responseText);
|
||||||
|
SaveDictionary(false, false);
|
||||||
|
ProcessLoad();
|
||||||
|
HideSettings();
|
||||||
|
} else {
|
||||||
|
console.log(changeDictionaryRequest.responseText);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
changeDictionaryRequest.send(postString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function LoadLocalDictionary() {
|
function LoadLocalDictionary() {
|
||||||
if (localStorage.getItem('dictionary')) {
|
if (localStorage.getItem('dictionary')) {
|
||||||
var tmpDictionary = JSON.parse(localStorage.getItem('dictionary'));
|
var tmpDictionary = JSON.parse(localStorage.getItem('dictionary'));
|
||||||
|
|
9
js/ui.js
9
js/ui.js
|
@ -13,11 +13,11 @@ window.onload = function () {
|
||||||
|
|
||||||
function LoadUserDictionaries() {
|
function LoadUserDictionaries() {
|
||||||
var getDictionariesRequest = new XMLHttpRequest();
|
var getDictionariesRequest = new XMLHttpRequest();
|
||||||
|
var userDictionariesSelect = document.getElementById("userDictionaries");
|
||||||
|
if (userDictionariesSelect != null) {
|
||||||
getDictionariesRequest.open('GET', "php/ajax_dictionarymanagement.php?action=getall");
|
getDictionariesRequest.open('GET', "php/ajax_dictionarymanagement.php?action=getall");
|
||||||
getDictionariesRequest.onreadystatechange = function() {
|
getDictionariesRequest.onreadystatechange = function() {
|
||||||
if (getDictionariesRequest.readyState == 4 && getDictionariesRequest.status == 200) {
|
if (getDictionariesRequest.readyState == 4 && getDictionariesRequest.status == 200) {
|
||||||
console.log()
|
|
||||||
var userDictionariesSelect = document.getElementById("userDictionaries");
|
|
||||||
if (userDictionariesSelect.options.length > 0) {
|
if (userDictionariesSelect.options.length > 0) {
|
||||||
for (var i = userDictionariesSelect.options.length - 1; i >= 0; i--) {
|
for (var i = userDictionariesSelect.options.length - 1; i >= 0; i--) {
|
||||||
userDictionariesSelect.removeChild(userDictionariesSelect.options[i]);
|
userDictionariesSelect.removeChild(userDictionariesSelect.options[i]);
|
||||||
|
@ -25,7 +25,7 @@ function LoadUserDictionaries() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var dictionaries = getDictionariesRequest.responseText.split("_DICTIONARYSEPARATOR_");
|
var dictionaries = getDictionariesRequest.responseText.split("_DICTIONARYSEPARATOR_");
|
||||||
for (var j = 0; j < dictionaries.length; j++) {
|
for (var j = 0; j < dictionaries.length - 1; j++) {
|
||||||
var dictionaryOption = document.createElement('option');
|
var dictionaryOption = document.createElement('option');
|
||||||
var dictionaryValues = dictionaries[j].split("_IDNAMESEPARATOR_");
|
var dictionaryValues = dictionaries[j].split("_IDNAMESEPARATOR_");
|
||||||
dictionaryOption.appendChild(document.createTextNode(dictionaryValues[1]));
|
dictionaryOption.appendChild(document.createTextNode(dictionaryValues[1]));
|
||||||
|
@ -33,11 +33,12 @@ function LoadUserDictionaries() {
|
||||||
userDictionariesSelect.appendChild(dictionaryOption);
|
userDictionariesSelect.appendChild(dictionaryOption);
|
||||||
}
|
}
|
||||||
if (dictionaries.length > 1) {
|
if (dictionaries.length > 1) {
|
||||||
userDictionariesSelect.value = "";
|
userDictionariesSelect.value = currentDictionary.externalID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getDictionariesRequest.send();
|
getDictionariesRequest.send();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetTextFile(filename) {
|
function GetTextFile(filename) {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
require_once("../required.php");
|
// require_once("../required.php");
|
||||||
|
require_once('config.php');
|
||||||
|
require_once(SITE_LOCATION . '/php/functions.php');
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
if ($_GET['action'] == 'getall') {
|
if ($_GET['action'] == 'getall') {
|
||||||
Get_Dictionaries();
|
Get_Dictionaries(true);
|
||||||
}
|
}
|
||||||
elseif ($_GET['action'] == 'load') {
|
elseif ($_GET['action'] == 'load') {
|
||||||
Load_Current_Dictionary();
|
Load_Current_Dictionary();
|
||||||
|
@ -16,10 +18,13 @@ elseif ($_GET['action'] == 'update') {
|
||||||
Update_Current_Dictionary();
|
Update_Current_Dictionary();
|
||||||
}
|
}
|
||||||
elseif ($_GET['action'] == 'switch') {
|
elseif ($_GET['action'] == 'switch') {
|
||||||
Switch_Current_Dictionary();
|
Switch_Current_Dictionary($_POST['newdictionaryid'], true);
|
||||||
|
}
|
||||||
|
elseif ($_GET['action'] == 'delete') {
|
||||||
|
Switch_Current_Dictionary($_POST['deletedictionaryid']);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Get_Dictionaries() {
|
function Get_Dictionaries($return_list = true) {
|
||||||
if (isset($_SESSION['user'])) {
|
if (isset($_SESSION['user'])) {
|
||||||
if ($_SESSION['user'] > 0) {
|
if ($_SESSION['user'] > 0) {
|
||||||
$query = "SELECT `id`, `name` FROM `dictionaries` WHERE `user`=" . $_SESSION['user'] . " ORDER BY `name` ASC;";
|
$query = "SELECT `id`, `name` FROM `dictionaries` WHERE `user`=" . $_SESSION['user'] . " ORDER BY `name` ASC;";
|
||||||
|
@ -27,6 +32,7 @@ function Get_Dictionaries() {
|
||||||
|
|
||||||
if ($dictionaries) {
|
if ($dictionaries) {
|
||||||
if (num_rows($dictionaries) > 0) {
|
if (num_rows($dictionaries) > 0) {
|
||||||
|
if ($return_list) {
|
||||||
$list = "";
|
$list = "";
|
||||||
$_SESSION['dictionaries'] = [];
|
$_SESSION['dictionaries'] = [];
|
||||||
while ($dict = fetch($dictionaries)) {
|
while ($dict = fetch($dictionaries)) {
|
||||||
|
@ -35,6 +41,7 @@ function Get_Dictionaries() {
|
||||||
$list .= $dict['id'] . '_IDNAMESEPARATOR_' . $dict['name'] . '_DICTIONARYSEPARATOR_';
|
$list .= $dict['id'] . '_IDNAMESEPARATOR_' . $dict['name'] . '_DICTIONARYSEPARATOR_';
|
||||||
}
|
}
|
||||||
echo $list;
|
echo $list;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
echo "no dictionaries";
|
echo "no dictionaries";
|
||||||
|
@ -99,13 +106,14 @@ function Save_Current_DictionaryAsNew() {
|
||||||
$dbconnection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
$dbconnection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
$query = "INSERT INTO `dictionaries`(`user`, `is_current`, `name`, `description`, `words`, `allow_duplicates`, `case_sensitive`, `parts_of_speech`, `sort_by_equivalent`, `is_complete`, `is_public`) ";
|
$query = "INSERT INTO `dictionaries`(`user`, `is_current`, `name`, `description`, `words`, `allow_duplicates`, `case_sensitive`, `parts_of_speech`, `sort_by_equivalent`, `is_complete`, `is_public`) ";
|
||||||
$query .= "VALUES (" . $_SESSION['user'] . ",1,'" . $_POST['name'] . "','" . $_POST['description'] . "','" . $_POST['words'] . "'," . $_POST['allowduplicates'] . "," . $_POST['casesensitive'] . ",'" . $_POST['partsofspeech'] . "'," . $_POST['sortbyequivalent'] . "," . $_POST['iscomplete'] . "," . $_POST['ispublic'] . ")";
|
$query .= "VALUES (" . $_SESSION['user'] . ",0,'" . $_POST['name'] . "','" . $_POST['description'] . "','" . $_POST['words'] . "'," . $_POST['allowduplicates'] . "," . $_POST['casesensitive'] . ",'" . $_POST['partsofspeech'] . "'," . $_POST['sortbyequivalent'] . "," . $_POST['iscomplete'] . "," . $_POST['ispublic'] . ")";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$update = $dbconnection->prepare($query);
|
$update = $dbconnection->prepare($query);
|
||||||
$update->execute();
|
$update->execute();
|
||||||
$_SESSION['dictionary'] = $conn->lastInsertId;
|
$_SESSION['dictionary'] = $conn->lastInsertId;
|
||||||
$_SESSION['dictionaries'][] = $_SESSION['dictionary']; //Add new id to valid dictionaries.
|
$_SESSION['dictionaries'][] = $_SESSION['dictionary']; //Add new id to valid dictionaries.
|
||||||
|
Switch_Current_Dictionary($_SESSION['dictionary'], false);
|
||||||
echo $_SESSION['dictionary'];
|
echo $_SESSION['dictionary'];
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -167,16 +175,20 @@ function Update_Current_Dictionary() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function Switch_Current_Dictionary() {
|
function Switch_Current_Dictionary($newdictionaryid, $returndictionary = true) {
|
||||||
if (isset($_POST['newdictionaryid']) && isset($_SESSION['user'])) {
|
if (isset($newdictionaryid) && isset($_SESSION['user'])) {
|
||||||
if (in_array($_POST['newdictionaryid'], $_SESSION['dictionaries'])) {
|
if (in_array($newdictionaryid, $_SESSION['dictionaries'])) {
|
||||||
//Clear is_current from all user's dictionaries and then update the one they chose, only if the chosen dictionary is valid.
|
//Clear is_current from all user's dictionaries and then update the one they chose, only if the chosen dictionary is valid.
|
||||||
$query = "UPDATE `dictionaries` SET `is_current`=0 WHERE `user`=" . $_SESSION['user'] . ";";
|
$query = "UPDATE `dictionaries` SET `is_current`=0 WHERE `user`=" . $_SESSION['user'] . ";";
|
||||||
$query .= "UPDATE `dictionaries` SET `is_current`=1 WHERE `id`=" . $_POST['newdictionaryid'] . " AND `user`=" . $_SESSION['user'] . ";";
|
$query .= "UPDATE `dictionaries` SET `is_current`=1 WHERE `id`=" . $newdictionaryid . " AND `user`=" . $_SESSION['user'] . ";";
|
||||||
$update = query($query);
|
$update = query($query);
|
||||||
|
|
||||||
if ($update) {
|
if ($update) {
|
||||||
|
if ($returndictionary) {
|
||||||
Load_Current_Dictionary();
|
Load_Current_Dictionary();
|
||||||
|
} else {
|
||||||
|
echo "dictionary switched";
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
echo "could not update";
|
echo "could not update";
|
||||||
|
@ -189,4 +201,31 @@ function Switch_Current_Dictionary() {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*function Delete_Current_Dictionary($deletedictionaryid) {
|
||||||
|
if (isset($deletedictionaryid) && isset($_SESSION['user'])) {
|
||||||
|
if (in_array($deletedictionaryid, $_SESSION['dictionaries'])) {
|
||||||
|
//Clear is_current from all user's dictionaries and then update the one they chose, only if the chosen dictionary is valid.
|
||||||
|
$query = "DELETE FROM `dictionaries` WHERE `id`=" . $deletedictionaryid . " AND `user`=" . $_SESSION['user'] . ";";
|
||||||
|
$update = query($query);
|
||||||
|
|
||||||
|
if ($update) {
|
||||||
|
Get_Dictionaries(false);
|
||||||
|
$query = "UPDATE `dictionaries` SET `is_current`=1 WHERE `id`=" . $_SESSION['dictionaries'][0] . " AND `user`=" . $_SESSION['user'] . ";";
|
||||||
|
$update = query($query);
|
||||||
|
if ($update) {
|
||||||
|
Load_Current_Dictionary();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
echo "could not update";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "invalid dictionary";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "no info provided";
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}*/
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
function query ($query_string) {
|
function query ($query_string) {
|
||||||
$dbconnection = new PDO('mysql:host=' . DATABASE_SERVERNAME . ';dbname=' . DATABASE_NAME . ';charset=utf8', DATABASE_USERNAME, DATABASE_PASSWORD);
|
$dbconnection = new PDO('mysql:host=' . DATABASE_SERVERNAME . ';dbname=' . DATABASE_NAME . ';charset=utf8', DATABASE_USERNAME, DATABASE_PASSWORD);
|
||||||
$dbconnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
$dbconnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
$dbconnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
|
$dbconnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
|
||||||
$dbconnection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
$dbconnection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
||||||
try {
|
try {
|
||||||
$queryResults = $dbconnection->prepare($query_string);
|
$queryResults = $dbconnection->prepare($query_string);
|
||||||
|
|
Loading…
Reference in New Issue