123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538 |
- /**
- * Copyright 2021, 2024 5 Mode
- *
- * This file is part of SnipSwap.
- *
- * SnipSwap is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * SnipSwap is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with SnipSwap. If not, see <https://www.gnu.org/licenses/>.
- *
- * cube-code.js
- *
- * Cube Code for home.php.
- *
- * @author Daniele Bonini <my25mb@aol.com>
- * @copyrights (c) 2021, 2024, 5 Mode
- */
- var cubes = []; // Cube array
- var offers = []; // Cube array
- var curcube; // Current cube
- var _selectedcube = 0; // Selected cube
- var totcubes = 0;
- /*
- * myCube Class
- *
- * @param string myname Current name of the cube
- * @param array mymap Face map
- * @param string myformalName Formal name of the cube
- * @returns myCube
- */
- function myCube(myname, myformalName, myAPP_HOST) {
- // Examples of cube moves:
- // 0, 0, 1, 0, 0
- // 0, 0, 5, 0, 0 hcur = [3, 4]
- // 1, 2, 3, 4, 1 vcur = [3, 5] shift(hlist[1,4]); set jolly = hlist[4];
- // 0, 0, 6, 0, 0 jolly = 1
- // 0, 0, 1, 0, 0
- // 1 turn 1 face up
- // 0, 0, 5, 0, 0
- // 0, 0, 3, 0, 0 hcur = [6, 4]
- // 5, 2, 6, 4, 5 vcur = [6, 3] shift(vlist[1,4]); set jolly = vlist[4];
- // 0, 0, 1, 0, 0 jolly = 5
- // 0, 0, 5, 0, 0
- // 1 turn 1 face left
- // 0, 0, 4, 0, 0
- // 0, 0, 5, 0, 0 hcur = [2, 3]
- // 4, 1, 2, 3, 4 vcur = [2, 5] shift(hlist[1,4]); set jolly = hlist[4];
- // 0, 0, 6, 0, 0 jolly = 4
- // 0, 0, 4, 0, 0
- // 1 turn 1 face left
- // 0, 0, 3, 0, 0
- // 0, 0, 5, 0, 0 hcur = [1, 2]
- // 3, 4, 1, 2, 3 vcur = [1, 5] shift(hlist[1,4]); set jolly = hlist[4];
- // 0, 0, 6, 0, 0 jolly = 3
- // 0, 0, 3, 0, 0
- // 1 turn 1 face rght
- // 0, 0, 4, 0, 0
- // 0, 0, 5, 0, 0 hcur = [1, 2]
- // 4, 1, 2, 3, 4 vcur = [1, 5] shift(hlist[1,4]); set jolly = hlist[4];
- // 0, 0, 6, 0, 0 jolly = 3
- // 0, 0, 4, 0, 0
- // Properties
- this.name = myname;
- this.map = ["Address", "Contacts", "Other Info", "Menu", "Pictures", "Password"];
- this.formalName = myformalName;
- this.guid = "";
- this.password = "";
- this.cats = "";
- this.desc = "";
- this.title = "";
- this.label = "";
- this.link = "";
- this.xml = "";
- this.hcube = [0,1,2,3,0];
- this.vcube = [0,5,2,4,0];
- this.hlist = [1,2,3,0];
- this.vlist = [5,2,4,0];
- this.jolly = 0;
- this.hcur = [this.hcube[2], this.hcube[3]];
- this.vcur = [this.vcube[2], this.vcube[3]];
- // Methods
- this.updateCube = myupdateCube;
- this.turnLeft = myturnLeft;
- this.turnRight = myturnRight;
- this.turnUp = myturnUp;
- this.turnDown = myturnDown;
- this.getFace = mygetFace;
- this.gethcube = mygethcube;
- this.getvcube = mygetvcube;
- this.gethcur = mygethcur;
- this.getvcur = mygetvcur;
- this.getname = mygetname;
- this.getguid = mygetguid;
- this.getpassword = mygetpassword;
- this.getxml = mygetxml;
- this.savedata = mysavedata;
- this.start = mystart;
- // -- Methods End
- /*
- * Execute horizontal / vertical movement of the cube
- *
- * @param char Update direction
- * @returns void
- */
- function myupdateCube(tthis, upddir) {
- if (upddir=='h') {
- tthis.hcube[0] = tthis.jolly;
- for(i=1;i<=tthis.hlist.length;i++) {
- tthis.hcube[i] = tthis.hlist[i-1];
- }
- tthis.vcube[2] = tthis.hcube[2];
- tthis.vcube[0] = tthis.jolly;
- tthis.vcube[4] = tthis.jolly;
- } else {
- tthis.vcube[0] = tthis.jolly;
- for(i=1;i<=tthis.vlist.length;i++) {
- tthis.vcube[i] = tthis.vlist[i-1];
- }
- tthis.hcube[2] = tthis.vcube[2];
- tthis.hcube[0] = tthis.jolly;
- tthis.hcube[4] = tthis.jolly;
- }
- tthis.hcur = [tthis.hcube[2], tthis.hcube[3]];
- tthis.vcur = [tthis.vcube[2], tthis.vcube[3]];
- }
- /*
- * Move the current cube to the left
- *
- * @returns void
- */
- function myturnLeft() {
- var newhlist = [];
- var newfirst = this.hlist.pop();
- newhlist[0] = newfirst;
- newhlist[1] = this.hlist[0];
- newhlist[2] = this.hlist[1];
- newhlist[3] = this.hlist[2];
- this.hlist = newhlist;
- this.jolly = this.hlist[3];
- // Save the horizzontal movement..
- this.updateCube(this, 'h');
- }
- /*
- * Move the current cube to the right
- *
- * @returns void
- */
- function myturnRight() {
- var newhlist = [];
- var newlast = this.hlist.shift();
- newhlist[0] = this.hlist[0];
- newhlist[1] = this.hlist[1];
- newhlist[2] = this.hlist[2];
- newhlist[3] = newlast;
- this.hlist = newhlist;
- this.jolly = this.hlist[3];
- // Save the horizzontal movement..
- this.updateCube(this, 'h');
- }
- /*
- * Move the current cube upward
- *
- * @returns void
- */
- function myturnUp() {
- var newvlist = [];
- var newfirst = this.vlist.pop();
- newvlist[0] = newfirst;
- newvlist[1] = this.vlist[0];
- newvlist[2] = this.vlist[1];
- newvlist[3] = this.vlist[2];
- this.vlist = newvlist;
- this.jolly = this.vlist[3];
- // Save the vertical movement..
- this.updateCube(this, 'v');
- }
- /*
- * Move the current cube downward
- *
- * @returns void
- */
- function myturnDown() {
- var newvlist = [];
- var newlast = this.vlist.shift();
- newvlist[0] = this.vlist[0];
- newvlist[1] = this.vlist[1];
- newvlist[2] = this.vlist[2];
- newvlist[3] = newlast;
- this.vlist = newvlist;
- this.jolly = this.vlist[3];
- // Save the vertical movement..
- this.updateCube(this, 'v');
- }
- /*
- * Get the cube face associated to the given coordinates [v0|v1|h0|h1]
- *
- * @returns string
- */
- function mygetFace(iface) {
- // v0 = front
- // v1 = up
- // h0 = front
- // h2 = right
- switch (iface) {
- case "h0":
- return this.map[this.hcur[0]];
- break;
- case "h1":
- return this.map[this.hcur[1]];
- break;
- case "v0":
- return this.map[this.vcur[0]];
- break;
- case "v1":
- return this.map[this.vcur[1]];
- break;
- }
- }
- /*
- * Expose the current horizontal list of the cube, for debug purpose
- *
- * @returns string
- */
- function mygethcube() {
- return this.hcube.toString();
- }
- /*
- * Expose the current vertical list of the cube, for debug purpose
- *
- * @returns string
- */
- function mygetvcube() {
- return this.vcube.toString();
- }
- /*
- * Expose the current horizontal position of the cube, for debug purpose
- *
- * @returns string
- */
- function mygethcur() {
- return this.hcur.toString();
- }
- /*
- * Expose the current vertical position of the cube, for debug purpose
- *
- * @returns string
- */
- function mygetvcur() {
- return this.vcur.toString();
- }
- /*
- * Get the cube name
- *
- * @returns string
- */
- function mygetname() {
- return this.name;
- }
- /*
- * Save the cube data locally
- *
- * @returns void
- */
- function mysavedata() {
- //fileName = myformalName;
- var ffileName = this.formalName;
- var xxml = this.xml;
- //alert(ffileName);
- $.ajax({
- method: "POST",
- async: false,
- url: "/putxml",
- dataType: "json",
- jsonp: false,
- data: {
- f: ffileName,
- xml: xxml
- },
- success: function( data ) {
- // Handle 'no match' indicated by [ "" ] response
- //response( data.length === 1 && data[0].length === 0 ? [] : data );
- if (data.length < 1 || data.length === 1) {
- alert("An error happened saving the data (#1)!");
- } else if (data.length === 2 && data[0] === 200) {
- //alert("Data saved successfully!");
- } else {
- alert("An error happened saving the data (#2)!");
- //alert(data[0]);
- //alert(data[1]);
- //alert(data[2]);
- //alert(data[3]);
- //alert(data[4]);
- }
- },
- error: function (responseData, textStatus, errorThrown) {
- alert("POST failed: " + errorThrown + " data: " + responseData.responseText);
- }
- });
- }
- /*
- * Cube init procedure:
- * - read the xml data associated with the cube
- *
- * @returns void
- */
- function mystart() {
- bConnectionOK = false;
- var xhttp = new XMLHttpRequest();
- //alert(myname);
- var xmluri = "http://" + myAPP_HOST + "/getxml?f=" + this.formalName;
- //alert(xmluri);
- xhttp.open("GET", xmluri, true);
- xhttp.send();
- xhttp.onreadystatechange = function () {
- if (this.readyState == 4 && this.status == 200) {
- bConnectionOK = true;
- xml = this.responseText
- var z;
- var myObj;
- z = parseInt(myname.substr(5));
- //alert(z);
- myObj = cubes[z-1];
- myObj.xml = xml;
- re = new RegExp("\<guid\>(.*)\<\/guid\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#2)<br><br>");
- return;
- } else {
- myObj.guid = a[1];
- }
- re = new RegExp("\<password\>(.*)\<\/password\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#3)<br><br>");
- return;
- } else {
- myObj.password = a[1];
- }
- re = new RegExp("\<cats\>(.*)\<\/cats\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#4)<br><br>");
- return;
- } else {
- myObj.cats = a[1];
- }
- re = new RegExp("\<desc\>(.*)\<\/desc\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#5)<br><br>");
- return;
- } else {
- myObj.desc = a[1];
- }
- re = new RegExp("\<title\>(.*)\<\/title\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#6)<br><br>");
- return;
- } else {
- myObj.title = a[1];
- }
- re = new RegExp("\<label\>(.*)\<\/label\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#7)<br><br>");
- return;
- } else {
- myObj.label = a[1];
- }
- re = new RegExp("\<link\>(.*)\<\/link\>", "igsu");
- a = re.exec(xml);
- if (!a || a.length===0) {
- document.write("Data access error (#8)<br><br>");
- return;
- } else {
- myObj.link = a[1];
- }
- cubes[z-1] = myObj;
- } else {
- if ((this.readyState == 4 && this.status == 0) && (!bConnectionOK)) {
- document.write("Data access error (#1)<br><br>");
- }
- }
- }
- //if (offers[0]) {
- // alert(offers[0].xml);
- //}
- }
- /*
- * Get the guid of the cube
- *
- * @returns string
- */
- function mygetguid() {
- return this.guid;
- }
- /*
- * Get the editor password of the cube
- *
- * @returns string
- */
- function mygetpassword() {
- return this.password;
- }
- /*
- * Get the xml data associated with the cube
- *
- * @returns string
- */
- function mygetxml() {
- return this.xml;
- }
- }
- // -- End myCube class
- /*
- * Select a cube
- *
- * @param <interfaceEl> tthis selected cube
- * @returns void
- */
- function _selCube(tthis) {
- //alert($(tthis).attr("order"));
- var _cubeorder = parseInt($(tthis).attr("order"));
- _selectedcube = _cubeorder-1;
- curcube = cubes[_selectedcube];
- //curcube.start();
- }
- function updCubeXML(xmlStr, nodeName, newVal) {
- switch (nodeName) {
- case "title":
- re = /(\<title>).*(\<\/title>)/gs;
- break;
- case "desc":
- re = /(\<desc>).*(\<\/desc>)/gs;
- break;
- case "code":
- re = /(\<code>\<\!\[CDATA\[).*(\]\]\>\<\/code>)/gs;
- break;
- case "tags":
- re = /(\<tags>).*(\<\/tags>)/gs;
- break;
- case "cats":
- re = /(\<cats>).*(\<\/cats>)/gs;
- break;
- case "label":
- re = /(\<label>).*(\<\/label>)/gs;
- break;
- case "link":
- re = /(\<link>).*(\<\/link>)/gs;
- break;
- case "email":
- re = /(\<email>).*(\<\/email>)/gs;
- break;
- }
- xmlStr = xmlStr.replace(re, "$1" + newVal + "$2");
-
- return xmlStr;
- }
|