Initial commit
31
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# OS generated files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Trashes
|
||||
Thumbs.db
|
||||
|
||||
# Ignore temporary office docs
|
||||
~$*
|
||||
|
||||
# The active config file copied from config-dist.php
|
||||
config.php
|
||||
|
||||
# Vim
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# sass generated files
|
||||
.sass-cache/
|
||||
install/.sass-cache/
|
||||
compressed
|
||||
|
||||
# IDE generated
|
||||
.idea/
|
||||
|
||||
images/
|
||||
|
||||
# Temporary PHP files
|
||||
|
||||
?.php
|
||||
sess.php
|
||||
8
LICENSE.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
Copyright (c) 2026 Junior
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Proprietary License
|
||||
|
||||
Unauthorized copying of this file, via any medium, is strictly prohibited.
|
||||
Proprietary and confidential.
|
||||
24
README.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# MTG Random Interface
|
||||
|
||||
This small project provides a web based tool for running a bespoke randomized MTG card game.
|
||||
|
||||
## This project requires
|
||||
|
||||
* PHP ImageMagick
|
||||
|
||||
## Don't forget to:
|
||||
|
||||
* Create a MySQL/MariaDB database for the app with privileges granted to a user
|
||||
* `create database mtgrandom`
|
||||
* `create user 'mtgrandom'@'localhost' identified by 'password'`
|
||||
* `grant all privileges on mtgrandom.* to 'mtgrandom'@'localhost'`
|
||||
* Import the `install/initial_db_mysql.sql` database structure
|
||||
* `mysql --host=localhost --user=mtgrandom -p mtgrandom < install/initial_db_mysql.sql`
|
||||
* Change the ownership of the `images/` folder to the web server user
|
||||
* `chown :www-data images`
|
||||
* `chmod g+ws images`
|
||||
* Copy the `config-dist.php` file to `config.php` and edit that file appropriately
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Should go here :)
|
||||
38
ajax/deletecard.php
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
define("FAILED", true);
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
|
||||
function sendResponse($error = false, $message = "") {
|
||||
global $data;
|
||||
$data["error"] = $error;
|
||||
if ( $error ) $data["message"] = $message;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
if ( !$_SESSION["validated"] ) sendResponse(FAILED, "Login Required");
|
||||
|
||||
if ( !isset($_REQUEST["id"]) ) {
|
||||
sendResponse(FAILED, "Invalid Request");
|
||||
}
|
||||
|
||||
$id = intval($_REQUEST["id"]);
|
||||
if ( $id <= 0 ) sendResponse(FAILED, "Invalid Image Reference");
|
||||
$image = new MTGImage($id);
|
||||
if ( $image->getId() == 0 ) sendResponse(FAILED, "Unknown Image Reference");
|
||||
$data["filename"] = $image->getFileName();
|
||||
|
||||
if ( !$image->delete() ) {
|
||||
sendResponse(FAILED, "Could not delete card!");
|
||||
}
|
||||
|
||||
sendResponse();
|
||||
|
||||
// vim:ts=3 sw=3 et:
|
||||
64
ajax/getcard.php
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
function sendResponse() {
|
||||
global $data;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
$second = false;
|
||||
if ( isset($_REQUEST["second"]) && ($_REQUEST["second"] == "true") ) $second = true;
|
||||
$initialcard = false;
|
||||
if ( isset($_REQUEST["initialcard"]) && ($_REQUEST["initialcard"] == "true") ) $initialcard = true;
|
||||
$skip = false;
|
||||
if ( isset($_REQUEST["skip"]) && ($_REQUEST["skip"] == "true") ) $skip = true;
|
||||
$reverse = false;
|
||||
if ( isset($_REQUEST["reverse"]) && ($_REQUEST["reverse"] == "true") ) $reverse = true;
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
$data["cards"] = [];
|
||||
$data["secondimg"] = $second;
|
||||
|
||||
if ( $reverse ) {
|
||||
if ( $_SESSION['cardcount'] > $_SESSION['startcount'] ) {
|
||||
$_SESSION['cardcount']--;
|
||||
$junk = array_pop($_SESSION["cardlist"]);
|
||||
} else {
|
||||
}
|
||||
$data['cards'] = $_SESSION['cardlist'][array_key_last($_SESSION['cardlist'])];
|
||||
$data['cardcount'] = $_SESSION['cardcount'];
|
||||
sendResponse();
|
||||
}
|
||||
|
||||
$previous_cards = $_SESSION['cardlist'][array_key_last($_SESSION['cardlist'])];
|
||||
|
||||
if ( $second ) {
|
||||
$random_image = MTGImage::getRandomImage($previous_cards[0]->getFileName());
|
||||
} else {
|
||||
$random_image = MTGImage::getRandomImage();
|
||||
}
|
||||
if ( $random_image === false ) {
|
||||
$data["error"] = true;
|
||||
$data["message"] = "Error retrieving filename from database";
|
||||
sendResponse();
|
||||
}
|
||||
|
||||
$new_cards = [];
|
||||
if ( $second ) {
|
||||
$new_cards[] = $previous_cards[0];
|
||||
}
|
||||
$new_cards[] = $random_image;
|
||||
$_SESSION['cardlist'][] = $new_cards;
|
||||
$data['cards'] = $new_cards;
|
||||
|
||||
if ( !$skip && !$initialcard ) $_SESSION['cardcount']++;
|
||||
$data['cardcount'] = $_SESSION['cardcount'];
|
||||
|
||||
sendResponse();
|
||||
|
||||
// vim: sw=4 ts=4:
|
||||
10
ajax/getcardcount.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
$data = array();
|
||||
$data['cardcount'] = $_SESSION['cardcount'];
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
30
ajax/getimage.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
define("FAILED", true);
|
||||
|
||||
function sendResponse($error = false, $message = "") {
|
||||
global $data;
|
||||
$data["error"] = $error;
|
||||
if ( $error ) $data["message"] = $message;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
$data["validated"] = $_SESSION["validated"];
|
||||
|
||||
if ( !isset($_REQUEST["id"]) ) sendResponse(FAILED, "Invalid request");
|
||||
$id = intval($_REQUEST["id"]);
|
||||
$image = new MTGImage($id);
|
||||
if ( $image->getId() == 0 ) {
|
||||
$data["id"] = $id;
|
||||
sendResponse(FAILED, "Image Not Found");
|
||||
}
|
||||
$data["image"] = $image;
|
||||
|
||||
sendResponse();
|
||||
13
ajax/getimages.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
$data["images"] = MTGImage::getList();
|
||||
$data["validated"] = $_SESSION["validated"];
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
31
ajax/login.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
define("FAILED", true);
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
|
||||
function sendResponse($error = false, $message = "") {
|
||||
global $data;
|
||||
$data["error"] = $error;
|
||||
if ( $error ) $data["message"] = $message;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
if ( $_SESSION["validated"] ) sendResponse(FAILED, "Already Logged In");
|
||||
|
||||
if ( !isset($_REQUEST["username"]) || !isset($_REQUEST["password"]) ) sendResponse(FAILED, "Invalid Request");
|
||||
|
||||
if ( array_key_exists($_REQUEST["username"], MGMTUSERS) && (MGMTUSERS[$_REQUEST["username"]] == $_REQUEST["password"]) ) {
|
||||
//if ( ($_REQUEST["username"] == MGMTUSER) && ($_REQUEST["password"] == MGMTPASS) ) {
|
||||
$_SESSION["validated"] = true;
|
||||
$data["validated"] = true;
|
||||
sendResponse();
|
||||
} else {
|
||||
sendResponse(FAILED, "Invalid Login");
|
||||
}
|
||||
61
ajax/populate.php
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
|
||||
$images = MTGImage::getList();
|
||||
|
||||
$removed = 0;
|
||||
$newsize = 0;
|
||||
foreach ( $images as $image ) {
|
||||
if ( !is_file("../images/" . $image->getFileName()) ) {
|
||||
$image->delete();
|
||||
$removed++;
|
||||
} else {
|
||||
list($width, $height) = getimagesize($destination);
|
||||
if ( ($width != $image->getWidth()) || ($height != $image->getHeight()) ) {
|
||||
$image->setWidth($width);
|
||||
$image->setHeight($height);
|
||||
$image->save();
|
||||
$newsize++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$images = MTGImage::getList();
|
||||
$existing_files = array();
|
||||
foreach ( $images as $image ) {
|
||||
$existing_files[] = $image->getFileName();
|
||||
}
|
||||
|
||||
$files = scandir("../images/");
|
||||
|
||||
$added = 0;
|
||||
foreach ( $files as $file ) {
|
||||
if ( ($file == ".") || ($file == "..") ) continue;
|
||||
if ( in_array($file, $existing_files) ) continue;
|
||||
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
|
||||
if ( !in_array($ext, MTGImage::VALID_EXTENSIONS) ) continue;
|
||||
list($width, $height) = getimagesize($destination);
|
||||
$image = new MTGImage();
|
||||
$image->setFileName($file);
|
||||
$image->setWidth($width);
|
||||
$image->setHeight($height);
|
||||
$image->save();
|
||||
$added++;
|
||||
}
|
||||
|
||||
$data["message"] = "{$removed} images removed from the database, {$added} images added to database, {$newsize} images with new dimensions";
|
||||
|
||||
if ( php_sapi_name() != "cli" ) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
} else {
|
||||
var_dump($data);
|
||||
}
|
||||
exit();
|
||||
|
||||
// vim:ts=4 sw=4 et:
|
||||
19
ajax/resetpage.php
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
if ( isset($_REQUEST['cardcount']) ) {
|
||||
$_SESSION['cardcount'] = intval($_REQUEST['cardcount']);
|
||||
if ( $_SESSION['cardcount'] < 0 ) $_SESSION['cardcount'] = 0;
|
||||
} else {
|
||||
$_SESSION['cardcount'] = 0;
|
||||
}
|
||||
$_SESSION['cardlist'] = [];
|
||||
$_SESSION['startcount'] = $_SESSION['cardcount'];
|
||||
|
||||
$data = array();
|
||||
$data['cardcount'] = $_SESSION['cardcount'];
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
52
ajax/savecard.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
define("FAILED", true);
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
|
||||
function sendResponse($error = false, $message = "") {
|
||||
global $data;
|
||||
$data["error"] = $error;
|
||||
if ( $error ) $data["message"] = $message;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
if ( !$_SESSION["validated"] ) sendResponse(FAILED, "Login Required");
|
||||
|
||||
if ( !isset($_REQUEST["id"]) || !isset($_REQUEST['filename']) || !isset($_REQUEST['enabled']) ) {
|
||||
sendResponse(FAILED, "Invalid Request");
|
||||
}
|
||||
|
||||
$id = intval($_REQUEST["id"]);
|
||||
if ( $id <= 0 ) sendResponse(FAILED, "Invalid Image Reference");
|
||||
$image = new MTGImage($id);
|
||||
if ( $image->getId() == 0 ) sendResponse(FAILED, "Unknown Image Reference");
|
||||
|
||||
$filename = $_REQUEST["filename"] . "." . $image->getFileExtension();
|
||||
$data["newname"] = $filename;
|
||||
if ( $filename != $image->getFileName() ) {
|
||||
$renamed = $image->renameImage($filename);
|
||||
if ( !$renamed ) {
|
||||
$conflict = MTGImage::getImageByFileName($filename);
|
||||
$data["conflict"] = $conflict;
|
||||
if ( $conflict === false ) {
|
||||
sendResponse(FAILED, "Invalid New File name");
|
||||
} else {
|
||||
sendResponse(FAILED, "New File Name Conflict");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$image->setEnabled(($_REQUEST["enabled"] == "1") ? true : false);
|
||||
$image->save();
|
||||
$data["image"] = $image;
|
||||
|
||||
sendResponse();
|
||||
|
||||
// vim:ts=3 sw=3 et:
|
||||
34
ajax/togglestate.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
define("FAILED", true);
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
|
||||
function sendResponse($error = false, $message = "") {
|
||||
global $data;
|
||||
$data["error"] = $error;
|
||||
if ( $error ) $data["message"] = $message;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
//if ( !$_SESSION["validated"] ) sendResponse(FAILED, "Login Required");
|
||||
|
||||
if ( !isset($_REQUEST['id']) ) sendResponse(FAILED, "Bad Request");
|
||||
$id = intval($_REQUEST['id']);
|
||||
if ( $id < 1 ) sendResponse(FAILED, "Bad Image Reference");
|
||||
$image = new MTGImage($id);
|
||||
if ( $image->getId() == 0 ) sendResponse(FAILED, "Unknown Image");
|
||||
|
||||
$image->setEnabled(!$image->getEnabled());
|
||||
$image->save();
|
||||
$data["image"] = $image;
|
||||
sendResponse();
|
||||
exit();
|
||||
|
||||
// vim:ts=3 sw=3 et:
|
||||
50
ajax/uploadimages.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
require "../header.php";
|
||||
|
||||
define("FAILED", true);
|
||||
|
||||
$data = array();
|
||||
$data["error"] = false;
|
||||
$data["message"] = "";
|
||||
$data["uploadcount"] = 0;
|
||||
|
||||
function sendResponse($error = false, $message = "") {
|
||||
global $data;
|
||||
$data["error"] = $error;
|
||||
if ( $error ) $data["message"] = $message;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
if ( !$_SESSION["validated"] ) sendResponse(FAILED, "Login Required");
|
||||
|
||||
if ( !isset($_POST["goodform"]) ) {
|
||||
sendResponse(FAILED, "Invalid Request");
|
||||
}
|
||||
|
||||
$uploadDir = "../images/";
|
||||
|
||||
foreach ( $_FILES['images']['name'] as $key => $name ) {
|
||||
if ( !($_FILES['images']['error'][$key] == UPLOAD_ERR_OK) ) continue;
|
||||
$tempname = $_FILES['images']['tmp_name'][$key];
|
||||
$filename = basename($name);
|
||||
$destination = $uploadDir . $filename;
|
||||
if ( move_uploaded_file($tempname, $destination) ) {
|
||||
list($width, $height) = getimagesize($destination);
|
||||
$conflict = MTGImage::getImageByFileName($filename);
|
||||
if ( $conflict === false ) {
|
||||
$data["uploadcount"]++;
|
||||
$image = new MTGImage();
|
||||
$image->setFileName($filename);
|
||||
$image->setWidth($width);
|
||||
$image->setHeight($height);
|
||||
$image->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sendResponse();
|
||||
|
||||
// vim:ts=3 sw=3 et:
|
||||
BIN
audio/dice.mp3
Normal file
245
class_image.php
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
<?php
|
||||
|
||||
class MTGImage implements JsonSerializable {
|
||||
|
||||
const VALID_EXTENSIONS = array("gif", "jpg", "jpeg", "png", "webp");
|
||||
const MIME_TYPES = array("gif" => "image/gif", "jpg" => "image/jpeg", "jpeg" => "image/jpeg", "png" => "image/png", "webp" => "image/webp");
|
||||
|
||||
const MTGI_BOOLEANDB = 1000001;
|
||||
|
||||
private $id = 0;
|
||||
private $filename = "";
|
||||
private $enabled = true;
|
||||
private $width = 0;
|
||||
private $height = 0;
|
||||
private $created = "1972-08-16 00:00:00";
|
||||
|
||||
public function getId() {
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getFileName() {
|
||||
return $this->filename;
|
||||
}
|
||||
|
||||
public function getFileExtension() {
|
||||
return pathinfo($this->filename, PATHINFO_EXTENSION);
|
||||
}
|
||||
|
||||
public function getEnabled($flag = 0) {
|
||||
switch ($flag) {
|
||||
case MTGImage::MTGI_BOOLEANDB:
|
||||
return ($this->enabled) ? 1 : 0;
|
||||
break;
|
||||
default:
|
||||
return $this->enabled;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function getWidth() {
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
public function getHeight() {
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
public function getDimensions() {
|
||||
return $this->width . "x" . $this->height;
|
||||
}
|
||||
|
||||
public function getCreated() {
|
||||
return $this->created;
|
||||
}
|
||||
|
||||
public function getAge() {
|
||||
$now = new DateTime();
|
||||
$mydate = new DateTime($this->getCreated());
|
||||
$interval = $mydate->diff($now);
|
||||
return $interval->d;
|
||||
}
|
||||
|
||||
public function setId($value = null) {
|
||||
if ( is_null($value) ) return false;
|
||||
if ( !is_int($value) ) return false;
|
||||
if ( $value <= 0 ) return false;
|
||||
$this->id = $value;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function setFileName($value = "") {
|
||||
if ( $value == "" ) return false;
|
||||
if ( strpos($value, ".") === false ) return false;
|
||||
if ( strpos($value, "\"") !== false ) return false;
|
||||
$testvalue = basename($value);
|
||||
if ( $testvalue != $value ) return false;
|
||||
$extension = pathinfo($value, PATHINFO_EXTENSION);
|
||||
if ( !in_array(strtolower($extension), MTGImage::VALID_EXTENSIONS) ) return false;
|
||||
$this->filename = $value;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function setEnabled($value = null) {
|
||||
if ( is_null($value) ) return false;
|
||||
if ( is_int($value) && (($value == 1) || ($value == 0)) ) {
|
||||
$this->enabled = ($value == 1) ? true : false;
|
||||
} elseif ( is_bool($value) ) {
|
||||
$this->enabled = $value;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function setWidth($value = null) {
|
||||
if ( is_null($value) ) return false;
|
||||
if ( !is_int($value) || ($value < 0) ) return false;
|
||||
$this->width = $value;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function setHeight($value = null) {
|
||||
if ( is_null($value) ) return false;
|
||||
if ( !is_int($value) || ($value < 0) ) return false;
|
||||
$this->height = $value;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function renameImage($value = "") {
|
||||
$oldname = $this->getFileName();
|
||||
$conflictImage = MTGImage::getImageByFileName($value);
|
||||
if ( $conflictImage !== false ) return false;
|
||||
if ( !$this->setFileName($value) ) {
|
||||
return false;
|
||||
}
|
||||
if ( !is_file(IMAGEPATH . $oldname) ) {
|
||||
$this->setFileName($oldname);
|
||||
return false;
|
||||
}
|
||||
if ( !rename(IMAGEPATH . $oldname, IMAGEPATH . $value) ) {
|
||||
$this->setFileName($oldname);
|
||||
return false;
|
||||
}
|
||||
$this->save();
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function getRandomImage($id = 0) {
|
||||
global $globaldbh;
|
||||
|
||||
if ( $id == 0 ) {
|
||||
$query = "SELECT id FROM images WHERE enabled = TRUE ORDER BY RAND() LIMIT 1";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
} else {
|
||||
$query = "SELECT id FROM images WHERE enabled = TRUE AND id <> :id ORDER BY RAND() LIMIT 1";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
$sth->bindValue(":id", intval($id), PDO::PARAM_INT);
|
||||
}
|
||||
$sth->execute();
|
||||
if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
|
||||
return new MTGImage($row["id"]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getImageByFileName($value = "") {
|
||||
global $globaldbh;
|
||||
|
||||
$query = "SELECT id FROM images WHERE BINARY filename=:filename";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
$sth->bindValue(":filename", $value, PDO::PARAM_STR);
|
||||
$sth->execute();
|
||||
if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
|
||||
return new MTGImage($row["id"]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getList() {
|
||||
global $globaldbh;
|
||||
|
||||
$query = "SELECT id FROM images ORDER BY LOWER(filename)";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
$sth->execute();
|
||||
$thelist = array();
|
||||
while ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
|
||||
$thelist[] = new MTGImage($row["id"]);
|
||||
}
|
||||
return $thelist;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): mixed {
|
||||
if ( $this->getHeight() < 400 ) {
|
||||
$size = "small";
|
||||
} elseif ( $this->getHeight() < 700 ) {
|
||||
$size = "medium";
|
||||
} else {
|
||||
$size = "large";
|
||||
}
|
||||
return [
|
||||
'id' => $this->getId(),
|
||||
'filename' => $this->getFileName(),
|
||||
'title' => pathinfo($this->getFileName(), PATHINFO_FILENAME),
|
||||
'enabled' => $this->getEnabled(),
|
||||
'width' => $this->getWidth(),
|
||||
'height' => $this->getHeight(),
|
||||
'dimensions' => $this->getDimensions(),
|
||||
'created' => $this->getCreated(),
|
||||
'age' => $this->getAge(),
|
||||
'size' => $size,
|
||||
];
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
global $globaldbh;
|
||||
|
||||
if ( is_file("images/" . $this->getFileName()) ) {
|
||||
if ( !unlink("images/" . $this->getFileName()) ) return false;
|
||||
}
|
||||
if ( $this->getId() == 0 ) return false;
|
||||
$query = "DELETE FROM images WHERE id=:id";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
$sth->bindValue(":id", (int) $this->getId(), PDO::PARAM_INT);
|
||||
$sth->execute();
|
||||
$this->id = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function save() {
|
||||
global $globaldbh;
|
||||
|
||||
$query = "INSERT INTO images (id, filename, width, height) VALUES(:id, :filename, :width, :height) ON DUPLICATE KEY UPDATE filename=:filename, enabled=:enabled, width=:width, height=:height";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
$sth->bindValue(":id", (int) $this->getId(), PDO::PARAM_INT);
|
||||
$sth->bindValue(":filename", $this->getFileName(), PDO::PARAM_STR);
|
||||
$sth->bindValue(":enabled", (int) $this->getEnabled(MTGImage::MTGI_BOOLEANDB), PDO::PARAM_INT);
|
||||
$sth->bindValue(":width", (int) $this->getWidth(), PDO::PARAM_INT);
|
||||
$sth->bindValue(":height", (int) $this->getHeight(), PDO::PARAM_INT);
|
||||
$sth->execute();
|
||||
if ( $this->getId() == 0 ) $this->setId($globaldbh->lastInsertId());
|
||||
return;
|
||||
}
|
||||
|
||||
public function __construct($imgid = 0) {
|
||||
global $globaldbh;
|
||||
|
||||
if ( !is_int($imgid) || $imgid == 0 ) return;
|
||||
$query = "SELECT id, filename, enabled, width, height, created FROM images where id=:id";
|
||||
$sth = $globaldbh->prepare($query);
|
||||
$sth->bindValue(":id", (int) $imgid, PDO::PARAM_INT);
|
||||
$sth->execute();
|
||||
if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
|
||||
$this->setId($row["id"]);
|
||||
$this->setFileName($row["filename"]);
|
||||
$this->setEnabled($row["enabled"]);
|
||||
$this->setWidth($row["width"]);
|
||||
$this->setHeight($row["height"]);
|
||||
$this->created = $row["created"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// vim:ts=3 sw=3 et:
|
||||
10
config-dist.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
define("MGMTUSERS", ["username" => "password", "user2" => "password"]);
|
||||
|
||||
define("DBHOST", "dbserver.host.lan");
|
||||
define("DBUSER", "dbuser");
|
||||
define("DBPASS", "dbpass");
|
||||
define("DBNAME", "mtgrandom");
|
||||
|
||||
define("IMAGEPATH", "/var/www/htdocs.magic/images/"); // Make sure this has a trailing slash
|
||||
2
core/jquery-3.6.4.min.js
vendored
Normal file
384
core/jquery-ui-1.14.2/AUTHORS.txt
Normal file
|
|
@ -0,0 +1,384 @@
|
|||
Authors ordered by first contribution
|
||||
A list of current team members is available at https://jqueryui.com/about
|
||||
|
||||
Paul Bakaus <paul.bakaus@gmail.com>
|
||||
Richard Worth <rdworth@gmail.com>
|
||||
Yehuda Katz <wycats@gmail.com>
|
||||
Sean Catchpole <sean@sunsean.com>
|
||||
John Resig <jeresig@gmail.com>
|
||||
Tane Piper <piper.tane@gmail.com>
|
||||
Dmitri Gaskin <dmitrig01@gmail.com>
|
||||
Klaus Hartl <klaus.hartl@gmail.com>
|
||||
Stefan Petre <stefan.petre@gmail.com>
|
||||
Gilles van den Hoven <gilles@webunity.nl>
|
||||
Micheil Bryan Smith <micheil@brandedcode.com>
|
||||
Jörn Zaefferer <joern.zaefferer@gmail.com>
|
||||
Marc Grabanski <m@marcgrabanski.com>
|
||||
Keith Wood <kbwood@iinet.com.au>
|
||||
Brandon Aaron <brandon.aaron@gmail.com>
|
||||
Scott González <scott.gonzalez@gmail.com>
|
||||
Eduardo Lundgren <eduardolundgren@gmail.com>
|
||||
Aaron Eisenberger <aaronchi@gmail.com>
|
||||
Joan Piedra <theneojp@gmail.com>
|
||||
Bruno Basto <b.basto@gmail.com>
|
||||
Remy Sharp <remy@leftlogic.com>
|
||||
Bohdan Ganicky <bohdan.ganicky@gmail.com>
|
||||
David Bolter <david.bolter@gmail.com>
|
||||
Chi Cheng <cloudream@gmail.com>
|
||||
Ca-Phun Ung <pazu2k@gmail.com>
|
||||
Ariel Flesler <aflesler@gmail.com>
|
||||
Maggie Wachs <maggie@filamentgroup.com>
|
||||
Scott Jehl <scottjehl@gmail.com>
|
||||
Todd Parker <todd@filamentgroup.com>
|
||||
Andrew Powell <andrew@shellscape.org>
|
||||
Brant Burnett <btburnett3@gmail.com>
|
||||
Douglas Neiner <doug@dougneiner.com>
|
||||
Paul Irish <paul.irish@gmail.com>
|
||||
Ralph Whitbeck <ralph.whitbeck@gmail.com>
|
||||
Thibault Duplessis <thibault.duplessis@gmail.com>
|
||||
Dominique Vincent <dominique.vincent@toitl.com>
|
||||
Jack Hsu <jack.hsu@gmail.com>
|
||||
Adam Sontag <ajpiano@ajpiano.com>
|
||||
Carl Fürstenberg <carl@excito.com>
|
||||
Kevin Dalman <development@allpro.net>
|
||||
Alberto Fernández Capel <afcapel@gmail.com>
|
||||
Jacek Jędrzejewski (https://jacek.jedrzejewski.name)
|
||||
Ting Kuei <ting@kuei.com>
|
||||
Samuel Cormier-Iijima <sam@chide.it>
|
||||
Jon Palmer <jonspalmer@gmail.com>
|
||||
Ben Hollis <bhollis@amazon.com>
|
||||
Justin MacCarthy <Justin@Rubystars.biz>
|
||||
Eyal Kobrigo <kobrigo@hotmail.com>
|
||||
Tiago Freire <tiago.freire@gmail.com>
|
||||
Diego Tres <diegotres@gmail.com>
|
||||
Holger Rüprich <holger@rueprich.de>
|
||||
Ziling Zhao <zilingzhao@gmail.com>
|
||||
Mike Alsup <malsup@gmail.com>
|
||||
Robson Braga Araujo <robsonbraga@gmail.com>
|
||||
Pierre-Henri Ausseil <ph.ausseil@gmail.com>
|
||||
Christopher McCulloh <cmcculloh@gmail.com>
|
||||
Andrew Newcomb <ext.github@preceptsoftware.co.uk>
|
||||
Lim Chee Aun <cheeaun@gmail.com>
|
||||
Jorge Barreiro <yortx.barry@gmail.com>
|
||||
Daniel Steigerwald <daniel@steigerwald.cz>
|
||||
John Firebaugh <john_firebaugh@bigfix.com>
|
||||
John Enters <github@darkdark.net>
|
||||
Andrey Kapitcyn <ru.m157y@gmail.com>
|
||||
Dmitry Petrov <dpetroff@gmail.com>
|
||||
Eric Hynds <eric@hynds.net>
|
||||
Chairat Sunthornwiphat <pipo@sixhead.com>
|
||||
Josh Varner <josh.varner@gmail.com>
|
||||
Stéphane Raimbault <stephane.raimbault@gmail.com>
|
||||
Jay Merrifield <fracmak@gmail.com>
|
||||
J. Ryan Stinnett <jryans@gmail.com>
|
||||
Peter Heiberg <peter@heiberg.se>
|
||||
Alex Dovenmuehle <adovenmuehle@gmail.com>
|
||||
Jamie Gegerson <git@jamiegegerson.com>
|
||||
Raymond Schwartz <skeetergraphics@gmail.com>
|
||||
Phillip Barnes <philbar@gmail.com>
|
||||
Kyle Wilkinson <kai@wikyd.org>
|
||||
Khaled AlHourani <me@khaledalhourani.com>
|
||||
Marian Rudzynski <mr@impaled.org>
|
||||
Jean-Francois Remy <jeff@melix.org>
|
||||
Doug Blood <dougblood@gmail.com>
|
||||
Filippo Cavallarin <filippo.cavallarin@codseq.it>
|
||||
Heiko Henning <heiko@thehennings.ch>
|
||||
Aliaksandr Rahalevich <saksmlz@gmail.com>
|
||||
Mario Visic <mario@mariovisic.com>
|
||||
Xavi Ramirez <xavi.rmz@gmail.com>
|
||||
Max Schnur <max.schnur@gmail.com>
|
||||
Saji Nediyanchath <saji89@gmail.com>
|
||||
Corey Frang <gnarf37@gmail.com>
|
||||
Aaron Peterson <aaronp123@yahoo.com>
|
||||
Ivan Peters <ivan@ivanpeters.com>
|
||||
Mohamed Cherif Bouchelaghem <cherifbouchelaghem@yahoo.fr>
|
||||
Marcos Sousa <falecomigo@marcossousa.com>
|
||||
Michael DellaNoce <mdellanoce@mailtrust.com>
|
||||
George Marshall <echosx@gmail.com>
|
||||
Tobias Brunner <tobias@strongswan.org>
|
||||
Martin Solli <msolli@gmail.com>
|
||||
David Petersen <public@petersendidit.com>
|
||||
Dan Heberden <danheberden@gmail.com>
|
||||
William Kevin Manire <williamkmanire@gmail.com>
|
||||
Gilmore Davidson <gilmoreorless@gmail.com>
|
||||
Michael Wu <michaelmwu@gmail.com>
|
||||
Adam Parod <mystic414@gmail.com>
|
||||
Guillaume Gautreau <guillaume+github@ghusse.com>
|
||||
Marcel Toele <EleotleCram@gmail.com>
|
||||
Dan Streetman <ddstreet@ieee.org>
|
||||
Matt Hoskins <matt@nipltd.com>
|
||||
Giovanni Giacobbi <giovanni@giacobbi.net>
|
||||
Kyle Florence <kyle.florence@gmail.com>
|
||||
Pavol Hluchý <lopo@losys.sk>
|
||||
Hans Hillen <hans.hillen@gmail.com>
|
||||
Mark Johnson <virgofx@live.com>
|
||||
Trey Hunner <treyhunner@gmail.com>
|
||||
Shane Whittet <whittet@gmail.com>
|
||||
Edward A Faulkner <ef@alum.mit.edu>
|
||||
Adam Baratz <adam@adambaratz.com>
|
||||
Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
|
||||
Eike Send <eike.send@gmail.com>
|
||||
Kris Borchers <kris.borchers@gmail.com>
|
||||
Eddie Monge <eddie@eddiemonge.com>
|
||||
Israel Tsadok <itsadok@gmail.com>
|
||||
Carson McDonald <carson@ioncannon.net>
|
||||
Jason Davies <jason@jasondavies.com>
|
||||
Garrison Locke <gplocke@gmail.com>
|
||||
David Murdoch <david@davidmurdoch.com>
|
||||
Benjamin Scott Boyle <benjamins.boyle@gmail.com>
|
||||
Jesse Baird <jebaird@gmail.com>
|
||||
Jonathan Vingiano <jvingiano@gmail.com>
|
||||
Dylan Just <dev@ephox.com>
|
||||
Hiroshi Tomita <tomykaira@gmail.com>
|
||||
Glenn Goodrich <glenn.goodrich@gmail.com>
|
||||
Tarafder Ashek-E-Elahi <mail.ashek@gmail.com>
|
||||
Ryan Neufeld <ryan@neufeldmail.com>
|
||||
Marc Neuwirth <marc.neuwirth@gmail.com>
|
||||
Philip Graham <philip.robert.graham@gmail.com>
|
||||
Benjamin Sterling <benjamin.sterling@kenzomedia.com>
|
||||
Wesley Walser <waw325@gmail.com>
|
||||
Kouhei Sutou <kou@clear-code.com>
|
||||
Karl Kirch <karlkrch@gmail.com>
|
||||
Chris Kelly <ckdake@ckdake.com>
|
||||
Jason Oster <jay@kodewerx.org>
|
||||
Felix Nagel <info@felixnagel.com>
|
||||
Alexander Polomoshnov <alex.polomoshnov@gmail.com>
|
||||
David Leal <dgleal@gmail.com>
|
||||
Igor Milla <igor.fsp.milla@gmail.com>
|
||||
Dave Methvin <dave.methvin@gmail.com>
|
||||
Florian Gutmann <f.gutmann@chronimo.com>
|
||||
Marwan Al Jubeh <marwan.aljubeh@gmail.com>
|
||||
Milan Broum <midlis@googlemail.com>
|
||||
Sebastian Sauer <info@dynpages.de>
|
||||
Gaëtan Muller <m.gaetan89@gmail.com>
|
||||
Michel Weimerskirch <michel@weimerskirch.net>
|
||||
William Griffiths <william@ycymro.com>
|
||||
Stojce Slavkovski <stojce@gmail.com>
|
||||
David Soms <david.soms@gmail.com>
|
||||
David De Sloovere <david.desloovere@outlook.com>
|
||||
Michael P. Jung <michael.jung@terreon.de>
|
||||
Shannon Pekary <spekary@gmail.com>
|
||||
Dan Wellman <danwellman@hotmail.com>
|
||||
Matthew Edward Hutton <meh@corefiling.co.uk>
|
||||
James Khoury <james@jameskhoury.com>
|
||||
Rob Loach <robloach@gmail.com>
|
||||
Alberto Monteiro <betimbrasil@gmail.com>
|
||||
Alex Rhea <alex.rhea@gmail.com>
|
||||
Krzysztof Rosiński <rozwell69@gmail.com>
|
||||
Ryan Olton <oltonr@gmail.com>
|
||||
Genie <386@mail.com>
|
||||
Rick Waldron <waldron.rick@gmail.com>
|
||||
Ian Simpson <spoonlikesham@gmail.com>
|
||||
Lev Kitsis <spam4lev@gmail.com>
|
||||
TJ VanToll <tj.vantoll@gmail.com>
|
||||
Justin Domnitz <jdomnitz@gmail.com>
|
||||
Douglas Cerna <douglascerna@yahoo.com>
|
||||
Bert ter Heide <bertjh@hotmail.com>
|
||||
Jasvir Nagra <jasvir@gmail.com>
|
||||
Yuriy Khabarov <13real008@gmail.com>
|
||||
Harri Kilpiö <harri.kilpio@gmail.com>
|
||||
Lado Lomidze <lado.lomidze@gmail.com>
|
||||
Amir E. Aharoni <amir.aharoni@mail.huji.ac.il>
|
||||
Simon Sattes <simon.sattes@gmail.com>
|
||||
Jo Liss <joliss42@gmail.com>
|
||||
Guntupalli Karunakar <karunakarg@yahoo.com>
|
||||
Shahyar Ghobadpour <shahyar@gmail.com>
|
||||
Lukasz Lipinski <uzza17@gmail.com>
|
||||
Timo Tijhof <krinklemail@gmail.com>
|
||||
Jason Moon <jmoon@socialcast.com>
|
||||
Martin Frost <martinf55@hotmail.com>
|
||||
Eneko Illarramendi <eneko@illarra.com>
|
||||
EungJun Yi <semtlenori@gmail.com>
|
||||
Courtland Allen <courtlandallen@gmail.com>
|
||||
Viktar Varvanovich <non4eg@gmail.com>
|
||||
Danny Trunk <dtrunk90@gmail.com>
|
||||
Pavel Stetina <pavel.stetina@nangu.tv>
|
||||
Michael Stay <metaweta@gmail.com>
|
||||
Steven Roussey <sroussey@gmail.com>
|
||||
Michael Hollis <hollis21@gmail.com>
|
||||
Lee Rowlands <lee.rowlands@previousnext.com.au>
|
||||
Timmy Willison <timmywillisn@gmail.com>
|
||||
Karl Swedberg <kswedberg@gmail.com>
|
||||
Baoju Yuan <the_guy_1987@hotmail.com>
|
||||
Maciej Mroziński <maciej.k.mrozinski@gmail.com>
|
||||
Luis Dalmolin <luis.nh@gmail.com>
|
||||
Mark Aaron Shirley <maspwr@gmail.com>
|
||||
Martin Hoch <martin@fidion.de>
|
||||
Jiayi Yang <tr870829@gmail.com>
|
||||
Philipp Benjamin Köppchen <xgxtpbk@gws.ms>
|
||||
Sindre Sorhus <sindresorhus@gmail.com>
|
||||
Bernhard Sirlinger <bernhard.sirlinger@tele2.de>
|
||||
Jared A. Scheel <jared@jaredscheel.com>
|
||||
Rafael Xavier de Souza <rxaviers@gmail.com>
|
||||
John Chen <zhang.z.chen@intel.com>
|
||||
Robert Beuligmann <robertbeuligmann@gmail.com>
|
||||
Dale Kocian <dale.kocian@gmail.com>
|
||||
Mike Sherov <mike.sherov@gmail.com>
|
||||
Andrew Couch <andy@couchand.com>
|
||||
Marc-Andre Lafortune <github@marc-andre.ca>
|
||||
Nate Eagle <nate.eagle@teamaol.com>
|
||||
David Souther <davidsouther@gmail.com>
|
||||
Mathias Stenbom <mathias@stenbom.com>
|
||||
Sergey Kartashov <ebishkek@yandex.ru>
|
||||
Avinash R <nashpapa@gmail.com>
|
||||
Ethan Romba <ethanromba@gmail.com>
|
||||
Cory Gackenheimer <cory.gack@gmail.com>
|
||||
Juan Pablo Kaniefsky <jpkaniefsky@gmail.com>
|
||||
Roman Salnikov <bardt.dz@gmail.com>
|
||||
Anika Henke <anika@selfthinker.org>
|
||||
Samuel Bovée <samycookie2000@yahoo.fr>
|
||||
Fabrício Matté <ult_combo@hotmail.com>
|
||||
Viktor Kojouharov <vkojouharov@gmail.com>
|
||||
Pawel Maruszczyk (http://hrabstwo.net)
|
||||
Pavel Selitskas <p.selitskas@gmail.com>
|
||||
Bjørn Johansen <post@bjornjohansen.no>
|
||||
Matthieu Penant <thieum22@hotmail.com>
|
||||
Dominic Barnes <dominic@dbarnes.info>
|
||||
David Sullivan <david.sullivan@gmail.com>
|
||||
Thomas Jaggi <thomas@responsive.ch>
|
||||
Vahid Sohrabloo <vahid4134@gmail.com>
|
||||
Travis Carden <travis.carden@gmail.com>
|
||||
Bruno M. Custódio <bruno@brunomcustodio.com>
|
||||
Nathanael Silverman <nathanael.silverman@gmail.com>
|
||||
Christian Wenz <christian@wenz.org>
|
||||
Steve Urmston <steve@urm.st>
|
||||
Zaven Muradyan <megalivoithos@gmail.com>
|
||||
Woody Gilk <shadowhand@deviantart.com>
|
||||
Zbigniew Motyka <zbigniew.motyka@gmail.com>
|
||||
Suhail Alkowaileet <xsoh.k7@gmail.com>
|
||||
Toshi MARUYAMA <marutosijp2@yahoo.co.jp>
|
||||
David Hansen <hansede@gmail.com>
|
||||
Brian Grinstead <briangrinstead@gmail.com>
|
||||
Christian Klammer <christian314159@gmail.com>
|
||||
Steven Luscher <jquerycla@steveluscher.com>
|
||||
Gan Eng Chin <engchin.gan@gmail.com>
|
||||
Gabriel Schulhof <gabriel.schulhof@intel.com>
|
||||
Alexander Schmitz <arschmitz@gmail.com>
|
||||
Vilhjálmur Skúlason <vis@dmm.is>
|
||||
Siebrand Mazeland <siebrand@kitano.nl>
|
||||
Mohsen Ekhtiari <mohsenekhtiari@yahoo.com>
|
||||
Pere Orga <gotrunks@gmail.com>
|
||||
Jasper de Groot <mail@ugomobi.com>
|
||||
Stephane Deschamps <stephane.deschamps@gmail.com>
|
||||
Jyoti Deka <dekajp@gmail.com>
|
||||
Andrei Picus <office.nightcrawler@gmail.com>
|
||||
Ondrej Novy <novy@ondrej.org>
|
||||
Jacob McCutcheon <jacob.mccutcheon@gmail.com>
|
||||
Monika Piotrowicz <monika.piotrowicz@gmail.com>
|
||||
Imants Horsts <imants.horsts@inbox.lv>
|
||||
Eric Dahl <eric.c.dahl@gmail.com>
|
||||
Dave Stein <dave@behance.com>
|
||||
Dylan Barrell <dylan@barrell.com>
|
||||
Daniel DeGroff <djdegroff@gmail.com>
|
||||
Michael Wiencek <mwtuea@gmail.com>
|
||||
Thomas Meyer <meyertee@gmail.com>
|
||||
Ruslan Yakhyaev <ruslan@ruslan.io>
|
||||
Brian J. Dowling <bjd-dev@simplicity.net>
|
||||
Ben Higgins <ben@extrahop.com>
|
||||
Yermo Lamers <yml@yml.com>
|
||||
Patrick Stapleton <github@gdi2290.com>
|
||||
Trisha Crowley <trisha.crowley@gmail.com>
|
||||
Usman Akeju <akeju00+github@gmail.com>
|
||||
Rodrigo Menezes <rod333@gmail.com>
|
||||
Jacques Perrault <jacques_perrault@us.ibm.com>
|
||||
Frederik Elvhage <frederik.elvhage@googlemail.com>
|
||||
Will Holley <willholley@gmail.com>
|
||||
Uri Gilad <antishok@gmail.com>
|
||||
Richard Gibson <richard.gibson@gmail.com>
|
||||
Simen Bekkhus <sbekkhus91@gmail.com>
|
||||
Chen Eshchar <eshcharc@gmail.com>
|
||||
Bruno Pérel <brunoperel@gmail.com>
|
||||
Mohammed Alshehri <m@dralshehri.com>
|
||||
Lisa Seacat DeLuca <ldeluca@us.ibm.com>
|
||||
Anne-Gaelle Colom <coloma@westminster.ac.uk>
|
||||
Adam Foster <slimfoster@gmail.com>
|
||||
Luke Page <luke.a.page@gmail.com>
|
||||
Daniel Owens <daniel@matchstickmixup.com>
|
||||
Michael Orchard <morchard@scottlogic.co.uk>
|
||||
Marcus Warren <marcus@envoke.com>
|
||||
Nils Heuermann <nils@world-of-scripts.de>
|
||||
Marco Ziech <marco@ziech.net>
|
||||
Patricia Juarez <patrixd@gmail.com>
|
||||
Ben Mosher <me@benmosher.com>
|
||||
Ablay Keldibek <atomio.ak@gmail.com>
|
||||
Thomas Applencourt <thomas.applencourt@irsamc.ups-tlse.fr>
|
||||
Jiabao Wu <jiabao.foss@gmail.com>
|
||||
Eric Lee Carraway <github@ericcarraway.com>
|
||||
Victor Homyakov <vkhomyackov@gmail.com>
|
||||
Myeongjin Lee <aranet100@gmail.com>
|
||||
Liran Sharir <lsharir@gmail.com>
|
||||
Weston Ruter <weston@xwp.co>
|
||||
Mani Mishra <manimishra902@gmail.com>
|
||||
Hannah Methvin <hannahmethvin@gmail.com>
|
||||
Leonardo Balter <leonardo.balter@gmail.com>
|
||||
Benjamin Albert <benjamin_a5@yahoo.com>
|
||||
Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
|
||||
Alyosha Pushak <alyosha.pushak@gmail.com>
|
||||
Fahad Ahmad <fahadahmad41@hotmail.com>
|
||||
Matt Brundage <github@mattbrundage.com>
|
||||
Francesc Baeta <francesc.baeta@gmail.com>
|
||||
Piotr Baran <piotros@wp.pl>
|
||||
Mukul Hase <mukulhase@gmail.com>
|
||||
Konstantin Dinev <kdinev@mail.bw.edu>
|
||||
Rand Scullard <rand@randscullard.com>
|
||||
Dan Strohl <dan@wjcg.net>
|
||||
Maksim Ryzhikov <rv.maksim@gmail.com>
|
||||
Amine HADDAD <haddad@allegorie.tv>
|
||||
Amanpreet Singh <apsdehal@gmail.com>
|
||||
Alexey Balchunas <bleshik@gmail.com>
|
||||
Peter Kehl <peter.kehl@gmail.com>
|
||||
Peter Dave Hello <hsu@peterdavehello.org>
|
||||
Johannes Schäfer <johnschaefer@gmx.de>
|
||||
Ville Skyttä <ville.skytta@iki.fi>
|
||||
Ryan Oriecuia <ryan.oriecuia@visioncritical.com>
|
||||
Sergei Ratnikov <sergeir82@gmail.com>
|
||||
milk54 <milk851@gmail.com>
|
||||
Evelyn Masso <evoutofambit@gmail.com>
|
||||
Robin <mail@robin-fowler.com>
|
||||
Simon Asika <asika32764@gmail.com>
|
||||
Kevin Cupp <kevin.cupp@gmail.com>
|
||||
Jeremy Mickelson <Jeremy.Mickelson@gmail.com>
|
||||
Kyle Rosenberg <kyle.rosenberg@gmail.com>
|
||||
Petri Partio <petri.partio@gmail.com>
|
||||
pallxk <github@pallxk.com>
|
||||
Luke Brookhart <luke@onjax.com>
|
||||
claudi <hirt-claudia@gmx.de>
|
||||
Eirik Sletteberg <eiriksletteberg@gmail.com>
|
||||
Albert Johansson <albert@intervaro.se>
|
||||
A. Wells <borgboyone@users.noreply.github.com>
|
||||
Robert Brignull <robertbrignull@gmail.com>
|
||||
Horus68 <pauloizidoro@gmail.com>
|
||||
Maksymenkov Eugene <foatei@gmail.com>
|
||||
OskarNS <soerensen.oskar@gmail.com>
|
||||
Gez Quinn <holla@gezquinn.design>
|
||||
jigar gala <jigar.gala140291@gmail.com>
|
||||
Florian Wegscheider <flo.wegscheider@gmail.com>
|
||||
Fatér Zsolt <fater.zsolt@gmail.com>
|
||||
Szabolcs Szabolcsi-Toth <nec@shell8.net>
|
||||
Jérémy Munsch <github@jeremydev.ovh>
|
||||
Hrvoje Novosel <hrvoje.novosel@gmail.com>
|
||||
Paul Capron <PaulCapron@users.noreply.github.com>
|
||||
Micah Miller <mikhey@runbox.com>
|
||||
sakshi87 <53863764+sakshi87@users.noreply.github.com>
|
||||
Mikolaj Wolicki <wolicki.mikolaj@gmail.com>
|
||||
Patrick McKay <patrick.mckay@vumc.org>
|
||||
c-lambert <58025159+c-lambert@users.noreply.github.com>
|
||||
Josep Sanz <josepsanzcamp@gmail.com>
|
||||
Ben Mullins <benm@umich.edu>
|
||||
Christian Oliff <christianoliff@pm.me>
|
||||
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
||||
Adam Lidén Hällgren <adamlh92@gmail.com>
|
||||
James Hinderks <hinderks@gmail.com>
|
||||
Denny Septian Panggabean <97607754+ddevsr@users.noreply.github.com>
|
||||
Matías Cánepa <matias.canepa@gmail.com>
|
||||
Ashish Kurmi <100655670+boahc077@users.noreply.github.com>
|
||||
DeerBear <andrea.raimondi@gmail.com>
|
||||
Дилян Палаузов <dpa-github@aegee.org>
|
||||
Kenneth DeBacker <kcdebacker@gmail.com>
|
||||
Timo Tijhof <krinkle@fastmail.com>
|
||||
Timmy Willison <timmywil@users.noreply.github.com>
|
||||
divdeploy <166095818+divdeploy@users.noreply.github.com>
|
||||
mark van tilburg <markvantilburg@gmail.com>
|
||||
Ralf Koller <1665422+rpkoller@users.noreply.github.com>
|
||||
Porter Clevidence <116387727+porterclev@users.noreply.github.com>
|
||||
Daniel García <93217193+Daniel-Garmig@users.noreply.github.com>
|
||||
43
core/jquery-ui-1.14.2/LICENSE.txt
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
|
||||
|
||||
This software consists of voluntary contributions made by many
|
||||
individuals. For exact contribution history, see the revision history
|
||||
available at https://github.com/jquery/jquery-ui
|
||||
|
||||
The following license applies to all parts of this software except as
|
||||
documented below:
|
||||
|
||||
====
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
====
|
||||
|
||||
Copyright and related rights for sample code are waived via CC0. Sample
|
||||
code is defined as all source code contained within the demos directory.
|
||||
|
||||
CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
====
|
||||
|
||||
All files located in the node_modules and external directories are
|
||||
externally maintained libraries used by this software which have their
|
||||
own licenses; we recommend you read them, as their terms may differ from
|
||||
the terms above.
|
||||
10716
core/jquery-ui-1.14.2/external/jquery/jquery.js
vendored
Normal file
503
core/jquery-ui-1.14.2/index.html
Normal file
|
|
@ -0,0 +1,503 @@
|
|||
<!doctype html>
|
||||
<html lang="us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>jQuery UI Example Page</title>
|
||||
<link href="jquery-ui.css" rel="stylesheet">
|
||||
<style>
|
||||
body{
|
||||
font-family: "Trebuchet MS", sans-serif;
|
||||
margin: 50px;
|
||||
}
|
||||
.demoHeaders {
|
||||
margin-top: 2em;
|
||||
}
|
||||
#dialog-link {
|
||||
padding: .4em 1em .4em 20px;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
}
|
||||
#dialog-link span.ui-icon {
|
||||
margin: 0 5px 0 0;
|
||||
position: absolute;
|
||||
left: .2em;
|
||||
top: 50%;
|
||||
margin-top: -8px;
|
||||
}
|
||||
#icons {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#icons li {
|
||||
margin: 2px;
|
||||
position: relative;
|
||||
padding: 4px 0;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
#icons span.ui-icon {
|
||||
float: left;
|
||||
margin: 0 4px;
|
||||
}
|
||||
.fakewindowcontain .ui-widget-overlay {
|
||||
position: absolute;
|
||||
}
|
||||
select {
|
||||
width: 200px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Welcome to jQuery UI!</h1>
|
||||
|
||||
<div class="ui-widget">
|
||||
<p>This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.</p>
|
||||
</div>
|
||||
|
||||
<h1>YOUR COMPONENTS:</h1>
|
||||
|
||||
<!-- Accordion -->
|
||||
<h2 class="demoHeaders">Accordion</h2>
|
||||
<div id="accordion">
|
||||
<h3>First</h3>
|
||||
<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
|
||||
<h3>Second</h3>
|
||||
<div>Phasellus mattis tincidunt nibh.</div>
|
||||
<h3>Third</h3>
|
||||
<div>Nam dui erat, auctor a, dignissim quis.</div>
|
||||
</div>
|
||||
|
||||
<!-- Autocomplete -->
|
||||
<h2 class="demoHeaders">Autocomplete</h2>
|
||||
<div>
|
||||
<input id="autocomplete" title="type "a"">
|
||||
</div>
|
||||
|
||||
<!-- Button -->
|
||||
<h2 class="demoHeaders">Button</h2>
|
||||
<button id="button">A button element</button>
|
||||
<button id="button-icon">An icon-only button</button>
|
||||
|
||||
<!-- Checkboxradio -->
|
||||
<h2 class="demoHeaders">Checkboxradio</h2>
|
||||
<form style="margin-top: 1em;">
|
||||
<div id="radioset">
|
||||
<input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label>
|
||||
<input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label>
|
||||
<input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Controlgroup -->
|
||||
<h2 class="demoHeaders">Controlgroup</h2>
|
||||
<fieldset>
|
||||
<legend>Rental Car</legend>
|
||||
<div id="controlgroup">
|
||||
<select id="car-type">
|
||||
<option>Compact car</option>
|
||||
<option>Midsize car</option>
|
||||
<option>Full size car</option>
|
||||
<option>SUV</option>
|
||||
<option>Luxury</option>
|
||||
<option>Truck</option>
|
||||
<option>Van</option>
|
||||
</select>
|
||||
<label for="transmission-standard">Standard</label>
|
||||
<input type="radio" name="transmission" id="transmission-standard">
|
||||
<label for="transmission-automatic">Automatic</label>
|
||||
<input type="radio" name="transmission" id="transmission-automatic">
|
||||
<label for="insurance">Insurance</label>
|
||||
<input type="checkbox" name="insurance" id="insurance">
|
||||
<label for="horizontal-spinner" class="ui-controlgroup-label"># of cars</label>
|
||||
<input id="horizontal-spinner" class="ui-spinner-input">
|
||||
<button>Book Now!</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<!-- Tabs -->
|
||||
<h2 class="demoHeaders">Tabs</h2>
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">First</a></li>
|
||||
<li><a href="#tabs-2">Second</a></li>
|
||||
<li><a href="#tabs-3">Third</a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
|
||||
<div id="tabs-2">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>
|
||||
<div id="tabs-3">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>
|
||||
</div>
|
||||
|
||||
<h2 class="demoHeaders">Dialog</h2>
|
||||
<p>
|
||||
<button id="dialog-link" class="ui-button ui-corner-all ui-widget">
|
||||
<span class="ui-icon ui-icon-newwin"></span>Open Dialog
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<h2 class="demoHeaders">Overlay and Shadow Classes</h2>
|
||||
<div style="position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;" class="fakewindowcontain">
|
||||
<p>Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>
|
||||
|
||||
<!-- ui-dialog -->
|
||||
<div class="ui-widget-overlay ui-front"></div>
|
||||
<div style="position: absolute; width: 320px; left: 50px; top: 30px; padding: 1.2em" class="ui-widget ui-front ui-widget-content ui-corner-all ui-widget-shadow">
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ui-dialog -->
|
||||
<div id="dialog" title="Dialog Title">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
|
||||
</div>
|
||||
|
||||
|
||||
<h2 class="demoHeaders">Framework Icons (content color preview)</h2>
|
||||
<ul id="icons" class="ui-widget ui-helper-clearfix">
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-n"><span class="ui-icon ui-icon-caret-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-ne"><span class="ui-icon ui-icon-caret-1-ne"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-e"><span class="ui-icon ui-icon-caret-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-se"><span class="ui-icon ui-icon-caret-1-se"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-s"><span class="ui-icon ui-icon-caret-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-sw"><span class="ui-icon ui-icon-caret-1-sw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-w"><span class="ui-icon ui-icon-caret-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-nw"><span class="ui-icon ui-icon-caret-1-nw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-2-n-s"><span class="ui-icon ui-icon-caret-2-n-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-2-e-w"><span class="ui-icon ui-icon-caret-2-e-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-n"><span class="ui-icon ui-icon-triangle-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-ne"><span class="ui-icon ui-icon-triangle-1-ne"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-e"><span class="ui-icon ui-icon-triangle-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-se"><span class="ui-icon ui-icon-triangle-1-se"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-s"><span class="ui-icon ui-icon-triangle-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-sw"><span class="ui-icon ui-icon-triangle-1-sw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-w"><span class="ui-icon ui-icon-triangle-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-nw"><span class="ui-icon ui-icon-triangle-1-nw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-n-s"><span class="ui-icon ui-icon-triangle-2-n-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-e-w"><span class="ui-icon ui-icon-triangle-2-e-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-n"><span class="ui-icon ui-icon-arrow-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-ne"><span class="ui-icon ui-icon-arrow-1-ne"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-e"><span class="ui-icon ui-icon-arrow-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-se"><span class="ui-icon ui-icon-arrow-1-se"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-s"><span class="ui-icon ui-icon-arrow-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-sw"><span class="ui-icon ui-icon-arrow-1-sw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-w"><span class="ui-icon ui-icon-arrow-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-nw"><span class="ui-icon ui-icon-arrow-1-nw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-n-s"><span class="ui-icon ui-icon-arrow-2-n-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-ne-sw"><span class="ui-icon ui-icon-arrow-2-ne-sw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-e-w"><span class="ui-icon ui-icon-arrow-2-e-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-se-nw"><span class="ui-icon ui-icon-arrow-2-se-nw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-n"><span class="ui-icon ui-icon-arrowstop-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-e"><span class="ui-icon ui-icon-arrowstop-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-s"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-w"><span class="ui-icon ui-icon-arrowstop-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-n"><span class="ui-icon ui-icon-arrowthick-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-ne"><span class="ui-icon ui-icon-arrowthick-1-ne"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-e"><span class="ui-icon ui-icon-arrowthick-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-se"><span class="ui-icon ui-icon-arrowthick-1-se"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-s"><span class="ui-icon ui-icon-arrowthick-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-sw"><span class="ui-icon ui-icon-arrowthick-1-sw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-w"><span class="ui-icon ui-icon-arrowthick-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-nw"><span class="ui-icon ui-icon-arrowthick-1-nw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-n-s"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-ne-sw"><span class="ui-icon ui-icon-arrowthick-2-ne-sw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-e-w"><span class="ui-icon ui-icon-arrowthick-2-e-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-se-nw"><span class="ui-icon ui-icon-arrowthick-2-se-nw"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-n"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-e"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-s"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-w"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-w"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-n"><span class="ui-icon ui-icon-arrowreturnthick-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-e"><span class="ui-icon ui-icon-arrowreturnthick-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-s"><span class="ui-icon ui-icon-arrowreturnthick-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-w"><span class="ui-icon ui-icon-arrowreturn-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-n"><span class="ui-icon ui-icon-arrowreturn-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-e"><span class="ui-icon ui-icon-arrowreturn-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-s"><span class="ui-icon ui-icon-arrowreturn-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-w"><span class="ui-icon ui-icon-arrowrefresh-1-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-n"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-e"><span class="ui-icon ui-icon-arrowrefresh-1-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-s"><span class="ui-icon ui-icon-arrowrefresh-1-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4"><span class="ui-icon ui-icon-arrow-4"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4-diag"><span class="ui-icon ui-icon-arrow-4-diag"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-extlink"><span class="ui-icon ui-icon-extlink"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-newwin"><span class="ui-icon ui-icon-newwin"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-refresh"><span class="ui-icon ui-icon-refresh"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-shuffle"><span class="ui-icon ui-icon-shuffle"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-transfer-e-w"><span class="ui-icon ui-icon-transfer-e-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-transferthick-e-w"><span class="ui-icon ui-icon-transferthick-e-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-folder-collapsed"><span class="ui-icon ui-icon-folder-collapsed"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-folder-open"><span class="ui-icon ui-icon-folder-open"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-document"><span class="ui-icon ui-icon-document"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-document-b"><span class="ui-icon ui-icon-document-b"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-note"><span class="ui-icon ui-icon-note"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-mail-open"><span class="ui-icon ui-icon-mail-open"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-suitcase"><span class="ui-icon ui-icon-suitcase"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-comment"><span class="ui-icon ui-icon-comment"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-person"><span class="ui-icon ui-icon-person"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-print"><span class="ui-icon ui-icon-print"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-trash"><span class="ui-icon ui-icon-trash"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-locked"><span class="ui-icon ui-icon-locked"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-unlocked"><span class="ui-icon ui-icon-unlocked"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-bookmark"><span class="ui-icon ui-icon-bookmark"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-tag"><span class="ui-icon ui-icon-tag"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-home"><span class="ui-icon ui-icon-home"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-flag"><span class="ui-icon ui-icon-flag"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-calculator"><span class="ui-icon ui-icon-calculator"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-cart"><span class="ui-icon ui-icon-cart"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-pencil"><span class="ui-icon ui-icon-pencil"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-clock"><span class="ui-icon ui-icon-clock"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-disk"><span class="ui-icon ui-icon-disk"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-calendar"><span class="ui-icon ui-icon-calendar"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-zoomin"><span class="ui-icon ui-icon-zoomin"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-zoomout"><span class="ui-icon ui-icon-zoomout"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-search"><span class="ui-icon ui-icon-search"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-wrench"><span class="ui-icon ui-icon-wrench"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-gear"><span class="ui-icon ui-icon-gear"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-heart"><span class="ui-icon ui-icon-heart"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-star"><span class="ui-icon ui-icon-star"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-link"><span class="ui-icon ui-icon-link"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-cancel"><span class="ui-icon ui-icon-cancel"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-plus"><span class="ui-icon ui-icon-plus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-minus"><span class="ui-icon ui-icon-minus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-minusthick"><span class="ui-icon ui-icon-minusthick"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-close"><span class="ui-icon ui-icon-close"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-closethick"><span class="ui-icon ui-icon-closethick"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-key"><span class="ui-icon ui-icon-key"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-lightbulb"><span class="ui-icon ui-icon-lightbulb"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-scissors"><span class="ui-icon ui-icon-scissors"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-clipboard"><span class="ui-icon ui-icon-clipboard"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-copy"><span class="ui-icon ui-icon-copy"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-contact"><span class="ui-icon ui-icon-contact"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-image"><span class="ui-icon ui-icon-image"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-video"><span class="ui-icon ui-icon-video"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-script"><span class="ui-icon ui-icon-script"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-alert"><span class="ui-icon ui-icon-alert"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-info"><span class="ui-icon ui-icon-info"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-notice"><span class="ui-icon ui-icon-notice"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-help"><span class="ui-icon ui-icon-help"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-bullet"><span class="ui-icon ui-icon-bullet"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-radio-off"><span class="ui-icon ui-icon-radio-off"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-radio-on"><span class="ui-icon ui-icon-radio-on"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-pin-w"><span class="ui-icon ui-icon-pin-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-pin-s"><span class="ui-icon ui-icon-pin-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-play"><span class="ui-icon ui-icon-play"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-pause"><span class="ui-icon ui-icon-pause"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-next"><span class="ui-icon ui-icon-seek-next"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-prev"><span class="ui-icon ui-icon-seek-prev"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-end"><span class="ui-icon ui-icon-seek-end"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-first"><span class="ui-icon ui-icon-seek-first"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-stop"><span class="ui-icon ui-icon-stop"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-eject"><span class="ui-icon ui-icon-eject"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-volume-off"><span class="ui-icon ui-icon-volume-off"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-volume-on"><span class="ui-icon ui-icon-volume-on"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-power"><span class="ui-icon ui-icon-power"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-signal-diag"><span class="ui-icon ui-icon-signal-diag"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-signal"><span class="ui-icon ui-icon-signal"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-0"><span class="ui-icon ui-icon-battery-0"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-1"><span class="ui-icon ui-icon-battery-1"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-2"><span class="ui-icon ui-icon-battery-2"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-3"><span class="ui-icon ui-icon-battery-3"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-plus"><span class="ui-icon ui-icon-circle-plus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-minus"><span class="ui-icon ui-icon-circle-minus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-close"><span class="ui-icon ui-icon-circle-close"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-e"><span class="ui-icon ui-icon-circle-triangle-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-s"><span class="ui-icon ui-icon-circle-triangle-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-w"><span class="ui-icon ui-icon-circle-triangle-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-n"><span class="ui-icon ui-icon-circle-triangle-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-e"><span class="ui-icon ui-icon-circle-arrow-e"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-s"><span class="ui-icon ui-icon-circle-arrow-s"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-w"><span class="ui-icon ui-icon-circle-arrow-w"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-n"><span class="ui-icon ui-icon-circle-arrow-n"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomin"><span class="ui-icon ui-icon-circle-zoomin"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomout"><span class="ui-icon ui-icon-circle-zoomout"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-check"><span class="ui-icon ui-icon-circle-check"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-plus"><span class="ui-icon ui-icon-circlesmall-plus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-minus"><span class="ui-icon ui-icon-circlesmall-minus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-close"><span class="ui-icon ui-icon-circlesmall-close"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-plus"><span class="ui-icon ui-icon-squaresmall-plus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-minus"><span class="ui-icon ui-icon-squaresmall-minus"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-close"><span class="ui-icon ui-icon-squaresmall-close"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-vertical"><span class="ui-icon ui-icon-grip-dotted-vertical"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-horizontal"><span class="ui-icon ui-icon-grip-dotted-horizontal"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-vertical"><span class="ui-icon ui-icon-grip-solid-vertical"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-horizontal"><span class="ui-icon ui-icon-grip-solid-horizontal"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-gripsmall-diagonal-se"><span class="ui-icon ui-icon-gripsmall-diagonal-se"></span></li>
|
||||
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-diagonal-se"><span class="ui-icon ui-icon-grip-diagonal-se"></span></li>
|
||||
</ul>
|
||||
|
||||
<!-- Slider -->
|
||||
<h2 class="demoHeaders">Slider</h2>
|
||||
<div id="slider"></div>
|
||||
|
||||
<!-- Datepicker -->
|
||||
<h2 class="demoHeaders">Datepicker</h2>
|
||||
<div id="datepicker"></div>
|
||||
|
||||
<!-- Progressbar -->
|
||||
<h2 class="demoHeaders">Progressbar</h2>
|
||||
<div id="progressbar"></div>
|
||||
|
||||
<!-- Progressbar -->
|
||||
<h2 class="demoHeaders">Selectmenu</h2>
|
||||
<select id="selectmenu">
|
||||
<option>Slower</option>
|
||||
<option>Slow</option>
|
||||
<option selected="selected">Medium</option>
|
||||
<option>Fast</option>
|
||||
<option>Faster</option>
|
||||
</select>
|
||||
|
||||
<!-- Spinner -->
|
||||
<h2 class="demoHeaders">Spinner</h2>
|
||||
<input id="spinner">
|
||||
|
||||
<!-- Menu -->
|
||||
<h2 class="demoHeaders">Menu</h2>
|
||||
<ul style="width:100px;" id="menu">
|
||||
<li><div>Item 1</div></li>
|
||||
<li><div>Item 2</div></li>
|
||||
<li><div>Item 3</div>
|
||||
<ul>
|
||||
<li><div>Item 3-1</div></li>
|
||||
<li><div>Item 3-2</div></li>
|
||||
<li><div>Item 3-3</div></li>
|
||||
<li><div>Item 3-4</div></li>
|
||||
<li><div>Item 3-5</div></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><div>Item 4</div></li>
|
||||
<li><div>Item 5</div></li>
|
||||
</ul>
|
||||
|
||||
<!-- Tooltip -->
|
||||
<h2 class="demoHeaders">Tooltip</h2>
|
||||
<p id="tooltip">
|
||||
<a href="#" title="That's what this widget is">Tooltips</a> can be attached to any element. When you hover
|
||||
the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.
|
||||
</p>
|
||||
|
||||
<!-- Highlight / Error -->
|
||||
<h2 class="demoHeaders">Highlight / Error</h2>
|
||||
<div class="ui-widget">
|
||||
<div class="ui-state-highlight ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
|
||||
<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
|
||||
<strong>Hey!</strong> Sample ui-state-highlight style.</p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="ui-widget">
|
||||
<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
|
||||
<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
|
||||
<strong>Alert:</strong> Sample ui-state-error style.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="external/jquery/jquery.js"></script>
|
||||
<script src="jquery-ui.js"></script>
|
||||
<script>
|
||||
$( "#accordion" ).accordion();
|
||||
|
||||
var availableTags = [
|
||||
"ActionScript",
|
||||
"AppleScript",
|
||||
"Asp",
|
||||
"BASIC",
|
||||
"C",
|
||||
"C++",
|
||||
"Clojure",
|
||||
"COBOL",
|
||||
"ColdFusion",
|
||||
"Erlang",
|
||||
"Fortran",
|
||||
"Groovy",
|
||||
"Haskell",
|
||||
"Java",
|
||||
"JavaScript",
|
||||
"Lisp",
|
||||
"Perl",
|
||||
"PHP",
|
||||
"Python",
|
||||
"Ruby",
|
||||
"Scala",
|
||||
"Scheme"
|
||||
];
|
||||
$( "#autocomplete" ).autocomplete({
|
||||
source: availableTags
|
||||
});
|
||||
|
||||
$( "#button" ).button();
|
||||
$( "#button-icon" ).button({
|
||||
icon: "ui-icon-gear",
|
||||
showLabel: false
|
||||
});
|
||||
|
||||
$( "#radioset" ).controlgroup();
|
||||
|
||||
$( "#controlgroup" ).controlgroup();
|
||||
|
||||
$( "#tabs" ).tabs();
|
||||
|
||||
$( "#dialog" ).dialog({
|
||||
autoOpen: false,
|
||||
width: 400,
|
||||
buttons: [
|
||||
{
|
||||
text: "Ok",
|
||||
click: function() {
|
||||
$( this ).dialog( "close" );
|
||||
}
|
||||
},
|
||||
{
|
||||
text: "Cancel",
|
||||
click: function() {
|
||||
$( this ).dialog( "close" );
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// Link to open the dialog
|
||||
$( "#dialog-link" ).click(function( event ) {
|
||||
$( "#dialog" ).dialog( "open" );
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$( "#datepicker" ).datepicker({
|
||||
inline: true
|
||||
});
|
||||
|
||||
$( "#slider" ).slider({
|
||||
range: true,
|
||||
values: [ 17, 67 ]
|
||||
});
|
||||
|
||||
$( "#progressbar" ).progressbar({
|
||||
value: 20
|
||||
});
|
||||
|
||||
$( "#spinner" ).spinner();
|
||||
|
||||
$( "#menu" ).menu();
|
||||
|
||||
$( "#tooltip" ).tooltip();
|
||||
|
||||
$( "#selectmenu" ).selectmenu();
|
||||
|
||||
// Hover states on the static widgets
|
||||
$( "#dialog-link, #icons li" ).hover(
|
||||
function() {
|
||||
$( this ).addClass( "ui-state-hover" );
|
||||
},
|
||||
function() {
|
||||
$( this ).removeClass( "ui-state-hover" );
|
||||
}
|
||||
);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1285
core/jquery-ui-1.14.2/jquery-ui.css
vendored
Normal file
18842
core/jquery-ui-1.14.2/jquery-ui.js
vendored
Normal file
863
core/jquery-ui-1.14.2/jquery-ui.structure.css
vendored
Normal file
|
|
@ -0,0 +1,863 @@
|
|||
/*!
|
||||
* jQuery UI CSS Framework 1.14.2
|
||||
* https://jqueryui.com
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* https://api.jqueryui.com/category/theming/
|
||||
*/
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden {
|
||||
display: none;
|
||||
}
|
||||
.ui-helper-hidden-accessible {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
.ui-helper-reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
line-height: 1.3;
|
||||
text-decoration: none;
|
||||
font-size: 100%;
|
||||
list-style: none;
|
||||
}
|
||||
.ui-helper-clearfix:before,
|
||||
.ui-helper-clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.ui-helper-clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.ui-helper-zfix {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.ui-front {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled {
|
||||
cursor: default !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
.ui-icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-top: -.25em;
|
||||
position: relative;
|
||||
text-indent: -99999px;
|
||||
overflow: hidden;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.ui-widget-icon-block {
|
||||
left: 50%;
|
||||
margin-left: -8px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-accordion .ui-accordion-header {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
margin: 2px 0 0 0;
|
||||
padding: .5em .5em .5em .7em;
|
||||
font-size: 100%;
|
||||
}
|
||||
.ui-accordion .ui-accordion-content {
|
||||
padding: 1em 2.2em;
|
||||
border-top: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
.ui-autocomplete {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
cursor: default;
|
||||
}
|
||||
.ui-menu {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
outline: 0;
|
||||
}
|
||||
.ui-menu .ui-menu {
|
||||
position: absolute;
|
||||
}
|
||||
.ui-menu .ui-menu-item {
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
.ui-menu .ui-menu-item-wrapper {
|
||||
position: relative;
|
||||
padding: 3px 1em 3px .4em;
|
||||
}
|
||||
.ui-menu .ui-menu-divider {
|
||||
margin: 5px 0;
|
||||
height: 0;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
border-width: 1px 0 0 0;
|
||||
}
|
||||
.ui-menu .ui-state-focus,
|
||||
.ui-menu .ui-state-active {
|
||||
margin: -1px;
|
||||
}
|
||||
|
||||
/* icon support */
|
||||
.ui-menu-icons {
|
||||
position: relative;
|
||||
}
|
||||
.ui-menu-icons .ui-menu-item-wrapper {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
/* left-aligned */
|
||||
.ui-menu .ui-icon {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: .2em;
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
/* right-aligned */
|
||||
.ui-menu .ui-menu-icon {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
.ui-button {
|
||||
padding: .4em 1em;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
line-height: normal;
|
||||
margin-right: .1em;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.ui-button,
|
||||
.ui-button:link,
|
||||
.ui-button:visited,
|
||||
.ui-button:hover,
|
||||
.ui-button:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* to make room for the icon, a width needs to be set here */
|
||||
.ui-button-icon-only {
|
||||
width: 2em;
|
||||
box-sizing: border-box;
|
||||
text-indent: -9999px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* no icon support for input elements */
|
||||
input.ui-button.ui-button-icon-only {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
/* button icon element(s) */
|
||||
.ui-button-icon-only .ui-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -8px;
|
||||
margin-left: -8px;
|
||||
}
|
||||
|
||||
.ui-button.ui-icon-notext .ui-icon {
|
||||
padding: 0;
|
||||
width: 2.1em;
|
||||
height: 2.1em;
|
||||
text-indent: -9999px;
|
||||
white-space: nowrap;
|
||||
|
||||
}
|
||||
|
||||
input.ui-button.ui-icon-notext .ui-icon {
|
||||
width: auto;
|
||||
height: auto;
|
||||
text-indent: 0;
|
||||
white-space: normal;
|
||||
padding: .4em 1em;
|
||||
}
|
||||
|
||||
/* workarounds */
|
||||
/* Support: Firefox 5 - 125+ */
|
||||
input.ui-button::-moz-focus-inner,
|
||||
button.ui-button::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ui-controlgroup {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
.ui-controlgroup > .ui-controlgroup-item {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
.ui-controlgroup > .ui-controlgroup-item:focus,
|
||||
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ui-controlgroup-vertical > .ui-controlgroup-item {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
text-align: left;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-item {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.ui-controlgroup .ui-controlgroup-label {
|
||||
padding: .4em 1em;
|
||||
}
|
||||
.ui-controlgroup .ui-controlgroup-label span {
|
||||
font-size: 80%;
|
||||
}
|
||||
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
|
||||
border-left: none;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
|
||||
border-top: none;
|
||||
}
|
||||
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
|
||||
border-right: none;
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* Spinner specific style fixes */
|
||||
.ui-controlgroup-vertical .ui-spinner-input {
|
||||
width: calc( 100% - 2.4em );
|
||||
}
|
||||
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
|
||||
border-top-style: solid;
|
||||
}
|
||||
|
||||
.ui-checkboxradio-label .ui-icon-background {
|
||||
box-shadow: inset 1px 1px 1px #ccc;
|
||||
border-radius: .12em;
|
||||
border: none;
|
||||
}
|
||||
.ui-checkboxradio-radio-label .ui-icon-background {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 1em;
|
||||
overflow: visible;
|
||||
border: none;
|
||||
}
|
||||
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
|
||||
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
|
||||
background-image: none;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-width: 4px;
|
||||
border-style: solid;
|
||||
}
|
||||
.ui-checkboxradio-disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
.ui-datepicker {
|
||||
width: 17em;
|
||||
padding: .2em .2em 0;
|
||||
display: none;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-header {
|
||||
position: relative;
|
||||
padding: .2em 0;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-prev,
|
||||
.ui-datepicker .ui-datepicker-next {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
width: 1.8em;
|
||||
height: 1.8em;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-prev-hover,
|
||||
.ui-datepicker .ui-datepicker-next-hover {
|
||||
top: 1px;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-prev {
|
||||
left: 2px;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-next {
|
||||
right: 2px;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-prev-hover {
|
||||
left: 1px;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-next-hover {
|
||||
right: 1px;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-prev span,
|
||||
.ui-datepicker .ui-datepicker-next span {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -8px;
|
||||
top: 50%;
|
||||
margin-top: -8px;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-title {
|
||||
margin: 0 2.3em;
|
||||
line-height: 1.8em;
|
||||
text-align: center;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-title select {
|
||||
font-size: 1em;
|
||||
margin: 1px 0;
|
||||
}
|
||||
.ui-datepicker select.ui-datepicker-month,
|
||||
.ui-datepicker select.ui-datepicker-year {
|
||||
width: 45%;
|
||||
}
|
||||
.ui-datepicker table {
|
||||
width: 100%;
|
||||
font-size: .9em;
|
||||
border-collapse: collapse;
|
||||
margin: 0 0 .4em;
|
||||
}
|
||||
.ui-datepicker th {
|
||||
padding: .7em .3em;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
border: 0;
|
||||
}
|
||||
.ui-datepicker td {
|
||||
border: 0;
|
||||
padding: 1px;
|
||||
}
|
||||
.ui-datepicker td span,
|
||||
.ui-datepicker td a {
|
||||
display: block;
|
||||
padding: .2em;
|
||||
text-align: right;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-buttonpane {
|
||||
background-image: none;
|
||||
margin: .7em 0 0 0;
|
||||
padding: 0 .2em;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-buttonpane button {
|
||||
float: right;
|
||||
margin: .5em .2em .4em;
|
||||
cursor: pointer;
|
||||
padding: .2em .6em .3em .6em;
|
||||
width: auto;
|
||||
overflow: visible;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* with multiple calendars */
|
||||
.ui-datepicker.ui-datepicker-multi {
|
||||
width: auto;
|
||||
}
|
||||
.ui-datepicker-multi .ui-datepicker-group {
|
||||
float: left;
|
||||
}
|
||||
.ui-datepicker-multi .ui-datepicker-group table {
|
||||
width: 95%;
|
||||
margin: 0 auto .4em;
|
||||
}
|
||||
.ui-datepicker-multi-2 .ui-datepicker-group {
|
||||
width: 50%;
|
||||
}
|
||||
.ui-datepicker-multi-3 .ui-datepicker-group {
|
||||
width: 33.3%;
|
||||
}
|
||||
.ui-datepicker-multi-4 .ui-datepicker-group {
|
||||
width: 25%;
|
||||
}
|
||||
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
|
||||
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
|
||||
border-left-width: 0;
|
||||
}
|
||||
.ui-datepicker-multi .ui-datepicker-buttonpane {
|
||||
clear: left;
|
||||
}
|
||||
.ui-datepicker-row-break {
|
||||
clear: both;
|
||||
width: 100%;
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
/* RTL support */
|
||||
.ui-datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-prev {
|
||||
right: 2px;
|
||||
left: auto;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-next {
|
||||
left: 2px;
|
||||
right: auto;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-prev:hover {
|
||||
right: 1px;
|
||||
left: auto;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-next:hover {
|
||||
left: 1px;
|
||||
right: auto;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane {
|
||||
clear: right;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
|
||||
float: left;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
|
||||
.ui-datepicker-rtl .ui-datepicker-group {
|
||||
float: right;
|
||||
}
|
||||
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
|
||||
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
|
||||
border-right-width: 0;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
|
||||
/* Icons */
|
||||
.ui-datepicker .ui-icon {
|
||||
display: block;
|
||||
text-indent: -99999px;
|
||||
overflow: hidden;
|
||||
background-repeat: no-repeat;
|
||||
left: .5em;
|
||||
top: .3em;
|
||||
}
|
||||
.ui-dialog {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: .2em;
|
||||
outline: 0;
|
||||
}
|
||||
.ui-dialog .ui-dialog-titlebar {
|
||||
padding: .4em 1em;
|
||||
position: relative;
|
||||
}
|
||||
.ui-dialog .ui-dialog-title {
|
||||
float: left;
|
||||
margin: .1em 0;
|
||||
white-space: nowrap;
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.ui-dialog .ui-dialog-titlebar-close {
|
||||
position: absolute;
|
||||
right: .3em;
|
||||
top: 50%;
|
||||
width: 20px;
|
||||
margin: -10px 0 0 0;
|
||||
padding: 1px;
|
||||
height: 20px;
|
||||
}
|
||||
.ui-dialog .ui-dialog-content {
|
||||
position: relative;
|
||||
border: 0;
|
||||
padding: .5em 1em;
|
||||
background: none;
|
||||
overflow: auto;
|
||||
}
|
||||
.ui-dialog .ui-dialog-buttonpane {
|
||||
text-align: left;
|
||||
border-width: 1px 0 0 0;
|
||||
background-image: none;
|
||||
margin-top: .5em;
|
||||
padding: .3em 1em .5em .4em;
|
||||
}
|
||||
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
||||
float: right;
|
||||
}
|
||||
.ui-dialog .ui-dialog-buttonpane button {
|
||||
margin: .5em .4em .5em 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
.ui-dialog .ui-resizable-n {
|
||||
height: 2px;
|
||||
top: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-e {
|
||||
width: 2px;
|
||||
right: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-s {
|
||||
height: 2px;
|
||||
bottom: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-w {
|
||||
width: 2px;
|
||||
left: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-se,
|
||||
.ui-dialog .ui-resizable-sw,
|
||||
.ui-dialog .ui-resizable-ne,
|
||||
.ui-dialog .ui-resizable-nw {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
}
|
||||
.ui-dialog .ui-resizable-se {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-sw {
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-ne {
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.ui-dialog .ui-resizable-nw {
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.ui-draggable .ui-dialog-titlebar {
|
||||
cursor: move;
|
||||
}
|
||||
.ui-draggable-handle {
|
||||
touch-action: none;
|
||||
}
|
||||
.ui-resizable {
|
||||
position: relative;
|
||||
}
|
||||
.ui-resizable-handle {
|
||||
position: absolute;
|
||||
font-size: 0.1px;
|
||||
display: block;
|
||||
touch-action: none;
|
||||
}
|
||||
.ui-resizable-disabled .ui-resizable-handle,
|
||||
.ui-resizable-autohide .ui-resizable-handle {
|
||||
display: none;
|
||||
}
|
||||
.ui-resizable-n {
|
||||
cursor: n-resize;
|
||||
height: 7px;
|
||||
width: 100%;
|
||||
top: -5px;
|
||||
left: 0;
|
||||
}
|
||||
.ui-resizable-s {
|
||||
cursor: s-resize;
|
||||
height: 7px;
|
||||
width: 100%;
|
||||
bottom: -5px;
|
||||
left: 0;
|
||||
}
|
||||
.ui-resizable-e {
|
||||
cursor: e-resize;
|
||||
width: 7px;
|
||||
right: -5px;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-resizable-w {
|
||||
cursor: w-resize;
|
||||
width: 7px;
|
||||
left: -5px;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-resizable-se {
|
||||
cursor: se-resize;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
right: 1px;
|
||||
bottom: 1px;
|
||||
}
|
||||
.ui-resizable-sw {
|
||||
cursor: sw-resize;
|
||||
width: 9px;
|
||||
height: 9px;
|
||||
left: -5px;
|
||||
bottom: -5px;
|
||||
}
|
||||
.ui-resizable-nw {
|
||||
cursor: nw-resize;
|
||||
width: 9px;
|
||||
height: 9px;
|
||||
left: -5px;
|
||||
top: -5px;
|
||||
}
|
||||
.ui-resizable-ne {
|
||||
cursor: ne-resize;
|
||||
width: 9px;
|
||||
height: 9px;
|
||||
right: -5px;
|
||||
top: -5px;
|
||||
}
|
||||
.ui-progressbar {
|
||||
height: 2em;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
}
|
||||
.ui-progressbar .ui-progressbar-value {
|
||||
margin: -1px;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-progressbar .ui-progressbar-overlay {
|
||||
background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
|
||||
height: 100%;
|
||||
opacity: 0.25;
|
||||
}
|
||||
.ui-progressbar-indeterminate .ui-progressbar-value {
|
||||
background-image: none;
|
||||
}
|
||||
.ui-selectable {
|
||||
touch-action: none;
|
||||
}
|
||||
.ui-selectable-helper {
|
||||
position: absolute;
|
||||
z-index: 100;
|
||||
border: 1px dotted black;
|
||||
}
|
||||
.ui-selectmenu-menu {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: none;
|
||||
}
|
||||
.ui-selectmenu-menu .ui-menu {
|
||||
overflow: auto;
|
||||
overflow-x: hidden;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
padding: 2px 0.4em;
|
||||
margin: 0.5em 0 0 0;
|
||||
height: auto;
|
||||
border: 0;
|
||||
}
|
||||
.ui-selectmenu-open {
|
||||
display: block;
|
||||
}
|
||||
.ui-selectmenu-text {
|
||||
display: block;
|
||||
margin-right: 20px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.ui-selectmenu-button.ui-button {
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
width: 14em;
|
||||
}
|
||||
.ui-selectmenu-icon.ui-icon {
|
||||
float: right;
|
||||
margin-top: 0;
|
||||
}
|
||||
.ui-slider {
|
||||
position: relative;
|
||||
text-align: left;
|
||||
}
|
||||
.ui-slider .ui-slider-handle {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
width: 1.2em;
|
||||
height: 1.2em;
|
||||
cursor: pointer;
|
||||
touch-action: none;
|
||||
}
|
||||
.ui-slider .ui-slider-range {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
font-size: .7em;
|
||||
display: block;
|
||||
border: 0;
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
.ui-slider-horizontal {
|
||||
height: .8em;
|
||||
}
|
||||
.ui-slider-horizontal .ui-slider-handle {
|
||||
top: -.3em;
|
||||
margin-left: -.6em;
|
||||
}
|
||||
.ui-slider-horizontal .ui-slider-range {
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
.ui-slider-horizontal .ui-slider-range-min {
|
||||
left: 0;
|
||||
}
|
||||
.ui-slider-horizontal .ui-slider-range-max {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.ui-slider-vertical {
|
||||
width: .8em;
|
||||
height: 100px;
|
||||
}
|
||||
.ui-slider-vertical .ui-slider-handle {
|
||||
left: -.3em;
|
||||
margin-left: 0;
|
||||
margin-bottom: -.6em;
|
||||
}
|
||||
.ui-slider-vertical .ui-slider-range {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.ui-slider-vertical .ui-slider-range-min {
|
||||
bottom: 0;
|
||||
}
|
||||
.ui-slider-vertical .ui-slider-range-max {
|
||||
top: 0;
|
||||
}
|
||||
.ui-sortable-handle {
|
||||
touch-action: none;
|
||||
}
|
||||
.ui-spinner {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.ui-spinner-input {
|
||||
border: none;
|
||||
background: none;
|
||||
color: inherit;
|
||||
padding: .222em 0;
|
||||
margin: .2em 0;
|
||||
vertical-align: middle;
|
||||
margin-left: .4em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
.ui-spinner-button {
|
||||
width: 1.6em;
|
||||
height: 50%;
|
||||
font-size: .5em;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
right: 0;
|
||||
}
|
||||
/* more specificity required here to override default borders */
|
||||
.ui-spinner a.ui-spinner-button {
|
||||
border-top-style: none;
|
||||
border-bottom-style: none;
|
||||
border-right-style: none;
|
||||
}
|
||||
.ui-spinner-up {
|
||||
top: 0;
|
||||
}
|
||||
.ui-spinner-down {
|
||||
bottom: 0;
|
||||
}
|
||||
.ui-tabs {
|
||||
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
||||
padding: .2em;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav {
|
||||
margin: 0;
|
||||
padding: .2em .2em 0;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li {
|
||||
list-style: none;
|
||||
float: left;
|
||||
position: relative;
|
||||
top: 0;
|
||||
margin: 1px .2em 0 0;
|
||||
border-bottom-width: 0;
|
||||
padding: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
|
||||
float: left;
|
||||
padding: .5em 1em;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
|
||||
margin-bottom: -1px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
|
||||
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
|
||||
cursor: text;
|
||||
}
|
||||
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
|
||||
cursor: pointer;
|
||||
}
|
||||
.ui-tabs .ui-tabs-panel {
|
||||
display: block;
|
||||
border-width: 0;
|
||||
padding: 1em 1.4em;
|
||||
background: none;
|
||||
}
|
||||
.ui-tooltip {
|
||||
padding: 8px;
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
max-width: 300px;
|
||||
}
|
||||
body .ui-tooltip {
|
||||
border-width: 2px;
|
||||
}
|
||||
5
core/jquery-ui-1.14.2/jquery-ui.structure.min.css
vendored
Normal file
439
core/jquery-ui-1.14.2/jquery-ui.theme.css
vendored
Normal file
|
|
@ -0,0 +1,439 @@
|
|||
/*!
|
||||
* jQuery UI CSS Framework 1.14.2
|
||||
* https://jqueryui.com
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* https://api.jqueryui.com/category/theming/
|
||||
*
|
||||
* To view and modify this theme, visit https://jqueryui.com/themeroller/?bgColorDefault=%23f6f6f6&borderColorDefault=%23c5c5c5&fcDefault=%23454545&bgColorHover=%23ededed&borderColorHover=%23cccccc&fcHover=%232b2b2b&bgColorActive=%23007fff&borderColorActive=%23003eff&fcActive=%23ffffff&bgColorHeader=%23e9e9e9&borderColorHeader=%23dddddd&fcHeader=%23333333&bgColorContent=%23ffffff&borderColorContent=%23dddddd&fcContent=%23333333&bgColorHighlight=%23fffa90&borderColorHighlight=%23dad55e&fcHighlight=%23777620&bgColorError=%23fddfdf&borderColorError=%23f1a899&fcError=%235f3f3f&bgColorOverlay=%23aaaaaa&opacityOverlay=.3&bgColorShadow=%23666666&opacityShadow=.3&offsetTopShadow=0px&offsetLeftShadow=0px&thicknessShadow=5px&cornerRadiusShadow=8px&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif&fwDefault=normal&cornerRadius=3px&bgTextureDefault=flat&bgTextureHover=flat&bgTextureActive=flat&bgTextureHeader=flat&bgTextureContent=flat&bgTextureHighlight=flat&bgTextureError=flat&bgTextureOverlay=flat&bgTextureShadow=flat&bgImgOpacityDefault=75&bgImgOpacityHover=75&bgImgOpacityActive=65&bgImgOpacityHeader=75&bgImgOpacityContent=75&bgImgOpacityHighlight=55&bgImgOpacityError=95&bgImgOpacityOverlay=0&bgImgOpacityShadow=0&iconColorActive=%23ffffff&iconColorContent=%23444444&iconColorDefault=%23777777&iconColorError=%23cc0000&iconColorHeader=%23444444&iconColorHighlight=%23777620&iconColorHover=%23555555&opacityOverlayPerc=30&opacityShadowPerc=30&bgImgUrlActive=&bgImgUrlContent=&bgImgUrlDefault=&bgImgUrlError=&bgImgUrlHeader=&bgImgUrlHighlight=&bgImgUrlHover=&bgImgUrlOverlay=&bgImgUrlShadow=&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&bgDefaultRepeat=&bgHoverRepeat=&bgActiveRepeat=&bgHeaderRepeat=&bgContentRepeat=&bgHighlightRepeat=&bgErrorRepeat=&bgOverlayRepeat=&bgShadowRepeat=&bgDefaultYPos=&bgHoverYPos=&bgActiveYPos=&bgHeaderYPos=&bgContentYPos=&bgHighlightYPos=&bgErrorYPos=&bgOverlayYPos=&bgShadowYPos=&bgDefaultXPos=&bgHoverXPos=&bgActiveXPos=&bgHeaderXPos=&bgContentXPos=&bgHighlightXPos=&bgErrorXPos=&bgOverlayXPos=&bgShadowXPos=
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget .ui-widget {
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget input,
|
||||
.ui-widget select,
|
||||
.ui-widget textarea,
|
||||
.ui-widget button {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget.ui-widget-content {
|
||||
border: 1px solid #c5c5c5;
|
||||
}
|
||||
.ui-widget-content {
|
||||
border: 1px solid #dddddd;
|
||||
background: #ffffff;
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-content a {
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-header {
|
||||
border: 1px solid #dddddd;
|
||||
background: #e9e9e9;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-widget-header a {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default,
|
||||
.ui-widget-content .ui-state-default,
|
||||
.ui-widget-header .ui-state-default,
|
||||
.ui-button,
|
||||
|
||||
/* We use html here because we need a greater specificity to make sure disabled
|
||||
works properly when clicked or hovered */
|
||||
html .ui-button.ui-state-disabled:hover,
|
||||
html .ui-button.ui-state-disabled:active {
|
||||
border: 1px solid #c5c5c5;
|
||||
background: #f6f6f6;
|
||||
font-weight: normal;
|
||||
color: #454545;
|
||||
}
|
||||
.ui-state-default a,
|
||||
.ui-state-default a:link,
|
||||
.ui-state-default a:visited,
|
||||
a.ui-button,
|
||||
a:link.ui-button,
|
||||
a:visited.ui-button,
|
||||
.ui-button {
|
||||
color: #454545;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-state-hover,
|
||||
.ui-widget-content .ui-state-hover,
|
||||
.ui-widget-header .ui-state-hover,
|
||||
.ui-state-focus,
|
||||
.ui-widget-content .ui-state-focus,
|
||||
.ui-widget-header .ui-state-focus,
|
||||
.ui-button:hover,
|
||||
.ui-button:focus {
|
||||
border: 1px solid #cccccc;
|
||||
background: #ededed;
|
||||
font-weight: normal;
|
||||
color: #2b2b2b;
|
||||
}
|
||||
.ui-state-hover a,
|
||||
.ui-state-hover a:hover,
|
||||
.ui-state-hover a:link,
|
||||
.ui-state-hover a:visited,
|
||||
.ui-state-focus a,
|
||||
.ui-state-focus a:hover,
|
||||
.ui-state-focus a:link,
|
||||
.ui-state-focus a:visited,
|
||||
a.ui-button:hover,
|
||||
a.ui-button:focus {
|
||||
color: #2b2b2b;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ui-visual-focus {
|
||||
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
||||
}
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active,
|
||||
a.ui-button:active,
|
||||
.ui-button:active,
|
||||
.ui-button.ui-state-active:hover {
|
||||
border: 1px solid #003eff;
|
||||
background: #007fff;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
}
|
||||
.ui-icon-background,
|
||||
.ui-state-active .ui-icon-background {
|
||||
border: #003eff;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight,
|
||||
.ui-widget-content .ui-state-highlight,
|
||||
.ui-widget-header .ui-state-highlight {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-checked {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
}
|
||||
.ui-state-highlight a,
|
||||
.ui-widget-content .ui-state-highlight a,
|
||||
.ui-widget-header .ui-state-highlight a {
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-error,
|
||||
.ui-widget-content .ui-state-error,
|
||||
.ui-widget-header .ui-state-error {
|
||||
border: 1px solid #f1a899;
|
||||
background: #fddfdf;
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error a,
|
||||
.ui-widget-content .ui-state-error a,
|
||||
.ui-widget-header .ui-state-error a {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error-text,
|
||||
.ui-widget-content .ui-state-error-text,
|
||||
.ui-widget-header .ui-state-error-text {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-priority-primary,
|
||||
.ui-widget-content .ui-priority-primary,
|
||||
.ui-widget-header .ui-priority-primary {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-priority-secondary,
|
||||
.ui-widget-content .ui-priority-secondary,
|
||||
.ui-widget-header .ui-priority-secondary {
|
||||
opacity: .7;
|
||||
font-weight: normal;
|
||||
}
|
||||
.ui-state-disabled,
|
||||
.ui-widget-content .ui-state-disabled,
|
||||
.ui-widget-header .ui-state-disabled {
|
||||
opacity: .35;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.ui-icon,
|
||||
.ui-widget-content .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-widget-header .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-state-hover .ui-icon,
|
||||
.ui-state-focus .ui-icon,
|
||||
.ui-button:hover .ui-icon,
|
||||
.ui-button:focus .ui-icon {
|
||||
background-image: url("images/ui-icons_555555_256x240.png");
|
||||
}
|
||||
.ui-state-active .ui-icon,
|
||||
.ui-button:active .ui-icon {
|
||||
background-image: url("images/ui-icons_ffffff_256x240.png");
|
||||
}
|
||||
.ui-state-highlight .ui-icon,
|
||||
.ui-button .ui-state-highlight.ui-icon {
|
||||
background-image: url("images/ui-icons_777620_256x240.png");
|
||||
}
|
||||
.ui-state-error .ui-icon,
|
||||
.ui-state-error-text .ui-icon {
|
||||
background-image: url("images/ui-icons_cc0000_256x240.png");
|
||||
}
|
||||
.ui-button .ui-icon {
|
||||
background-image: url("images/ui-icons_777777_256x240.png");
|
||||
}
|
||||
|
||||
/* positioning */
|
||||
/* Three classes needed to override `.ui-button:hover .ui-icon` */
|
||||
.ui-icon-blank.ui-icon-blank.ui-icon-blank {
|
||||
background-image: none;
|
||||
}
|
||||
.ui-icon-caret-1-n { background-position: 0 0; }
|
||||
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-caret-1-e { background-position: -32px 0; }
|
||||
.ui-icon-caret-1-se { background-position: -48px 0; }
|
||||
.ui-icon-caret-1-s { background-position: -65px 0; }
|
||||
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-caret-1-w { background-position: -96px 0; }
|
||||
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-left,
|
||||
.ui-corner-tl {
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-right,
|
||||
.ui-corner-tr {
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-left,
|
||||
.ui-corner-bl {
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-right,
|
||||
.ui-corner-br {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
background: #aaaaaa;
|
||||
opacity: .3;
|
||||
}
|
||||
.ui-widget-shadow {
|
||||
box-shadow: 0px 0px 5px #666666;
|
||||
}
|
||||
5
core/jquery-ui-1.14.2/jquery-ui.theme.min.css
vendored
Normal file
76
core/jquery-ui-1.14.2/package.json
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"name": "jquery-ui",
|
||||
"title": "jQuery UI",
|
||||
"description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.",
|
||||
"version": "1.14.2",
|
||||
"homepage": "https://jqueryui.com",
|
||||
"author": {
|
||||
"name": "OpenJS Foundation and other contributors",
|
||||
"url": "https://github.com/jquery/jquery-ui/blob/1.14.2/AUTHORS.txt"
|
||||
},
|
||||
"main": "ui/widget.js",
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Jörn Zaefferer",
|
||||
"email": "joern.zaefferer@gmail.com",
|
||||
"url": "https://bassistance.de"
|
||||
},
|
||||
{
|
||||
"name": "Mike Sherov",
|
||||
"email": "mike.sherov@gmail.com",
|
||||
"url": "https://mike.sherov.com"
|
||||
},
|
||||
{
|
||||
"name": "TJ VanToll",
|
||||
"email": "tj.vantoll@gmail.com",
|
||||
"url": "https://www.tjvantoll.com"
|
||||
},
|
||||
{
|
||||
"name": "Felix Nagel",
|
||||
"email": "info@felixnagel.com",
|
||||
"url": "https://www.felixnagel.com"
|
||||
},
|
||||
{
|
||||
"name": "Alex Schmitz",
|
||||
"email": "arschmitz@gmail.com",
|
||||
"url": "https://github.com/arschmitz"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/jquery/jquery-ui.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/jquery/jquery-ui/issues"
|
||||
},
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"build": "grunt build",
|
||||
"lint": "grunt lint",
|
||||
"test:server": "jtr serve",
|
||||
"test:unit": "jtr",
|
||||
"test": "grunt && npm run test:unit -- --headless"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery": ">=1.12.0 <5.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/core": "1.15.2",
|
||||
"commitplease": "3.2.0",
|
||||
"eslint-config-jquery": "3.0.2",
|
||||
"globals": "16.5.0",
|
||||
"grunt": "1.6.1",
|
||||
"grunt-bowercopy": "1.2.5",
|
||||
"grunt-compare-size": "0.4.2",
|
||||
"grunt-contrib-concat": "2.1.0",
|
||||
"grunt-contrib-csslint": "2.0.0",
|
||||
"grunt-contrib-requirejs": "1.0.0",
|
||||
"grunt-eslint": "26.0.0",
|
||||
"grunt-git-authors": "3.2.0",
|
||||
"grunt-html": "18.0.2",
|
||||
"jquery-test-runner": "0.2.8",
|
||||
"load-grunt-tasks": "5.1.0",
|
||||
"rimraf": "6.1.0"
|
||||
},
|
||||
"keywords": []
|
||||
}
|
||||
7
core/jquery-ui.min.css
vendored
Normal file
6
core/jquery-ui.min.js
vendored
Normal file
8
core/jquery.longpress.min.js
vendored
Normal file
84
core/longpress_README.md
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
# jQuery LongPress Plugin
|
||||
|
||||
A jQuery plugin for handling long press events on both mobile and desktop devices.
|
||||
|
||||
[](LICENSE)
|
||||
[](https://github.com/salarizadi/longpress)
|
||||
[](https://www.jsdelivr.com/package/gh/salarizadi/longpress)
|
||||
[](https://codepen.io/salariz/pen/OPJQbXz)
|
||||
|
||||
## Demo
|
||||
|
||||
[View Live Demo on CodePen](https://codepen.io/salariz/pen/OPJQbXz)
|
||||
|
||||
## Features
|
||||
|
||||
- Works with both touch and mouse events
|
||||
- Configurable hold duration
|
||||
- Optional maximum hold time limit
|
||||
- Progress bar support
|
||||
- Customizable callbacks
|
||||
- Mobile-friendly
|
||||
- Context menu prevention for right-clicks
|
||||
- No external dependencies (except jQuery)
|
||||
|
||||
## Installation
|
||||
|
||||
```html
|
||||
<script src="https://cdn.jsdelivr.net/gh/salarizadi/longpress@main/jquery.longpress.min.js"></script>
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
// Basic usage
|
||||
$('#button').longPress();
|
||||
|
||||
// With options
|
||||
$('#button').longPress({
|
||||
holdTime: 500, // Initial hold time (ms)
|
||||
maxHoldTime: 3000, // Maximum hold time (ms)
|
||||
progressBar: true, // Show progress bar
|
||||
onHoldStart: function() {
|
||||
console.log('Hold started');
|
||||
},
|
||||
onHold: function(e, progress, duration) {
|
||||
console.log('Progress:', progress + '%');
|
||||
},
|
||||
onHoldEnd: function(e, duration) {
|
||||
console.log('Hold ended');
|
||||
},
|
||||
onMaxHold: function() {
|
||||
console.log('Maximum hold time reached');
|
||||
},
|
||||
preventContextMenu: true // Prevent context menu on right-click
|
||||
});
|
||||
|
||||
// To destroy the plugin instance
|
||||
$('#myButton').longPressDestroy();
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Default | Description |
|
||||
|--------|------|---------|-------------|
|
||||
| holdTime | Number | 500 | Initial delay before hold starts (ms) |
|
||||
| maxHoldTime | Number/null | null | Maximum hold duration (ms) |
|
||||
| holdClass | String | 'holding' | CSS class added while holding |
|
||||
| progressBar | Boolean | false | Show progress bar |
|
||||
| progressBarClass | String | 'button-hold-progress' | CSS class for the progress bar |
|
||||
| throttleProgress | Number | 16 | Throttle interval for progress updates (ms) |
|
||||
| touchMoveThreshold | Number | 10 | Movement threshold to cancel hold (px) |
|
||||
| preventContextMenu | Boolean | true | Prevent context menu on right-click |
|
||||
| onHoldStart | Function | null | Called when hold starts |
|
||||
| onHold | Function | null | Called during hold |
|
||||
| onHoldEnd | Function | null | Called when hold ends |
|
||||
| onMaxHold | Function | null | Called at maximum hold time |
|
||||
|
||||
## Browser Support
|
||||
- Chrome (latest)
|
||||
- Firefox (latest)
|
||||
- Safari (latest)
|
||||
- Edge (latest)
|
||||
- iOS Safari (latest)
|
||||
- Android Browser (latest)
|
||||
1
core/simple-lightbox.jquery.min.js
vendored
Normal file
1592
core/simple-lightbox.js
Normal file
7
core/simple-lightbox.min.css
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/*!
|
||||
By André Rinas, www.andrerinas.de
|
||||
Documentation, www.simplelightbox.com
|
||||
Available for use under the MIT License
|
||||
Version 2.14.3
|
||||
*/
|
||||
body.hidden-scroll{overflow:hidden}.sl-overlay{position:fixed;left:0;right:0;top:0;bottom:0;background:#fff;display:none;z-index:1035}.sl-wrapper{z-index:1040;width:100%;height:100%;left:0;top:0;position:fixed}.sl-wrapper *{box-sizing:border-box}.sl-wrapper button{border:0 none;background:rgba(0,0,0,0);font-size:28px;padding:0;cursor:pointer}.sl-wrapper button:hover{opacity:.7}.sl-wrapper .sl-close{display:none;position:fixed;right:30px;top:30px;z-index:10060;margin-top:-14px;margin-right:-14px;height:44px;width:44px;line-height:44px;font-family:Arial,Baskerville,monospace;color:#000;font-size:3rem}.sl-wrapper .sl-counter{display:none;position:fixed;top:30px;left:30px;z-index:10060;color:#000;font-size:1rem}.sl-wrapper .sl-download{display:none;position:fixed;bottom:5px;width:100%;text-align:center;z-index:10060;color:#fff;font-size:1rem}.sl-wrapper .sl-download a{color:#fff}.sl-wrapper .sl-navigation{width:100%;display:none}.sl-wrapper .sl-navigation button{position:fixed;top:50%;margin-top:-22px;height:44px;width:22px;line-height:44px;text-align:center;display:block;z-index:10060;font-family:Arial,Baskerville,monospace;color:#000}.sl-wrapper .sl-navigation button.sl-next{right:5px;font-size:2rem}.sl-wrapper .sl-navigation button.sl-prev{left:5px;font-size:2rem}@media(min-width: 35.5em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:10px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:10px;font-size:3rem}}@media(min-width: 50em){.sl-wrapper .sl-navigation button{width:44px}.sl-wrapper .sl-navigation button.sl-next{right:20px;font-size:3rem}.sl-wrapper .sl-navigation button.sl-prev{left:20px;font-size:3rem}}.sl-wrapper.sl-dir-rtl .sl-navigation{direction:ltr}.sl-wrapper .sl-image{position:fixed;-ms-touch-action:none;touch-action:none;z-index:10000}.sl-wrapper .sl-image img{margin:0;padding:0;display:block;border:0 none;width:100%;height:auto}@media(min-width: 35.5em){.sl-wrapper .sl-image img{border:0 none}}@media(min-width: 50em){.sl-wrapper .sl-image img{border:0 none}}.sl-wrapper .sl-image iframe{background:#000;border:0 none}@media(min-width: 35.5em){.sl-wrapper .sl-image iframe{border:0 none}}@media(min-width: 50em){.sl-wrapper .sl-image iframe{border:0 none}}.sl-wrapper .sl-image .sl-caption{display:none;padding:10px;color:#fff;background:rgba(0,0,0,.8);font-size:1rem;position:absolute;bottom:0;left:0;right:0}.sl-wrapper .sl-image .sl-caption.pos-top{bottom:auto;top:0}.sl-wrapper .sl-image .sl-caption.pos-outside{bottom:auto}.sl-spinner{display:none;border:5px solid #333;border-radius:40px;height:40px;left:50%;margin:-20px 0 0 -20px;opacity:0;position:fixed;top:50%;width:40px;z-index:1007;-webkit-animation:pulsate 1s ease-out infinite;-moz-animation:pulsate 1s ease-out infinite;-ms-animation:pulsate 1s ease-out infinite;-o-animation:pulsate 1s ease-out infinite;animation:pulsate 1s ease-out infinite}.sl-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.sl-transition{transition:-moz-transform ease 200ms;transition:-ms-transform ease 200ms;transition:-o-transform ease 200ms;transition:-webkit-transform ease 200ms;transition:transform ease 200ms}@-webkit-keyframes pulsate{0%{transform:scale(0.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@keyframes pulsate{0%{transform:scale(0.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@-moz-keyframes pulsate{0%{transform:scale(0.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@-o-keyframes pulsate{0%{transform:scale(0.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}@-ms-keyframes pulsate{0%{transform:scale(0.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2);opacity:0}}
|
||||
1
core/simple-lightbox.min.js
vendored
Normal file
3
core/simple-lightbox.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
From repo:
|
||||
|
||||
https://github.com/andreknieriem/simplelightbox.git
|
||||
1
core/simpleLightbox.min.css
vendored
Normal file
1
core/simpleLightbox.min.js
vendored
Normal file
1
core/toastr.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version": 3,"sources": [],"mappings": ""}
|
||||
1
core/toastr.min.css
vendored
Normal file
2
core/toastr.min.js
vendored
Normal file
BIN
css/1140.jpg
Normal file
|
After Width: | Height: | Size: 469 KiB |
BIN
css/MatrixBold.ttf
Executable file
186
css/main.css
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
@font-face {
|
||||
font-family: 'MatrixBold';
|
||||
src: url('MatrixBold.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
body {
|
||||
color: #cccccc;
|
||||
background-image: url("1140.jpg");
|
||||
background-color: #222222;
|
||||
background-size: cover;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
button {
|
||||
font-weight: bold;
|
||||
font-size: 24pt;
|
||||
font-family: Verdana, sans-serif;
|
||||
}
|
||||
.diceroll {
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
font-weight: bold;
|
||||
font-family: Verdana, sans-serif;
|
||||
color: dodgerblue;
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.diceroll img {
|
||||
width: 100%;
|
||||
}
|
||||
.clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
.cardcount {
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
font-weight: bold;
|
||||
font-family: Verdana, sans-serif;
|
||||
color: yellow;
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.resetting {
|
||||
color: red;
|
||||
}
|
||||
.graphics {
|
||||
width: 95vw;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
gap: 5px;
|
||||
}
|
||||
.padright {
|
||||
margin-right: 1.0em;
|
||||
}
|
||||
.header {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.mana {
|
||||
width: 15vw;
|
||||
height: 90vh;
|
||||
}
|
||||
.manaimg {
|
||||
width: 95%;
|
||||
}
|
||||
.cards {
|
||||
height: 90vh;
|
||||
width: 70vw;
|
||||
}
|
||||
.cardimg_single {
|
||||
height: 100%;
|
||||
width: auto;
|
||||
}
|
||||
.cardimg_double {
|
||||
width: 47%;
|
||||
height: auto;
|
||||
}
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.imagegallery {
|
||||
width: 100%;
|
||||
margin: 10px auto auto auto;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.item {
|
||||
border-radius: 10px;
|
||||
width: 256px;
|
||||
height: 380px;
|
||||
margin: 5px;
|
||||
border: 3px solid #ddddd1;
|
||||
padding: 2px;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
border-collapse;
|
||||
}
|
||||
.mtgimage {
|
||||
cursor: pointer;
|
||||
}
|
||||
.mtgimagetitle {
|
||||
cursor: pointer;
|
||||
font-family: MatrixBold;
|
||||
font-weight: bold;
|
||||
font-size: 15pt;
|
||||
overflow: hidden;
|
||||
color: limegreen;
|
||||
width: 100%;
|
||||
background-color: black !important;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
.notenabled {
|
||||
text-decoration: line-through;
|
||||
color: firebrick !important;
|
||||
}
|
||||
.edit-props {
|
||||
font-weight: bold;
|
||||
font-size: 15pt;
|
||||
}
|
||||
.edit-image-container {
|
||||
width: 100%;
|
||||
}
|
||||
.edit-image-tag {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
}
|
||||
.upload-text {
|
||||
font-family: MatrixBold;
|
||||
font-weight: bold;
|
||||
font-size: 45pt;
|
||||
color: gold;
|
||||
}
|
||||
.upload-form {
|
||||
font-weight: bold;
|
||||
font-size: 12pt;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 2em;
|
||||
margin-left: 1em;
|
||||
}
|
||||
.card-image {
|
||||
border-radius: 4%;
|
||||
}
|
||||
.disabledfade {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.small {
|
||||
background-image: linear-gradient(135deg, rgba(255,243,23,0.35) 25%, #000000 25%, #000000 50%, rgba(255,243,23,0.35) 50%, rgba(255,243,23,0.35) 75%, #000000 75%, #000000 100%);
|
||||
background-size: 56.57px 56.57px;
|
||||
border-color: rgb(255,243,23);
|
||||
border-width: 3px;
|
||||
}
|
||||
.medium {
|
||||
background-image: linear-gradient(135deg, rgba(23,240,255,0.35) 25%, #000000 25%, #000000 50%, rgba(23,240,255,0.35) 50%, rgba(23,240,255,0.35) 75%, #000000 75%, #000000 100%);
|
||||
background-size: 56.57px 56.57px;
|
||||
border-color: rgb(23,240,255);
|
||||
border-width: 3px;
|
||||
}
|
||||
.disabled {
|
||||
background-image: linear-gradient(135deg, rgba(255,23,54,0.35) 25%, #000000 25%, #000000 50%, rgba(255,23,54,0.35) 50%, rgba(255,23,54,0.35) 75%, #000000 75%, #000000 100%) !important;
|
||||
background-size: 56.57px 56.57px !important;
|
||||
border-color: rgb(255,23,54);
|
||||
border-width: 3px;
|
||||
}
|
||||
|
||||
/* vim:ts=3 sw=3 et:
|
||||
21
functions.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
function require_login() {
|
||||
if ( !$_SESSION['validated'] ) {
|
||||
header("Location: login.php");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// This function outputs the HTML footer along with adding script tags
|
||||
// for any script files passed to the function. These files are assumed
|
||||
// to be in the js/ folder.
|
||||
//
|
||||
function includeHTMLFooter(...$scripts) {
|
||||
require 'htmlfooter.php';
|
||||
foreach ( $scripts as $script ) {
|
||||
echo "\n<script type='text/javascript' src='js/", trim($script), "'></script>\n";
|
||||
}
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
13
header.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
require_once "config.php";
|
||||
require_once "functions.php";
|
||||
|
||||
require_once "class_image.php";
|
||||
|
||||
if ( php_sapi_name() != "cli" ) {
|
||||
require 'startsession.php';
|
||||
}
|
||||
|
||||
// Make our PDO database connection which will be used in all scripts
|
||||
$globaldbh = new PDO("mysql:host=" . DBHOST . ";dbname=" . DBNAME, DBUSER, DBPASS);
|
||||
7
htmlfooter.php
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<!-- Import jQuery before anything else -->
|
||||
<script type="text/javascript" src="core/jquery-3.6.4.min.js"></script>
|
||||
<script type="text/javascript" src="core/jquery-ui.min.js"></script>
|
||||
<script type='text/javascript' src='core/simple-lightbox.jquery.min.js'></script>
|
||||
<script type='text/javascript' src='core/jquery.longpress.min.js'></script>
|
||||
<!-- Toastr library -->
|
||||
<script type="text/javascript" src="core/toastr.min.js"></script>
|
||||
29
htmlheader.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>MTG Randomizer</title>
|
||||
<meta http-equiv="content-language" content="en-us" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta name="PlowmanPlow" content="PlowmanPlow" />
|
||||
<meta name="copyright" content="2023" />
|
||||
<meta name="description" content="Show random images from a set collection." />
|
||||
<meta name="keywords" content="random,images,magic,gathering" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.5" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<link rel="icon" sizes="512x512" href="img/mtg_icon_512.png" />
|
||||
<link rel="icon" sizes="192x192" href="img/mtg_icon_192.png" />
|
||||
<link rel="icon" sizes="32x32" href="img/mtg_icon_32.png" />
|
||||
<link rel="icon" sizes="16x16" href="img/mtg_icon_16.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="img/mtg_icon_192.png" />
|
||||
<link rel="apple-touch-icon" sizes="512x512" href="img/mtg_icon_512.png" />
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
<link rel="start" title="Home" href="https://www.circlecraft.info/magic/" />
|
||||
<!-- Toastr CSS -->
|
||||
<link rel="stylesheet" href="core/toastr.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="core/simple-lightbox.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="core/jquery-ui.min.css" />
|
||||
<!-- Primary site CSS -->
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="css/main.css" />
|
||||
</head>
|
||||
<body id="mainbody">
|
||||
BIN
img/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
img/dice.jpg
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
img/dice_1.gif
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
img/dice_2.gif
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
img/dice_3.gif
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
img/dice_4.gif
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
img/dice_5.gif
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
img/dice_6.gif
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
img/error.png
Executable file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
img/mana_diamond.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
img/mana_fire.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
img/mana_skull.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
img/mana_sun.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
img/mana_tree.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
img/mana_water.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
img/mtg_icon_16.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
img/mtg_icon_192.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
img/mtg_icon_196.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
img/mtg_icon_32.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
img/mtg_icon_512.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
38
index.php
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
require "header.php";
|
||||
|
||||
require "htmlheader.php";
|
||||
|
||||
?>
|
||||
<div class='cardcount' id='cardcount'></div>
|
||||
<div class='diceroll hidden clickable' id='diceroll'></div>
|
||||
<div class='diceroll hidden clickable' id='diceroll_2'><img src='img/dice_2.gif' /></div>
|
||||
<div class='diceroll hidden clickable' id='diceroll_3'><img src='img/dice_3.gif' /></div>
|
||||
<div class='diceroll hidden clickable' id='diceroll_4'><img src='img/dice_4.gif' /></div>
|
||||
<div class='diceroll hidden clickable' id='diceroll_5'><img src='img/dice_5.gif' /></div>
|
||||
<center>
|
||||
<div id="header" class="header">
|
||||
<button id="btn_showfirst" class="padright">Show First Card</button>
|
||||
<button id="btn_showsecond" class="hidden">Show Second Card</button>
|
||||
</div>
|
||||
<div id="graphics" class="graphics">
|
||||
<div id="manaleft" class="mana">
|
||||
<img src="img/mana_sun.png" class="manaimg clickable" id="mana_sun_img" /><br clear=all />
|
||||
<img src="img/mana_water.png" class="manaimg clickable" id="mana_water_img" /><br clear=all />
|
||||
<img src="img/mana_fire.png" class="manaimg clickable" id="mana_fire_img" />
|
||||
</div>
|
||||
<div id="image1" class="cards">
|
||||
<img id="firstimg" class="card-image cardimg_single" data-id="0" src="" />
|
||||
<img id="secondimg" class="card-image cardimg_double data-id="0" hidden" src="" />
|
||||
</div>
|
||||
<div id="manaright" class="mana">
|
||||
<img src="img/mana_tree.png" class="manaimg" id="mana_tree_img" /><br clear=all />
|
||||
<img src="img/mana_skull.png" class="manaimg" id="mana_skull_img" /><br clear=all />
|
||||
<img src="img/mana_diamond.png" class="manaimg" id="mana_diamond_img" />
|
||||
</div>
|
||||
</div>
|
||||
</center>
|
||||
<?php
|
||||
|
||||
includeHTMLFooter("main.js");
|
||||
1
install/.htaccess
Normal file
|
|
@ -0,0 +1 @@
|
|||
Require all denied
|
||||
46
install/initial_db_mysql.sql
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: storage Database: doctorwho
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.11.13-MariaDB-0ubuntu0.24.04.1
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `images`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `images`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `images` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`filename` varchar(255) NOT NULL,
|
||||
`enabled` tinyint(1) DEFAULT 1,
|
||||
`width` mediumint(8) unsigned NOT NULL DEFAULT 0,
|
||||
`height` mediumint(8) unsigned NOT NULL DEFAULT 0,
|
||||
`created` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-29 19:20:03
|
||||
194
js/main.js
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
var resetting = false;
|
||||
var initialCard = true;
|
||||
var skipCard = false;
|
||||
var showingSecondCard = false;
|
||||
const audioDice = new Audio("audio/dice.mp3");
|
||||
const PREVIOUS = true;
|
||||
|
||||
$(document).ready(function() {
|
||||
// when ready
|
||||
$("#btn_showfirst").click(function() {
|
||||
showingSecondCard = false;
|
||||
getCard();
|
||||
});
|
||||
$("#btn_showsecond").click(function() {
|
||||
showingSecondCard = true;
|
||||
getCard();
|
||||
});
|
||||
$("#cardcount").on("click", function() {
|
||||
if ( $("#cardcount").html() == "" ) return;
|
||||
if ( !resetting ) {
|
||||
$("#cardcount").addClass("resetting");
|
||||
resetting = true;
|
||||
} else {
|
||||
resetPage();
|
||||
}
|
||||
});
|
||||
$("#mana_sun_img").on("click", function() { rollDice(); });
|
||||
$("#mana_water_img").on("click", function() { $(".diceroll").addClass("hidden"); });
|
||||
$("#mana_fire_img").on("click", function() {
|
||||
skipCard = true;
|
||||
getCard();
|
||||
});
|
||||
$("#mana_tree_img").on("click", function() { window.open("manage.php", "_blank"); });
|
||||
/*
|
||||
$("#mana_tree_img").longPress({
|
||||
holdTime: 1000,
|
||||
onHoldStart: function() {
|
||||
window.open("manage.php", "_blank");
|
||||
}
|
||||
});
|
||||
*/
|
||||
$("#mana_skull_img").on("click", function() {
|
||||
getCard(PREVIOUS);
|
||||
});
|
||||
$(".diceroll").on("click", function() { rollDice(); });
|
||||
$("#firstimg").longPress({
|
||||
holdTime: 1000,
|
||||
onHoldStart: function() {
|
||||
toggleState($(this));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function resetPage(count = 0) {
|
||||
$.ajax({
|
||||
url: 'ajax/resetpage.php',
|
||||
data: {cardcount: count},
|
||||
dataType: 'json',
|
||||
success: function(data, stat, jqo) {
|
||||
$("#firstimg").attr("src", "");
|
||||
$("#secondimg").attr("src", "");
|
||||
$("#firstimg").data("id", "0");
|
||||
$("#secondimg").data("id", "0");
|
||||
$("#secondimg").addClass("hidden");
|
||||
$("#btn_showsecond").addClass("hidden");
|
||||
$("#cardcount").html("");
|
||||
$("#cardcount").removeClass("resetting");
|
||||
$(".diceroll").addClass("hidden");
|
||||
resetting = false;
|
||||
initialCard = true;
|
||||
skipCard = false;
|
||||
showingSecondCard = false;
|
||||
showCardCount(data.cardcount);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getCardCount() {
|
||||
$.ajax({
|
||||
url: 'ajax/getcardcount.php',
|
||||
data: {},
|
||||
dataType: 'json',
|
||||
success: function(data, stat, jqo) {
|
||||
showCardCount(data.cardcount);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function rollDice() {
|
||||
audioDice.play();
|
||||
$(".diceroll").addClass("hidden");
|
||||
var currentRoll = Math.floor(Math.random() * 4) + 2;
|
||||
var img = $("#mana_sun_img");
|
||||
var dicediv = $("#diceroll");
|
||||
dicediv.css('top', img.offset().top);
|
||||
dicediv.css('left', img.offset().left);
|
||||
dicediv.css('height', img.height());
|
||||
dicediv.css('width', img.width());
|
||||
dicediv.css('font-size', (img.height()/4) + "px");
|
||||
dicediv.html(currentRoll);
|
||||
dicediv.removeClass("hidden");
|
||||
initialCard = true;
|
||||
resetPage(currentRoll);
|
||||
}
|
||||
|
||||
function showCardCount(count) {
|
||||
var img = $("#mana_diamond_img");
|
||||
var ccdiv = $("#cardcount");
|
||||
ccdiv.css('top', img.offset().top);
|
||||
ccdiv.css('left', img.offset().left);
|
||||
ccdiv.css('height', img.height());
|
||||
ccdiv.css('width', img.width());
|
||||
ccdiv.css('font-size', (img.height()/6) + "px");
|
||||
ccdiv.removeClass("resetting");
|
||||
resetting = false;
|
||||
ccdiv.html(count);
|
||||
}
|
||||
|
||||
function getCard(reverse = false) {
|
||||
if ( !showingSecondCard ) {
|
||||
$("#firstimg").attr("src", "");
|
||||
$("#firstimg").data("id", "0");
|
||||
$("#firstimg").removeClass("disabledfade");
|
||||
}
|
||||
$.ajax({
|
||||
url: 'ajax/getcard.php',
|
||||
data: {
|
||||
second: showingSecondCard,
|
||||
initialcard: initialCard,
|
||||
skip: skipCard,
|
||||
reverse: reverse
|
||||
},
|
||||
dataType: 'json',
|
||||
success: function(data, stat, jqo) {
|
||||
skipCard = false;
|
||||
if ( data.error ) {
|
||||
$("#firstimg").attr("src", "");
|
||||
$("#secondimg").attr("src", "");
|
||||
$("#firstimg").data("id", "0");
|
||||
$("#secondimg").data("id", "0");
|
||||
$("#secondimg").addClass("hidden");
|
||||
$("#btn_showsecond").addClass("hidden");
|
||||
return;
|
||||
}
|
||||
initialCard = false;
|
||||
$("#firstimg").attr("src", "images/"+data.cards[0].filename);
|
||||
$("#firstimg").data("id", data.cards[0].id.toString());
|
||||
if ( data.cards[0].enabled ) {
|
||||
$("#firstimg").removeClass("disabledfade");
|
||||
} else {
|
||||
$("#firstimg").addClass("disabledfade");
|
||||
}
|
||||
if ( data.cards.length == 1 ) {
|
||||
$("#firstimg").removeClass("cardimg_double");
|
||||
$("#firstimg").addClass("cardimg_single");
|
||||
$("#firstimg").removeClass("padright");
|
||||
$("#secondimg").addClass("hidden");
|
||||
$("#secondimg").attr("src", "");
|
||||
$("#secondimg").data("id", "0");
|
||||
$("#btn_showsecond").removeClass("hidden");
|
||||
} else {
|
||||
$("#firstimg").removeClass("cardimg_single");
|
||||
$("#firstimg").addClass("cardimg_double");
|
||||
$("#firstimg").addClass("padright");
|
||||
$("#secondimg").attr("src", "images/"+data.cards[1].filename);
|
||||
$("#secondimg").data("id", data.cards[1].id.toString());
|
||||
$("#secondimg").removeClass("hidden");
|
||||
if ( data.cards[1].enabled ) {
|
||||
$("#secondimg").removeClass("disabledfade");
|
||||
} else {
|
||||
$("#secondimg").addClass("disabledfade");
|
||||
}
|
||||
}
|
||||
showCardCount(data.cardcount);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function toggleState(el) {
|
||||
$.ajax({
|
||||
url: 'ajax/togglestate.php',
|
||||
dataType: 'json',
|
||||
data: {id: el.data("id")},
|
||||
success: function(data, stat, jqo) {
|
||||
if ( data.image.enabled ) {
|
||||
el.removeClass("disabledfade");
|
||||
} else {
|
||||
el.addClass("disabledfade");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// vim:ts=2 sw=2 et mouse-=a:
|
||||
236
js/manage.js
Normal file
|
|
@ -0,0 +1,236 @@
|
|||
var validated = false;
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#dialog-login").dialog({
|
||||
autoOpen: false,
|
||||
modal: true,
|
||||
width: 400,
|
||||
buttons: {
|
||||
"Login": verifyLogin
|
||||
}
|
||||
});
|
||||
$("#dialog-edit").dialog({
|
||||
autoOpen: false,
|
||||
modal: true,
|
||||
width: 400,
|
||||
buttons: {
|
||||
"Delete": function() {
|
||||
if ( !$("#edit-props-delete").prop("checked") ) {
|
||||
toastr.error("You must check the delete confirmation box");
|
||||
return;
|
||||
}
|
||||
deleteCard();
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
$("#edit-props-id").val("0");
|
||||
$("#edit-props-filename").val("");
|
||||
$("#edit-props-enabled").prop("checked", false);
|
||||
},
|
||||
"Save": saveCardProperties
|
||||
}
|
||||
});
|
||||
showGallery();
|
||||
});
|
||||
|
||||
function showGallery() {
|
||||
$.ajax({
|
||||
url: 'ajax/getimages.php',
|
||||
dataType: 'json',
|
||||
success: function(data, stat, jqo) {
|
||||
validated = data.validated;
|
||||
$("#gallery").html("");
|
||||
if ( validated ) {
|
||||
var html = "";
|
||||
html += "<div class='item'>";
|
||||
html += "<div class='upload-text'>Upload</div>";
|
||||
html += "<div class='upload-text'>Files</div>";
|
||||
html += "<div class='upload-text'>Here</div>";
|
||||
html += "<form action='#' id='upload-form' method='POST' enctype='multipart/form-data'>";
|
||||
html += "<input type='file' name='images[]' id='fileselect' multiple='multiple' class='upload-form' />";
|
||||
html += "</form>";
|
||||
html += "<button id='upload-images'>Upload</button>";
|
||||
html += "</div>";
|
||||
$("#gallery").append(html);
|
||||
$("#upload-images").on("click", uploadImages);
|
||||
}
|
||||
data.images.forEach(function(image) {
|
||||
var html = "";
|
||||
html += "<div class='item " + image.size + ((image.enabled) ? "" : " disabled") + "'>";
|
||||
html += "<div class='mtgimage'>";
|
||||
html += "<a href=\"images/" + image.filename + "\"><img class='card-image' data-imgid='" + image.id + "' src=\"thumb.php?id=" + image.id + "\" /></a>";
|
||||
html += "</div>";
|
||||
html += "<div><span data-id='" + image.id + "' class='mtgimagetitle" + ((image.enabled) ? "" : " notenabled") + "'>" + image.title + "</span></div>";
|
||||
html += "</div>";
|
||||
$("#gallery").append(html);
|
||||
});
|
||||
$('.imagegallery a').simpleLightbox();
|
||||
$(".mtgimagetitle").on("click", function() { openEditDialog($(this).data("id")); });
|
||||
if ( !validated ) openLoginDialog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function uploadImages() {
|
||||
var form = $("#upload-form")[0];
|
||||
var data = new FormData(form);
|
||||
data.append("goodform", "true");
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
enctype: "multipart/form-data",
|
||||
url: "ajax/uploadimages.php",
|
||||
data: data,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
cache: false,
|
||||
timeout: 600000,
|
||||
success: function(data, stat, jqo) {
|
||||
if ( !data.error ) {
|
||||
form.reset();
|
||||
toastr.success(data.uploadcount + " images uploaded");
|
||||
showGallery();
|
||||
} else {
|
||||
toastr.error(data.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function toggleState(imageId) {
|
||||
$.ajax({
|
||||
url: 'ajax/togglestate.php',
|
||||
dataType: 'json',
|
||||
data: {id: imageId},
|
||||
success: function(data, stat, jqo) {
|
||||
if ( data.image.enabled ) {
|
||||
$('[data-id="' + imageId + '"]').removeClass("notenabled");
|
||||
} else {
|
||||
$('[data-id="' + imageId + '"]').addClass("notenabled");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function refreshDB() {
|
||||
$.ajax({
|
||||
url: 'ajax/populate.php',
|
||||
dataType: 'json',
|
||||
success: function(data, stat, jqo) {
|
||||
if ( !data.error ) {
|
||||
toastr.success("Databse list of images was updated");
|
||||
showGallery();
|
||||
} else {
|
||||
toastr.error("Error updating database!");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function verifyLogin() {
|
||||
$.ajax({
|
||||
url: 'ajax/login.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
username: $("#login-username").val(),
|
||||
password: $("#login-password").val()
|
||||
},
|
||||
type: 'POST',
|
||||
success: function(data, stat, jqo) {
|
||||
validated = data.validated;
|
||||
if ( !validated ) {
|
||||
toastr.error("Invalid Login");
|
||||
} else {
|
||||
toastr.success("Login Successful");
|
||||
$("#login-username").val("");
|
||||
$("#login-password").val("");
|
||||
$("#dialog-login").dialog("close");
|
||||
showGallery();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openLoginDialog() {
|
||||
$("#dialog-login").dialog("open");
|
||||
}
|
||||
|
||||
function openEditDialog(imageId) {
|
||||
if ( !validated ) {
|
||||
openLoginDialog();
|
||||
return;
|
||||
}
|
||||
$.ajax({
|
||||
url: 'ajax/getimage.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
id: imageId
|
||||
},
|
||||
success: function(data, stat, jqo) {
|
||||
if ( data.error ) {
|
||||
toastr.error(data.message);
|
||||
return;
|
||||
}
|
||||
$("#edit-image").attr("src", "thumb.php?id="+imageId);
|
||||
$("#edit-props-id").val(imageId);
|
||||
$("#edit-props-filename").val(data.image.title);
|
||||
$("#edit-props-enabled").prop("checked", data.image.enabled);
|
||||
$("#edit-props-dimensions").html(data.image.dimensions);
|
||||
$("#edit-props-size").html(data.image.size);
|
||||
$("#dialog-edit").dialog("open");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function clearEditDialog() {
|
||||
$("#dialog-edit").dialog("close");
|
||||
$("#edit-image").attr("src", "img/error.png");
|
||||
$("#edit-props-id").val("0");
|
||||
$("#edit-props-filename").val("");
|
||||
$("#edit-props-enabled").prop("checked", false);
|
||||
$("#edit-props-dimensions").html("");
|
||||
$("#edit-props-size").html("");
|
||||
$("#edit-props-delete").prop("checked", false);
|
||||
}
|
||||
|
||||
function deleteCard() {
|
||||
if ( !validated ) return;
|
||||
$.ajax({
|
||||
url: 'ajax/deletecard.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
id: $("#edit-props-id").val()
|
||||
},
|
||||
success: function(data, stat, jqo) {
|
||||
if ( !data.error ) {
|
||||
toastr.success("Card Deleted: " + data.filename);
|
||||
clearEditDialog();
|
||||
showGallery();
|
||||
} else {
|
||||
toastr.error(data.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function saveCardProperties() {
|
||||
if ( !validated ) return;
|
||||
$.ajax({
|
||||
url: 'ajax/savecard.php',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
id: $("#edit-props-id").val(),
|
||||
filename: $("#edit-props-filename").val(),
|
||||
enabled: ($("#edit-props-enabled").prop("checked")) ? 1 : 0
|
||||
},
|
||||
success: function(data, stat, jqo) {
|
||||
if ( !data.error ) {
|
||||
clearEditDialog();
|
||||
showGallery();
|
||||
} else {
|
||||
toastr.error(data.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// vim:ts=2 sw=2 et:
|
||||
10
login.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
require "header.php";
|
||||
|
||||
require "htmlheader.php";
|
||||
|
||||
?>
|
||||
This is the login page
|
||||
<?php
|
||||
require "htmlfooter.php";
|
||||
5
logout.php
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
session_destroy();
|
||||
header("Location: manage.php\n");
|
||||
exit();
|
||||
53
manage.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
require "header.php";
|
||||
|
||||
require "htmlheader.php";
|
||||
|
||||
$files = MTGImage::getList();
|
||||
|
||||
?>
|
||||
<div id="dialog-login" title="Management Login">
|
||||
<div class="login-form">
|
||||
<p>
|
||||
<span class="edit-props-label">Username:</span>
|
||||
<input size="20" id="login-username" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="edit-props-label">Password:</span>
|
||||
<input size="20" id="login-password" type="password" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dialog-edit" title="Editing Card Properties">
|
||||
<input type="hidden" id="edit-props-id" value="0">
|
||||
<div class="edit-image-container"><img class="edit-image-tag" id="edit-image" src="img/error.png" /></div>
|
||||
<div class="edit-props">
|
||||
<p>
|
||||
<span class="edit-props-label">File Name:</span>
|
||||
<input size="20" id="edit-props-filename" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="edit-props-label">Enabled:</span>
|
||||
<input type="checkbox" id="edit-props-enabled" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="edit-props-label">Dimensions:</span>
|
||||
<span class="edit-props-label" id="edit-props-dimensions"></span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="edit-props-label">Image Size:</span>
|
||||
<span class="edit-props-label" id="edit-props-size"></span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="edit-props-label">Confirm Delete:</span>
|
||||
<input type="checkbox" id="edit-props-delete" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="gallery" class="imagegallery"></div>
|
||||
<?php
|
||||
|
||||
includeHTMLFooter("manage.js");
|
||||
|
||||
// vim:ts=2 sw=2 et:
|
||||
20
manifest.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"short_name": "MTG Randomizer",
|
||||
"description": "Magic the Gathering random card display application",
|
||||
"icons": [
|
||||
{
|
||||
"src": "img/mtg_icon_512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
},
|
||||
{
|
||||
"src": "img/mtg_icon_192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
}
|
||||
],
|
||||
"start_url": "index.php",
|
||||
"display": "fullscreen",
|
||||
"scope": "/"
|
||||
}
|
||||
|
||||
17
startsession.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
if ( php_sapi_name() == "cli" ) exit();
|
||||
|
||||
// Start the session
|
||||
session_name("RANDOMIMAGES");
|
||||
session_start();
|
||||
|
||||
// The card count and start count
|
||||
if ( !isset($_SESSION['cardcount']) ) $_SESSION['cardcount'] = 0;
|
||||
if ( !isset($_SESSION['startcount']) ) $_SESSION['startcount'] = 0;
|
||||
|
||||
// Are we logged in?
|
||||
if ( !isset($_SESSION['validated']) ) $_SESSION['validated'] = false;
|
||||
|
||||
// Cards in the current play set
|
||||
if ( !isset($_SESSION['cardlist']) ) $_SESSION['cardlist'] = [];
|
||||
52
thumb.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
require "header.php";
|
||||
|
||||
function autoRotateImage($image) {
|
||||
$orientation = $image->getImageOrientation();
|
||||
|
||||
switch($orientation) {
|
||||
case imagick::ORIENTATION_BOTTOMRIGHT:
|
||||
$image->rotateimage("#000", 180); // rotate 180 degrees
|
||||
break;
|
||||
|
||||
case imagick::ORIENTATION_RIGHTTOP:
|
||||
$image->rotateimage("#000", 90); // rotate 90 degrees CW
|
||||
break;
|
||||
|
||||
case imagick::ORIENTATION_LEFTBOTTOM:
|
||||
$image->rotateimage("#000", -90); // rotate 90 degrees CCW
|
||||
break;
|
||||
}
|
||||
|
||||
// Now that it's auto-rotated, make sure the EXIF data is correct in case the EXIF gets saved with the image!
|
||||
$image->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
|
||||
}
|
||||
|
||||
//$max_w = 250;
|
||||
//$max_h = 141;
|
||||
//$max_w = 350;
|
||||
//$max_h = 197;
|
||||
$max_w = 250;
|
||||
$max_h = 350;
|
||||
|
||||
function showError() {
|
||||
header("Content-Type: image/png");
|
||||
readfile("img/error.png");
|
||||
exit();
|
||||
}
|
||||
|
||||
if ( !isset($_REQUEST['id']) ) showError();
|
||||
$image = new MTGImage(intval($_REQUEST['id']));
|
||||
$file = "images/" . $image->getFileName();
|
||||
if ( !is_file($file) ) showError();
|
||||
|
||||
$image = new Imagick();
|
||||
$image->readImage($file);
|
||||
autoRotateImage($image);
|
||||
|
||||
$image->thumbnailImage($max_w, $max_h, true);
|
||||
$image->setImageFormat("png");
|
||||
header("Content-Type: image/png");
|
||||
echo $image->getImageBlob();
|
||||
exit();
|
||||