├── README.md ├── images ├── x.png ├── favicon.ico ├── styleselect-3d.jpg ├── styleselect-plus.jpg ├── watermarks │ ├── 08-btc.png │ ├── 01-link.png │ ├── 03-email.png │ ├── 05-wifi.png │ ├── 06-vcard.png │ ├── 02-location.png │ ├── 04-whatsapp.png │ └── 07-paypal.png ├── styleselect-circle.jpg ├── styleselect-default.jpg └── placeholder.svg ├── fonts ├── FontAwesome.otf ├── fontawesome-webfont.eot ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff └── fontawesome-webfont.woff2 ├── js ├── bootstrap-colorpicker │ ├── logo.png │ ├── LICENSE │ ├── README.md │ └── css │ │ ├── bootstrap-colorpicker.min.css │ │ ├── bootstrap-colorpicker.css │ │ └── bootstrap-colorpicker.css.map ├── ie8.js ├── all.js └── popper.js ├── documentation ├── assets │ ├── images │ │ ├── logo.png │ │ ├── qrcdr-files.jpg │ │ ├── watermarks.png │ │ └── qrcdr-logo-i.png │ └── js │ │ └── google-code-prettify │ │ ├── prettify.css │ │ └── prettify.js └── index.html ├── include ├── tab-text.php ├── tab-link.php ├── tab-email.php ├── tab-tel.php ├── tab-location.php ├── tab-bitcoin.php ├── get.php ├── tab-whatsapp.php ├── tab-sms.php ├── tab-wifi.php ├── btc-check.php ├── head.php ├── tab-vcard.php ├── tab-paypal.php ├── process.php ├── functions.php └── generator.php ├── template ├── header.php └── footer.php ├── config.php ├── translations ├── es.php ├── de.php ├── pt.php ├── en.php └── it.php ├── index.php └── style.css /README.md: -------------------------------------------------------------------------------- 1 | # QRCode_Generator 2 | QRCode_Generator 3 | -------------------------------------------------------------------------------- /images/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/x.png -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/favicon.ico -------------------------------------------------------------------------------- /fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /images/styleselect-3d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/styleselect-3d.jpg -------------------------------------------------------------------------------- /images/styleselect-plus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/styleselect-plus.jpg -------------------------------------------------------------------------------- /images/watermarks/08-btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/08-btc.png -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /images/styleselect-circle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/styleselect-circle.jpg -------------------------------------------------------------------------------- /images/styleselect-default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/styleselect-default.jpg -------------------------------------------------------------------------------- /images/watermarks/01-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/01-link.png -------------------------------------------------------------------------------- /images/watermarks/03-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/03-email.png -------------------------------------------------------------------------------- /images/watermarks/05-wifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/05-wifi.png -------------------------------------------------------------------------------- /images/watermarks/06-vcard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/06-vcard.png -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /images/watermarks/02-location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/02-location.png -------------------------------------------------------------------------------- /images/watermarks/04-whatsapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/04-whatsapp.png -------------------------------------------------------------------------------- /images/watermarks/07-paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/images/watermarks/07-paypal.png -------------------------------------------------------------------------------- /js/bootstrap-colorpicker/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/js/bootstrap-colorpicker/logo.png -------------------------------------------------------------------------------- /documentation/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/documentation/assets/images/logo.png -------------------------------------------------------------------------------- /documentation/assets/images/qrcdr-files.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/documentation/assets/images/qrcdr-files.jpg -------------------------------------------------------------------------------- /documentation/assets/images/watermarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/documentation/assets/images/watermarks.png -------------------------------------------------------------------------------- /documentation/assets/images/qrcdr-logo-i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Huniko519/QRCode-Generator/HEAD/documentation/assets/images/qrcdr-logo-i.png -------------------------------------------------------------------------------- /include/tab-text.php: -------------------------------------------------------------------------------- 1 | 6 |
" id="text"> 7 |

8 |
9 | 10 | 11 |
12 |
13 | 6 |
" id="link"> 7 |

8 |
9 | 10 | " placeholder="http://" required="required" /> 11 |
12 |
13 | 2 |
3 |
4 |
5 |
6 |

QR Code Generator

7 |

This is an example of header.
Place here your contents, or remove the file /template/header.php.

8 |

Learn more »

9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /template/footer.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 |
7 |

This is an example of footer. Place here your contents, or remove the file /template/footer.php.

8 |
9 |
10 |
11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 |
-------------------------------------------------------------------------------- /documentation/assets/js/google-code-prettify/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .linenums .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 18px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /include/tab-email.php: -------------------------------------------------------------------------------- 1 | 6 |
" id="email"> 7 |

8 |
9 |
10 | 11 | 12 |
13 |
14 | 15 | 16 |
17 |
18 | 19 | 20 |
21 |
22 |
23 | 6 |
" id="tel"> 7 |

8 |
9 |
10 |
11 | 12 | '; 14 | foreach ($countries as $i=>$row) { 15 | $output .= '\n'; 16 | } 17 | $output .= ''; 18 | echo $output; 19 | ?> 20 |
21 |
22 | 23 | 24 |
25 |
26 | 27 | 28 |
29 |
30 |
31 |
32 | 6 |
" id="location"> 7 |

8 | 10 |

Please set a google_api_key inside config.php
11 | 12 | > How to get an api key for Gmaps 13 | 14 |

15 | 17 | 18 |
19 |
20 | 21 | 22 | 23 |
24 |
25 |
26 | 28 |
29 | 6 |
" id="bitcoin"> 7 |

8 |
9 |
10 | 11 | 12 |
13 |
14 | 15 |
16 | 17 |
18 | BTC 19 |
20 |
21 | 22 |
23 | 24 |
25 | 26 | 27 |
28 | 29 |
30 | 31 | 32 |
33 | 34 | 35 |
36 |
37 | 11 | * @copyright 2015-2019 Nicola Franchini 12 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 13 | * @link http://veno.es/qrcdr/ 14 | */ 15 | require dirname(dirname(__FILE__))."/config.php"; 16 | session_name($_CONFIG['session_name']); 17 | session_start(); 18 | require dirname(dirname(__FILE__))."/include/functions.php"; 19 | $dir = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.$_CONFIG['qrcodes_dir'].'/'; 20 | 21 | $path = (isset($_GET['path']) ? $_GET['path'] : false); 22 | 23 | if (!preg_match('/^[a-z0-9]+.[a-z]{2,3}$/i', $path)) { 24 | $path = false; 25 | } else { 26 | $file = $dir.$path; 27 | } 28 | 29 | if (!file_exists($file)) { 30 | $_SESSION['error'] = "The file is not here: ".$file; 31 | header('Location:index.php'); 32 | exit; 33 | } else { 34 | header("Cache-Control: public"); 35 | header("Content-Description: File Transfer"); 36 | header("Content-type: Application/octet-stream"); 37 | header("Content-Disposition: attachment; filename= ".$path); 38 | header("Content-Length: ".filesize($file)); 39 | header("Content-Transfer-Encoding: binary"); 40 | if (ob_get_level() > 0) { 41 | ob_end_flush(); 42 | } 43 | readfile($file); 44 | exit; 45 | } 46 | header('Location:index.php'); 47 | exit; -------------------------------------------------------------------------------- /images/placeholder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /include/tab-whatsapp.php: -------------------------------------------------------------------------------- 1 | 6 |
" id="whatsapp"> 7 |

WhatsApp

8 |
9 |
10 |
11 | 12 | '; 14 | foreach ($countries as $i=>$row) { 15 | $output .= '\n'; 16 | } 17 | $output .= ''; 18 | echo $output; 19 | ?> 20 |
21 |
22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 | 30 |
31 |
32 | 33 | 34 |
35 |
36 |
37 |
38 | 6 |
" id="sms"> 7 |

8 |
9 |
10 |
11 | 12 | '; 14 | foreach ($countries as $i=>$row) { 15 | $output .= '\n'; 16 | } 17 | $output .= ''; 18 | echo $output; 19 | ?> 20 |
21 |
22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 | 30 |
31 | 32 |
33 | 34 | 35 |
36 | 37 |
38 |
39 |
40 | 6 |
" id="wifi"> 7 |

8 |
9 |
10 | 11 | 12 |
13 |
14 | 15 | 20 |
21 |
22 | 23 | 24 |
25 |
26 | 27 |
28 |
29 |
30 | 31 | 32 |
33 |
34 |
35 |
36 | decode_base58($address); 13 | if (strlen($addr) != 50) 14 | { 15 | return false; 16 | } 17 | $check = substr($addr, 0, strlen($addr) - 8); 18 | $check = pack("H*", $check); 19 | $check = strtoupper(hash("sha256", hash("sha256", $check, true))); 20 | $check = substr($check, 0, 8); 21 | return $check == substr($addr, strlen($addr) - 8); 22 | } 23 | private function encode_hex($dec) 24 | { 25 | $hexchars = "0123456789ABCDEF"; 26 | $return = ""; 27 | while (bccomp($dec, 0) == 1) 28 | { 29 | $dv = (string) bcdiv($dec, "16", 0); 30 | $rem = (integer) bcmod($dec, "16"); 31 | $dec = $dv; 32 | $return = $return . $hexchars[$rem]; 33 | } 34 | return strrev($return); 35 | } 36 | /** 37 | * Convert a Base58-encoded integer into the equivalent hex string representation 38 | * 39 | * @param string $base58 40 | * @return string 41 | * @access private 42 | */ 43 | private function decode_base58($base58) 44 | { 45 | $origbase58 = $base58; 46 | $base58chars = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; 47 | $return = "0"; 48 | for ($i = 0; $i < strlen($base58); $i++) 49 | { 50 | $current = (string) strpos($base58chars, $base58[$i]); 51 | $return = (string) bcmul($return, "58", 0); 52 | $return = (string) bcadd($return, $current, 0); 53 | } 54 | $return = $this->encode_hex($return); 55 | //leading zeros 56 | for ($i = 0; $i < strlen($origbase58) && $origbase58[$i] == "1"; $i++) 57 | { 58 | $return = "00" . $return; 59 | } 60 | if (strlen($return) % 2 != 0) 61 | { 62 | $return = "0" . $return; 63 | } 64 | return $return; 65 | } 66 | } 67 | 68 | 69 | $validator = new Btc_address_validator(); 70 | $result = $validator->validate($getaddress); 71 | 72 | echo $result; 73 | -------------------------------------------------------------------------------- /config.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015-2019 Nicola Franchini 14 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 15 | * @link http://veno.es/qrcdr/ 16 | */ 17 | $_CONFIG = array( 18 | 'lang' => 'en', // main language 19 | 'uploads_dir' => 'temp', // uploads directory 20 | 'qrcodes_dir' => 'qrcodes', // qr codes directory 21 | 'delete_old_files' => true, // delete periodically old files 22 | 'file_lifetime' => 24, // delete files older than..(hours) from /uploads_dir and /qrcodes_dir 23 | 'uploader' => true, // let users upload their own logo 24 | 'upload_max_filesize' => 1000, // max filesize in Kb 25 | 'thumb_size' => 130, // the size of the user's uploaded thumbnail 26 | 'qr_bgcolor' => '#FFFFFF', // default background color for generated qrcodes 27 | 'qr_color' => '#000000', // default foreground color for generated qrcodes 28 | 'session_name' => 'qrSession', // custom session name for the script 29 | 'placeholder' => 'images/placeholder.svg', // default placeholder 30 | 'link' => true, // activate link tab 31 | 'location' => true, // activate location tab 32 | 'email' => true, // activate email tab 33 | 'text' => true, // activate text tab 34 | 'tel' => true, // activate telephone tab 35 | 'sms' => true, // activate sms tab 36 | 'whatsapp' => true, // activate whatsapp tab 37 | 'wifi' => true, // activate wifi tab 38 | 'vcard' => true, // activate v-card tab 39 | 'paypal' => true, // activate PayPal tab 40 | 'bitcoin' => true, // activate BitCoin tab 41 | 'default_tab' => '#link', // available options: #link | #location | #email | #text | #sms | #wifi | #vcard | #paypal | #bitcoin | #whatsapp 42 | 'detect_browser_lang' => false, // detect browser language 43 | 'google_api_key' => 'YOUR-API-KEY', // https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key 44 | 'color_primary' => false, // main color, used for buttons and header background. set a #hex color or false to get random colors 45 | ); 46 | -------------------------------------------------------------------------------- /include/head.php: -------------------------------------------------------------------------------- 1 | 11 | * @copyright 2015-2019 Nicola Franchini 12 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 13 | * @link http://veno.es/qrcdr/ 14 | */ 15 | date_default_timezone_set('UTC'); 16 | $getsection = $_CONFIG['default_tab']; 17 | $optionlogo = 'none'; 18 | 19 | $PNG_TEMP_DIR = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.$_CONFIG['qrcodes_dir'].DIRECTORY_SEPARATOR; 20 | $PNG_WEB_DIR = $_CONFIG['qrcodes_dir'].'/'; 21 | $USER_DIR = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.$_CONFIG['uploads_dir'].DIRECTORY_SEPARATOR; 22 | $USER_UPLOADS = $_CONFIG['uploads_dir'].'/'; 23 | $upmax = $_CONFIG['upload_max_filesize']; 24 | $MAX_FILESIZE = $upmax*1024; 25 | 26 | if (!file_exists($PNG_TEMP_DIR)) { 27 | mkdir($PNG_TEMP_DIR); 28 | } 29 | if (!file_exists($USER_DIR)) { 30 | mkdir($USER_DIR); 31 | } 32 | 33 | $matrixPointSize = 16; 34 | $errorCorrectionLevel = 'Q'; // available: L, M, Q, H 35 | $stringbackcolor = $_CONFIG['qr_bgcolor']; 36 | $stringfrontcolor = $_CONFIG['qr_color']; 37 | 38 | $upthumb = false; 39 | $uploaded = false; 40 | $logo = false; 41 | $output_data = false; 42 | 43 | if ($_FILES) { 44 | $uploaded = true; 45 | $allowedExts = array("gif", "GIF", "jpeg", "JPEG", "jpg", "JPG", "png", "PNG"); 46 | $temp = explode(".", $_FILES["file"]["name"]); 47 | $extension = end($temp); 48 | 49 | if ((($_FILES["file"]["type"] == "image/gif") 50 | || ($_FILES["file"]["type"] == "image/jpeg") 51 | || ($_FILES["file"]["type"] == "image/jpg") 52 | || ($_FILES["file"]["type"] == "image/pjpeg") 53 | || ($_FILES["file"]["type"] == "image/x-png") 54 | || ($_FILES["file"]["type"] == "image/png")) 55 | && in_array($extension, $allowedExts) 56 | ) { 57 | $filesize = $_FILES["file"]["size"]; 58 | $roundsize = round(($filesize/1024), 2); 59 | 60 | if ($filesize >= $MAX_FILESIZE) { 61 | setError(getString('upload_size_exceeded')." ".$roundsize."Kb (max: ".($MAX_FILESIZE/1024)." Kb)"); 62 | return false; 63 | } elseif ($_FILES["file"]["error"] > 0) { 64 | setError($_FILES["file"]["error"]); 65 | return false; 66 | } else { 67 | $time = date('m-d'); 68 | $filename = $time.$_FILES["file"]["name"]; 69 | 70 | if (!file_exists($USER_UPLOADS.$filename)) { 71 | move_uploaded_file($_FILES["file"]["tmp_name"], $USER_UPLOADS.$filename); 72 | } 73 | $_SESSION['logo'] = $filename; 74 | setError(getString('file_uploaded')); 75 | } 76 | } else { 77 | setError("Invalid file"); 78 | return false; 79 | } 80 | } 81 | 82 | if (isset($_SESSION['logo'])) { 83 | $logo = $_SESSION['logo']; 84 | } 85 | 86 | if ($_CONFIG['delete_old_files'] && !$logo) { 87 | $lifetime = $_CONFIG['file_lifetime']; 88 | deleteOldFiles($PNG_WEB_DIR, ($lifetime*3600)); 89 | deleteOldFiles($USER_UPLOADS, ($lifetime*3600)); 90 | } 91 | 92 | if ($logo) { 93 | $thumbsize = $_CONFIG['thumb_size']; 94 | $upthumb = makeThumb($USER_UPLOADS.$logo, $USER_UPLOADS."thumb_".pathinfo($logo, PATHINFO_FILENAME).'.png', true, $thumbsize, $thumbsize); 95 | } 96 | -------------------------------------------------------------------------------- /include/tab-vcard.php: -------------------------------------------------------------------------------- 1 | 6 |
" id="vcard"> 7 |

8 |
9 |
10 | 11 | 16 |
17 |
18 | 19 | 20 |
21 |
22 | 23 | 24 |
25 | 26 |
27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 | 35 |
36 | 37 | 38 |
39 | 40 |
41 | 42 | 43 |
44 | 45 |
46 | 47 | 48 |
49 | 50 |
51 | 52 | 53 |
54 | 55 | 56 |
57 | 58 | 59 |
60 | 61 | 62 |
63 | 64 | 65 |
66 |
67 | 68 | 69 |
70 |
71 | 72 | 73 |
74 |
75 | 76 | 77 |
78 |
79 |
80 | 13 | * @copyright 2015 Nicola Franchini 14 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 15 | * @link http://veno.es/qrcdr/ 16 | */ 17 | $_translations = array( 18 | 'title' => 'QRCDR', 19 | 'description' => 'Online QR Code generator', 20 | 'tags' => 'qrcode, php, script', 21 | '2FA' => '2FA', 22 | 'address' => 'Dirección', 23 | 'add_to_cart' => 'Carro de la compra', 24 | 'account_name' => 'Nombre de usuario', 25 | 'background' => 'Fondo', 26 | 'buy_now' => 'Comprar ahora', 27 | 'city' => 'Ciudad', 28 | 'company' => 'Empresa', 29 | 'country_code' => 'Código internacional', 30 | 'currency' => 'Divisa', 31 | 'does_not_exists' => 'no existe', 32 | 'donations' => 'Donativos', 33 | 'email' => 'E-mail', 34 | 'error_correction_level' => 'Precisión', 35 | 'error_getting_qrcode_image' => 'Immagine QR Code non trovata', 36 | 'error_getting_original_image' => 'Imagen de Código QR​ no encontrada', 37 | 'error_getting_watermark' => 'Miniatura no encontrada', 38 | 'fax' => 'Fax', 39 | 'file_uploaded' => 'Imagen subida', 40 | 'first_name' => 'Nombre', 41 | 'foreground' => 'Color', 42 | 'generate_qrcode' => 'Generar código QR', 43 | 'hidden' => 'Oculto', 44 | 'item_name' => 'Nombre del articulo', 45 | 'item_id' => 'id. de articulo', 46 | 'jobtitle' => 'job title', 47 | 'language' => '', 48 | 'last_name' => 'Apellidos', 49 | 'latitude' => 'Latitud', 50 | 'link' => 'Enlace', 51 | 'longitude' => 'Longitud', 52 | 'location' => 'Ubicación', 53 | 'message' => 'Mensaje', 54 | 'mobile' => 'Móvil', 55 | 'network_name' => 'Nombre de la red', 56 | 'network_type' => 'Tipo de red', 57 | 'no_encryption' => 'Ninguna', 58 | 'password' => 'Contraseña', 59 | 'paypal' => 'PayPal', 60 | 'phone' => 'Llama', 61 | 'phone_number' => 'Número', 62 | 'post_code' => 'Código postal', 63 | 'pp_email' => 'Correo electrónico para recibir pagos', 64 | 'precision_l' => 'L - baja', 65 | 'precision_m' => 'M - media', 66 | 'precision_q' => 'Q - alta', 67 | 'precision_h' => 'H - máxima', 68 | 'price' => 'Precio', 69 | 'provide_more_data' => 'Por favor, introduce más datos', 70 | 'search' => 'Buscar', 71 | 'secret_key' => 'Clave secreta', 72 | 'send_to' => 'Enviar a', 73 | 'send_sms_to' => 'Envíar SMS a', 74 | 'service_provider' => 'Proveedor de servicios', 75 | 'shipping' => 'Envío', 76 | 'size' => 'Tamaño', 77 | 'sms' => 'SMS', 78 | 'state' => 'Provincia', 79 | 'subject' => 'Asunto', 80 | 'tax_rate' => 'Tasa de impuesto', 81 | 'tel' => 'Tel.', 82 | 'text' => 'Texto', 83 | 'thumb_created' => 'Miniatura creada', 84 | 'transparent_background' => 'Fondo transparente', 85 | 'two_factor_authentication' => 'Two Factor Authentication', 86 | 'type' => 'Tipo de pago', 87 | 'upload_or_select_watermark' => 'Sube tu logo o selecciona uno', 88 | 'upload_size_exceeded' => 'Tamaño máximo superado', 89 | 'vcard' => 'V-card', 90 | 'version' => 'Versión', 91 | 'wifi' => 'WI-FI', 92 | 'website' => 'website (URL)', 93 | 'your_temporary_password_is' => 'Su contraseña temporal es', 94 | 'account' => 'Cuenta', 95 | 'amount' => 'Importe', 96 | 'bitcoin' => 'BitCoin', 97 | ); -------------------------------------------------------------------------------- /translations/de.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 Nicola Franchini 14 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 15 | * @link http://veno.es/qrcdr/ 16 | */ 17 | $_translations = array( 18 | 'title' => 'QRCDR', 19 | 'description' => 'Online QR Code generator', 20 | 'tags' => 'qrcode, php, script', 21 | '2FA' => '2FA', 22 | 'address' => 'Adresse', 23 | 'add_to_cart' => 'Add to cart', 24 | 'account_name' => 'Account name', 25 | 'background' => 'Hintergrund', 26 | 'buy_now' => 'Buy now', 27 | 'city' => 'Stadt', 28 | 'company' => 'Firma', 29 | 'country_code' => 'Ländercode', 30 | 'currency' => 'Währung', 31 | 'does_not_exists' => 'existiert nicht', 32 | 'donations' => 'Donations', 33 | 'email' => 'E-mail', 34 | 'error_correction_level' => 'Genauigkeit', 35 | 'error_getting_qrcode_image' => 'QRcode Bild nicht gefunden', 36 | 'error_getting_original_image' => 'Original Bild nicht gefunden', 37 | 'error_getting_watermark' => 'Wasserzeichen nicht gefunden', 38 | 'fax' => 'Fax', 39 | 'file_uploaded' => 'Datei Upload', 40 | 'first_name' => 'Vorname', 41 | 'foreground' => 'Vordergrund', 42 | 'generate_qrcode' => 'Generiere QR Code', 43 | 'hidden' => 'Versteckt', 44 | 'item_name' => 'Artikelname', 45 | 'item_id' => 'Referenznummer', 46 | 'jobtitle' => 'job title', 47 | 'language' => '', 48 | 'last_name' => 'Nachname', 49 | 'latitude' => 'Breitengrad', 50 | 'link' => 'Link', 51 | 'longitude' => 'Längengrad', 52 | 'location' => 'Standort', 53 | 'message' => 'Botschaft', 54 | 'mobile' => 'Mobil', 55 | 'network_name' => 'Netzwerkname', 56 | 'network_type' => 'Netzwerktyp', 57 | 'no_encryption' => 'Keine Verschlüsselung', 58 | 'password' => 'Passwort', 59 | 'paypal' => 'PayPal', 60 | 'phone' => 'Telefonnr.', 61 | 'phone_number' => 'Telefonnummer', 62 | 'post_code' => 'Postleitzahl', 63 | 'pp_email' => 'E-Mail-Adresse für den Zahlungsempfang', 64 | 'precision_l' => 'L - Klein', 65 | 'precision_m' => 'M - Mittel', 66 | 'precision_q' => 'Q - Hoch', 67 | 'precision_h' => 'H - Beste', 68 | 'price' => 'Betrag', 69 | 'provide_more_data' => 'Bitte mehr Daten eingeben', 70 | 'search' => 'Suche', 71 | 'secret_key' => 'Secret Key', 72 | 'send_to' => 'Senden an', 73 | 'send_sms_to' => 'Sende SMS an', 74 | 'service_provider' => 'Service Anbieter', 75 | 'shipping' => 'Versand', 76 | 'size' => 'Größe', 77 | 'sms' => 'SMS', 78 | 'state' => 'Bundesland', 79 | 'subject' => 'Betreff', 80 | 'tax_rate' => 'Steuersatz', 81 | 'tel' => 'Tel', 82 | 'text' => 'Text', 83 | 'thumb_created' => 'Thumb erstellt', 84 | 'transparent_background' => 'Transparenter Hintergrund', 85 | 'two_factor_authentication' => 'Zweiwege Authentifikation', 86 | 'type' => 'Payment type', 87 | 'upload_or_select_watermark' => 'Lade dein Logo hoch oder wähle eines der folgenden Wasserzeichen', 88 | 'upload_size_exceeded' => 'Uploadlimit überschritten', 89 | 'vcard' => 'V-Card', 90 | 'version' => 'Ausführung', 91 | 'wifi' => 'WI-FI', 92 | 'website' => 'website (URL)', 93 | 'your_temporary_password_is' => 'Dein temporäres Passwort lautet', 94 | 'account' => 'Konto', 95 | 'amount' => 'Menge', 96 | 'bitcoin' => 'BitCoin', 97 | ); -------------------------------------------------------------------------------- /translations/pt.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 Nicola Franchini 14 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 15 | * @link http://veno.es/qrcdr/ 16 | */ 17 | $_translations = array( 18 | 'title' => 'QRCDR', 19 | 'description' => 'Online QR Code generator', 20 | 'tags' => 'qrcode, php, script', 21 | '2FA' => '2FA', 22 | 'address' => 'Endereço', 23 | 'add_to_cart' => 'Add to cart', 24 | 'account_name' => 'Nome da Conta', 25 | 'background' => 'Por detrás', 26 | 'buy_now' => 'Buy now', 27 | 'city' => 'Cidade', 28 | 'company' => 'Empresa', 29 | 'country_code' => 'Código do País', 30 | 'currency' => 'Currency', 31 | 'does_not_exists' => 'Não existe', 32 | 'donations' => 'Donations', 33 | 'email' => 'E-mail', 34 | 'error_correction_level' => 'Precisão', 35 | 'error_getting_qrcode_image' => 'Imagem QRcode não encontrada', 36 | 'error_getting_original_image' => 'Imagem Original image não encontrada', 37 | 'error_getting_watermark' => 'Marca de água não encontrada', 38 | 'fax' => 'Fax', 39 | 'file_uploaded' => 'Submeter ficheiro', 40 | 'first_name' => 'Primeiro Nome', 41 | 'foreground' => 'Primeiro Plano', 42 | 'generate_qrcode' => 'Gerar o código QR', 43 | 'hidden' => 'Oculto', 44 | 'item_name' => 'Item name', 45 | 'item_id' => 'Item ID', 46 | 'jobtitle' => 'job title', 47 | 'language' => '', 48 | 'last_name' => 'Último Nome', 49 | 'latitude' => 'Latitude', 50 | 'link' => 'Link', 51 | 'longitude' => 'Longitude', 52 | 'location' => 'Localidade', 53 | 'message' => 'Mensagem', 54 | 'mobile' => 'Telemóvel', 55 | 'network_name' => 'Nome da Rede', 56 | 'network_type' => 'Tipo de Rede', 57 | 'no_encryption' => 'Sem encriptação', 58 | 'password' => 'Palavra Passe', 59 | 'paypal' => 'PayPal', 60 | 'phone' => 'Chamada', 61 | 'phone_number' => 'Numero de Telefone', 62 | 'post_code' => 'Código Postal', 63 | 'pp_email' => 'Email address to receive payments', 64 | 'precision_l' => 'L - Baixo', 65 | 'precision_m' => 'M - Médio', 66 | 'precision_q' => 'Q - Alto', 67 | 'precision_h' => 'H - Elevado', 68 | 'price' => 'Price', 69 | 'provide_more_data' => 'Por favor forneça mais dados', 70 | 'search' => 'Pesquisa', 71 | 'secret_key' => 'Chave Secreta', 72 | 'send_to' => 'Enviar para', 73 | 'send_sms_to' => 'Enviar sms para', 74 | 'service_provider' => 'Prestador de Serviços', 75 | 'shipping' => 'Shipping', 76 | 'size' => 'Tamanho', 77 | 'sms' => 'SMS', 78 | 'state' => 'Distrito', 79 | 'subject' => 'Assunto', 80 | 'tax_rate' => 'Tax rate', 81 | 'tel' => 'Telefone', 82 | 'text' => 'Texto', 83 | 'thumb_created' => 'Miniatura criada', 84 | 'transparent_background' => 'Fundo transparente', 85 | 'two_factor_authentication' => 'Dois factores de Autenticação', 86 | 'type' => 'Payment type', 87 | 'upload_or_select_watermark' => 'Submeter o seu Logotipo ou seleccione uma Marca de Água', 88 | 'upload_size_exceeded' => 'Tamanho excedido para envio', 89 | 'vcard' => 'V-card', 90 | 'version' => 'Versão', 91 | 'wifi' => 'WI-FI', 92 | 'website' => 'website (URL)', 93 | 'your_temporary_password_is' => 'A sua password temporária é', 94 | 'account' => 'Conta', 95 | 'amount' => 'Montante', 96 | 'bitcoin' => 'BitCoin', 97 | ); -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 11 | * @copyright 2015-2019 Nicola Franchini 12 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 13 | * @version 3.3 14 | * @link http://veno.es/qrcdr/ 15 | */ 16 | error_reporting(E_ALL ^ E_NOTICE); 17 | // error_reporting(E_ALL); 18 | // ini_set('display_errors', 1); 19 | 20 | require dirname(__FILE__)."/config.php"; 21 | 22 | session_name($_CONFIG['session_name']); 23 | session_start(); 24 | 25 | if (isset($_GET['reset'])) { 26 | unset($_SESSION['logo']); 27 | } 28 | 29 | global $_ERROR; 30 | 31 | if (isset($_SESSION['error'])) { 32 | $_ERROR = $_SESSION['error']; 33 | unset($_SESSION['error']); 34 | } 35 | 36 | require dirname(__FILE__)."/include/functions.php"; 37 | 38 | $browserDetect = array_key_exists('detect_browser_lang', $_CONFIG) ? $_CONFIG['detect_browser_lang'] : false; 39 | $defaultlang = array_key_exists('lang', $_CONFIG) ? $_CONFIG['lang'] : 'en'; 40 | $color_primary = array_key_exists('color_primary', $_CONFIG) ? $_CONFIG['color_primary'] : false; 41 | 42 | $lang = getLang($defaultlang, $browserDetect); 43 | 44 | if (file_exists(dirname(__FILE__)."/translations/".$lang.".php")) { 45 | include dirname(__FILE__)."/translations/".$lang.".php"; 46 | } 47 | 48 | require dirname(__FILE__)."/include/head.php"; 49 | require dirname(__FILE__)."/lib/countrycodes.php"; 50 | 51 | ?> 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | <?php echo getString('title'); ?> 60 | 61 | 62 | 63 | 64 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 85 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /translations/en.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 Nicola Franchini 14 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 15 | * @link http://veno.es/qrcdr/ 16 | */ 17 | $_translations = array( 18 | 'title' => 'QRCDR', 19 | 'description' => 'Online QR Code generator', 20 | 'tags' => 'qrcode, php, script', 21 | '2FA' => '2FA', 22 | 'account' => 'Account', 23 | 'address' => 'Address', 24 | 'add_to_cart' => 'Add to cart', 25 | 'account_name' => 'Account name', 26 | 'amount' => 'Amount', 27 | 'background' => 'Background', 28 | 'bitcoin' => 'BitCoin', 29 | 'buy_now' => 'Buy now', 30 | 'city' => 'City', 31 | 'company' => 'Company', 32 | 'country_code' => 'Country code', 33 | 'currency' => 'Currency', 34 | 'does_not_exists' => 'does not exists', 35 | 'donations' => 'Donations', 36 | 'email' => 'E-mail', 37 | 'error_correction_level' => 'Precision', 38 | 'error_getting_qrcode_image' => 'QRcode image not found', 39 | 'error_getting_original_image' => 'Original image not found', 40 | 'error_getting_watermark' => 'Watermark not found', 41 | 'fax' => 'Fax', 42 | 'file_uploaded' => 'File Uploaded', 43 | 'first_name' => 'First name', 44 | 'foreground' => 'Foreground', 45 | 'generate_qrcode' => 'Generate QR Code', 46 | 'hidden' => 'Hidden', 47 | 'item_name' => 'Item name', 48 | 'item_id' => 'Item ID', 49 | 'jobtitle' => 'job title', 50 | 'language' => '', 51 | 'last_name' => 'Last name', 52 | 'latitude' => 'Latitude', 53 | 'link' => 'Link', 54 | 'longitude' => 'Longitude', 55 | 'location' => 'Location', 56 | 'message' => 'Message', 57 | 'mobile' => 'Mobile', 58 | 'network_name' => 'Network name', 59 | 'network_type' => 'Network type', 60 | 'no_encryption' => 'No encryption', 61 | 'password' => 'Password', 62 | 'paypal' => 'PayPal', 63 | 'phone' => 'Call', 64 | 'phone_number' => 'Phone number', 65 | 'post_code' => 'Post code', 66 | 'pp_email' => 'Email address to receive payments', 67 | 'precision_l' => 'L - Smallest', 68 | 'precision_m' => 'M - Medium', 69 | 'precision_q' => 'Q - High', 70 | 'precision_h' => 'H - Best', 71 | 'price' => 'Price', 72 | 'provide_a_valid_name' => 'Please enter a valid name', 73 | 'provide_a_valid_number' => 'Please enter a valid number', 74 | 'provide_a_valid_email' => 'Please enter a valid e-mail address', 75 | 'provide_a_valid_url' => 'Please enter a valid URL', 76 | 'provide_more_data' => 'Please provide more data', 77 | 'search' => 'Search', 78 | 'secret_key' => 'Secret Key', 79 | 'send_to' => 'Send to', 80 | 'send_sms_to' => 'Send sms to', 81 | 'service_provider' => 'Service provider', 82 | 'shipping' => 'Shipping', 83 | 'size' => 'size', 84 | 'sms' => 'SMS', 85 | 'state' => 'State', 86 | 'style' => 'Style', 87 | 'subject' => 'Subject', 88 | 'tax_rate' => 'Tax rate', 89 | 'tel' => 'Phone', 90 | 'text' => 'Text', 91 | 'thumb_created' => 'Thumb created', 92 | 'transparent_background' => 'Transparent background', 93 | 'two_factor_authentication' => 'Two Factor Authentication', 94 | 'type' => 'Payment type', 95 | 'upload_or_select_watermark' => 'Upload your logo or select a watermark', 96 | 'upload_size_exceeded' => 'Upload size exceeded', 97 | 'vcard' => 'V-card', 98 | 'version' => 'Version', 99 | 'wifi' => 'WI-FI', 100 | 'website' => 'website (URL)', 101 | 'your_temporary_password_is' => 'your temporary password is', 102 | ); -------------------------------------------------------------------------------- /translations/it.php: -------------------------------------------------------------------------------- 1 | 13 | * @copyright 2015 Nicola Franchini 14 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 15 | * @link http://veno.es/qrcdr/ 16 | */ 17 | $_translations = array( 18 | 'title' => 'QRCDR', 19 | 'description' => 'Online QR Code generator', 20 | 'tags' => 'qrcode, php, script', 21 | '2FA' => '2FA', 22 | 'address' => 'Indirizzo', 23 | 'add_to_cart' => 'Carrello', 24 | 'account_name' => 'Nome utente', 25 | 'background' => 'Sfondo', 26 | 'buy_now' => 'Paga adesso', 27 | 'city' => 'Città', 28 | 'company' => 'Azienda', 29 | 'country_code' => 'Codice paese', 30 | 'currency' => 'Valuta', 31 | 'does_not_exists' => 'non esiste', 32 | 'donations' => 'Donazioni', 33 | 'email' => 'E-mail', 34 | 'error_correction_level' => 'Precisione', 35 | 'error_getting_qrcode_image' => 'Immagine QR Code non trovata', 36 | 'error_getting_original_image' => 'Immagine originale non trovata', 37 | 'error_getting_watermark' => 'Miniatura non trovata', 38 | 'fax' => 'Fax', 39 | 'file_uploaded' => 'Immagine caricata', 40 | 'first_name' => 'Nome', 41 | 'foreground' => 'Colore', 42 | 'generate_qrcode' => 'Genera QR Code', 43 | 'hidden' => 'Nascosto', 44 | 'item_name' => 'Nome oggetto', 45 | 'item_id' => 'Cod.', 46 | 'jobtitle' => 'job title', 47 | 'language' => '', 48 | 'last_name' => 'Cognome', 49 | 'latitude' => 'Latitudine', 50 | 'link' => 'Link', 51 | 'longitude' => 'Longitudine', 52 | 'location' => 'Posizione', 53 | 'message' => 'Messaggio', 54 | 'mobile' => 'Cellulare', 55 | 'network_name' => 'Nome network', 56 | 'network_type' => 'Sicurezza', 57 | 'no_encryption' => 'Nessuna ', 58 | 'paypal' => 'PayPal', 59 | 'password' => 'Password', 60 | 'phone' => 'Chiama', 61 | 'phone_number' => 'Numero', 62 | 'post_code' => 'C.A.P.', 63 | 'pp_email' => 'Indirizzo email per la ricezione di pagamenti', 64 | 'precision_l' => 'L - bassa', 65 | 'precision_m' => 'M - media', 66 | 'precision_q' => 'Q - alta', 67 | 'precision_h' => 'H - massima', 68 | 'price' => 'Prezzo', 69 | 'provide_a_valid_number' => 'Per favore fornisci un indirizzo e-mail valido', 70 | 'provide_a_valid_email' => 'Per favore fornisci un indirizzo e-mail valido', 71 | 'provide_a_valid_url' => 'Per favore fornisci un indirizzo valido', 72 | 'provide_more_data' => 'Per favore fornisci maggiorni dati', 73 | 'search' => 'Cerca', 74 | 'secret_key' => 'Chiave segreta', 75 | 'send_to' => 'Invia a', 76 | 'send_sms_to' => 'Invia sms a', 77 | 'service_provider' => 'Service provider', 78 | 'shipping' => 'Spedizione', 79 | 'size' => 'dimensioni', 80 | 'sms' => 'SMS', 81 | 'state' => 'Stato', 82 | 'subject' => 'Soggetto', 83 | 'tax_rate' => 'Aliquota', 84 | 'tel' => 'Tel.', 85 | 'text' => 'Testo', 86 | 'thumb_created' => 'Miniatura creata', 87 | 'transparent_background' => 'Sfondo trasparente', 88 | 'two_factor_authentication' => 'Two Factor Authentication', 89 | 'type' => 'Tipo di pagamento', 90 | 'upload_or_select_watermark' => 'Carica la tua immagine o scegli tra quelle presenti', 91 | 'upload_size_exceeded' => 'Dimensioni massime superate', 92 | 'vcard' => 'V-card', 93 | 'version' => 'Versione', 94 | 'wifi' => 'WI-FI', 95 | 'website' => 'sito web (URL)', 96 | 'your_temporary_password_is' => 'La tua password temporanea è', 97 | 'account' => 'Account', 98 | 'amount' => 'Importo', 99 | 'bitcoin' => 'BitCoin', 100 | ); -------------------------------------------------------------------------------- /include/tab-paypal.php: -------------------------------------------------------------------------------- 1 | 6 |
" id="paypal"> 7 |

8 |
9 | 10 |
11 | 12 | 17 |
18 | 19 |
20 | 21 | 22 | 23 |
24 |
25 | 26 |
27 |
28 | 29 | 30 |
31 | 32 |
33 | 34 | 35 |
36 |
37 | 38 |
39 |
40 | 41 | 42 |
43 | 44 |
45 | 46 | 64 |
65 | 66 |
67 | 68 |
69 | 70 |
71 | USD 72 |
73 |
74 |
75 |
76 | 77 |
78 | 79 |
80 | % 81 |
82 |
83 |
84 | 85 |
86 |
87 | 2 | Logo by @reallinfo 3 | 4 | 5 | # Bootstrap Colorpicker 6 | 7 | 8 | 9 | [Bootstrap Colorpicker](https://github.com/farbelous/bootstrap-colorpicker/) is a modular color picker plugin for Bootstrap 4. 10 | 11 | [![Build Status](https://img.shields.io/travis/farbelous/bootstrap-colorpicker/master.svg?style=flat-square)](https://travis-ci.org/farbelous/bootstrap-colorpicker) 12 | [![npm](https://img.shields.io/npm/v/bootstrap-colorpicker.svg?style=flat-square)](https://www.npmjs.com/package/bootstrap-colorpicker) 13 | 14 | ## Install 15 | You can get the latest version in many different ways: 16 | 17 | - Downloading [a ZIP file from the releases](https://github.com/farbelous/bootstrap-colorpicker/releases) 18 | - Cloning using Git: `git clone https://github.com/farbelous/bootstrap-colorpicker.git` 19 | - Installing via NPM: `npm install bootstrap-colorpicker` 20 | - Installing via Yarn: `yarn add bootstrap-colorpicker` 21 | - Installing via Composer: `composer require itsjavi/bootstrap-colorpicker` 22 | 23 | Note that the `dist` files are only distributed via the NPM and Yarn installations. 24 | 25 | For the rest methods, you will need to generate the files initializing the project with `yarn install` 26 | and then building the code using `npm run build`. 27 | 28 | ## Versions 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 51 | 52 | 53 | 57 | 58 | 65 | 66 | 67 |
Colorpicker versionCompatible Bootstrap versionDependencies
41 | v2.x
42 | Documentation 43 |
(any) 46 |
    47 |
  • jQuery >= 1.10
  • 48 |
  • Bootstrap CSS (input addon)
  • 49 |
50 |
54 | v3.x
55 | Documentation 56 |
Bootstrap 4 59 |
    60 |
  • jQuery >= 2.1.0
  • 61 |
  • Bootstrap CSS (input addon, popover)
  • 62 |
  • Bootstrap JS Bundle (popover)
  • 63 |
64 |
68 | 69 | 70 | Note that the plugin may work without Bootstrap if your code is not using any of the mentioned Bootstrap 71 | dependencies. 72 | 73 | 74 | ## Basic example 75 | 76 | ```html 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
86 |

Bootstrap Colorpicker Demo

87 | 88 |
89 | 90 | 91 | 92 | 103 | 104 | ``` 105 | 106 | ## Contributions 107 | * [Issues](https://github.com/farbelous/bootstrap-colorpicker/issues) 108 | * [Pull Requests](https://github.com/farbelous/bootstrap-colorpicker/pulls) 109 | * [Milestones](https://github.com/farbelous/bootstrap-colorpicker/milestones) 110 | * [Planned Features](https://github.com/farbelous/bootstrap-colorpicker/projects) 111 | 112 | This project exists thanks to all the [people who contribute](https://github.com/farbelous/bootstrap-colorpicker/graphs/contributors). 113 | 114 | Please read [CONTRIBUTING](https://github.com/farbelous/bootstrap-colorpicker/blob/master/.github/CONTRIBUTING.md) 115 | before sending a pull request or issue. 116 | 117 | ## License 118 | The MIT License (MIT). 119 | Please see the [License File](https://github.com/farbelous/bootstrap-colorpicker/blob/master/LICENSE) for more information. 120 | 121 | ## Credits 122 | 123 | Written and maintained by [Javi Aguilar](https://itsjavi.com) and all other contributors. 124 | 125 | *Based on Stefan Petre's color picker (2013).* 126 | 127 | *Thanks to JetBrains for supporting this project.* 128 | -------------------------------------------------------------------------------- /js/ie8.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); 5 | 6 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 7 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 8 | * */ 9 | 10 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b li > a span{ 40 | font-size: .8em; 41 | } 42 | label { 43 | font-size: .9em; 44 | } 45 | 46 | .btn-file { 47 | position: relative; 48 | overflow: hidden; 49 | } 50 | .btn-file input[type=file] { 51 | position: absolute; 52 | top: 0; 53 | right: 0; 54 | min-width: 100%; 55 | min-height: 100%; 56 | font-size: 100px; 57 | text-align: right; 58 | filter: alpha(opacity=0); 59 | opacity: 0; 60 | outline: none; 61 | background: white; 62 | cursor: inherit; 63 | display: block; 64 | } 65 | 66 | .logoselecta img{ 67 | width: 2em; 68 | } 69 | 70 | .styleselecta img{ 71 | width: 2.5em; 72 | } 73 | /* 74 | * Headings 75 | */ 76 | h1{ 77 | font-size: 2.1rem; 78 | } 79 | .display-4 { 80 | font-size: 2.5rem; 81 | } 82 | .display-3 { 83 | font-size: 3rem; 84 | } 85 | .display-2 { 86 | font-size: 3.5rem; 87 | } 88 | .display-1 { 89 | font-size: 4rem; 90 | } 91 | 92 | @media (min-width: 576px) { 93 | h1{ 94 | font-size: 2.2rem; 95 | } 96 | .display-4 { 97 | font-size: 3rem; 98 | } 99 | .display-3 { 100 | font-size: 3.5rem; 101 | } 102 | .display-2 { 103 | font-size: 4rem; 104 | } 105 | .display-1 { 106 | font-size: 4.5rem; 107 | } 108 | } 109 | 110 | @media (min-width: 768px) { 111 | h1{ 112 | font-size: 2.3rem; 113 | } 114 | .display-4 { 115 | font-size: 3.5rem; 116 | } 117 | .display-3 { 118 | font-size: 4rem; 119 | } 120 | .display-2 { 121 | font-size: 4.5rem; 122 | } 123 | .display-1 { 124 | font-size: 5rem; 125 | } 126 | } 127 | 128 | @media (min-width: 992px) { 129 | h1{ 130 | font-size: 2.4rem; 131 | } 132 | .display-4 { 133 | font-size: 4rem; 134 | } 135 | .display-3 { 136 | font-size: 4.5rem; 137 | } 138 | .display-2 { 139 | font-size: 5rem; 140 | } 141 | .display-1 { 142 | font-size: 5.5rem; 143 | } 144 | } 145 | 146 | @media (min-width: 1200px) { 147 | 148 | h1{ 149 | font-size: 2.5rem; 150 | } 151 | .display-4 { 152 | font-size: 4.5rem; 153 | } 154 | .display-3 { 155 | font-size: 5rem; 156 | } 157 | .display-2 { 158 | font-size: 5.5rem; 159 | } 160 | .display-1 { 161 | font-size: 6rem; 162 | } 163 | } 164 | 165 | /* 166 | * Google map 167 | */ 168 | #map-canvas img { 169 | max-width: none; 170 | } 171 | #map-canvas { 172 | width: 100%; 173 | height: 350px; 174 | padding: 0px; 175 | float: left; 176 | } 177 | .controls { 178 | margin-top: 16px; 179 | border: 1px solid transparent; 180 | box-sizing: border-box; 181 | -moz-box-sizing: border-box; 182 | height: 32px; 183 | outline: none; 184 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); 185 | } 186 | #pac-input, #latlong input{ 187 | background-color: #fff; 188 | padding: 0 11px 0 13px; 189 | font-family: Roboto; 190 | font-size: 15px; 191 | font-weight: 300; 192 | text-overflow: ellipsis; 193 | } 194 | #pac-input{ 195 | width: 50%; 196 | } 197 | #latbox, #lngbox{ 198 | width: 20%; 199 | } 200 | #pac-input:focus, #latlong input:focus { 201 | border-color: #4d90fe; 202 | } 203 | .placeresult{ 204 | float: left; 205 | width: 100%; 206 | padding: 10px; 207 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 208 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 209 | position: relative; 210 | } 211 | /* 212 | * QR code placeholder 213 | */ 214 | .wrapresult, .resultholder{ 215 | position: relative; 216 | } 217 | .placeresult{ 218 | float: left; 219 | width: 100%; 220 | padding: 10px; 221 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 222 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 223 | position: relative; 224 | } 225 | .preloader{ 226 | position: absolute; 227 | left: 0; 228 | top: 0; 229 | width: 100%; 230 | height: 100%; 231 | background: #fff; 232 | font-size: 36px; 233 | display: none; 234 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 235 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 236 | } 237 | .preloader .fa-cog{ 238 | position: absolute; 239 | left: 50%; 240 | top: 50%; 241 | margin-left: -18px; 242 | margin-top: -18px; 243 | } 244 | 245 | .was-validated .form-control:valid { 246 | background-image: none; 247 | border-color: #ced4da; 248 | } 249 | .was-validated .custom-select:valid{ 250 | border-color: #ced4da; 251 | } 252 | 253 | .custom-control-input.is-valid ~ .custom-control-label, .was-validated .custom-control-input:valid ~ .custom-control-label{ 254 | color: inherit; 255 | } 256 | 257 | .was-validated .custom-select:invalid, 258 | .was-validated .custom-select:valid { 259 | background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px; 260 | } 261 | .overlay-gradient{ 262 | position: absolute; 263 | left: 0; 264 | top: 0; 265 | width: 100%; 266 | height: 100%; 267 | background: rgba(255,255,255,0.2); 268 | background: -moz-linear-gradient(-45deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%); 269 | background: -webkit-gradient(left top, right bottom, color-stop(0%, rgba(255,255,255,0.2)), color-stop(100%, rgba(255,255,255,0))); 270 | background: -webkit-linear-gradient(-45deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%); 271 | background: -o-linear-gradient(-45deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%); 272 | background: -ms-linear-gradient(-45deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%); 273 | background: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%); 274 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ffffff', GradientType=1 ); 275 | } -------------------------------------------------------------------------------- /js/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4. 3 | * @package bootstrap-colorpicker 4 | * @version v3.1.1 5 | * @license MIT 6 | * @link https://farbelous.github.io/bootstrap-colorpicker/ 7 | * @link https://github.com/farbelous/bootstrap-colorpicker.git 8 | */.colorpicker{position:relative;display:none;font-size:inherit;color:inherit;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);padding:.75rem .75rem;width:148px;border-radius:4px;-webkit-box-sizing:content-box;box-sizing:content-box}.colorpicker.colorpicker-disabled,.colorpicker.colorpicker-disabled *{cursor:default!important}.colorpicker div{position:relative}.colorpicker-popup{position:absolute;top:100%;left:0;float:left;margin-top:1px;z-index:1060}.colorpicker-popup.colorpicker-bs-popover-content{position:relative;top:auto;left:auto;float:none;margin:0;z-index:initial;border:none;padding:.25rem 0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.colorpicker:after,.colorpicker:before{content:"";display:table;clear:both;line-height:0}.colorpicker-clear{clear:both;display:block}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:auto;right:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:auto;right:7px}.colorpicker.colorpicker-with-alpha{width:170px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-saturation{position:relative;width:126px;height:126px;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(black)),-webkit-gradient(linear,left top,right top,from(white),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,transparent 0,#000 100%),linear-gradient(to right,#fff 0,rgba(255,255,255,0) 100%);cursor:crosshair;float:left;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);margin-bottom:6px}.colorpicker-saturation .colorpicker-guide{display:block;height:6px;width:6px;border-radius:6px;border:1px solid #000;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.8);box-shadow:0 0 0 1px rgba(255,255,255,.8);position:absolute;top:0;left:0;margin:-3px 0 0 -3px}.colorpicker-alpha,.colorpicker-hue{position:relative;width:16px;height:126px;float:left;cursor:row-resize;margin-left:6px;margin-bottom:6px}.colorpicker-alpha-color{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-alpha-color,.colorpicker-hue{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-alpha .colorpicker-guide,.colorpicker-hue .colorpicker-guide{display:block;height:4px;background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.4);position:absolute;top:0;left:0;margin-left:-2px;margin-top:-2px;right:-2px;z-index:1}.colorpicker-hue{background:-webkit-gradient(linear,left bottom,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to top,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px;display:none}.colorpicker-bar{min-height:16px;margin:6px 0 0 0;clear:both;text-align:center;font-size:10px;line-height:normal;max-width:100%;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-bar:before{content:"";display:table;clear:both}.colorpicker-bar.colorpicker-bar-horizontal{height:126px;width:16px;margin:0 0 6px 0;float:left}.colorpicker-input-addon{position:relative}.colorpicker-input-addon i{display:inline-block;cursor:pointer;vertical-align:text-top;height:16px;width:16px;position:relative}.colorpicker-input-addon:before{content:"";position:absolute;width:16px;height:16px;display:inline-block;vertical-align:text-top;background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none;z-index:auto;vertical-align:text-bottom}.colorpicker.colorpicker-horizontal{width:126px;height:auto}.colorpicker.colorpicker-horizontal .colorpicker-bar{width:126px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{float:none;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{float:none;width:126px;height:16px;cursor:col-resize;margin-left:0;margin-top:6px;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide,.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide{position:absolute;display:block;bottom:-2px;left:0;right:auto;height:auto;width:4px}.colorpicker.colorpicker-horizontal .colorpicker-hue{background:-webkit-gradient(linear,right top,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to left,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-inline:before,.colorpicker-no-arrow:before,.colorpicker-popup.colorpicker-bs-popover-content:before{content:none;display:none}.colorpicker-inline:after,.colorpicker-no-arrow:after,.colorpicker-popup.colorpicker-bs-popover-content:after{content:none;display:none}.colorpicker-alpha.colorpicker-visible,.colorpicker-bar.colorpicker-visible,.colorpicker-hue.colorpicker-visible,.colorpicker-saturation.colorpicker-visible,.colorpicker.colorpicker-visible{display:block}.colorpicker-alpha.colorpicker-hidden,.colorpicker-bar.colorpicker-hidden,.colorpicker-hue.colorpicker-hidden,.colorpicker-saturation.colorpicker-hidden,.colorpicker.colorpicker-hidden{display:none}.colorpicker-inline.colorpicker-visible{display:inline-block}.colorpicker.colorpicker-disabled:after{border:none;content:'';display:block;width:100%;height:100%;background:rgba(233,236,239,.33);top:0;left:0;right:auto;z-index:2;position:absolute}.colorpicker.colorpicker-disabled .colorpicker-guide{display:none}.colorpicker-preview{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-preview>div{position:absolute;left:0;top:0;width:100%;height:100%}.colorpicker-bar.colorpicker-swatches{-webkit-box-shadow:none;box-shadow:none;height:auto}.colorpicker-swatches--inner{clear:both;margin-top:-6px}.colorpicker-swatch{position:relative;cursor:pointer;float:left;height:16px;width:16px;margin-right:6px;margin-top:6px;margin-left:0;display:block;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-swatch--inner{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-swatch:nth-of-type(7n+0){margin-right:0}.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0){margin-right:6px}.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0){margin-right:0}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0){margin-right:0}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0){margin-right:6px}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0){margin-right:6px}.colorpicker-swatch:last-of-type:after{content:"";display:table;clear:both}.colorpicker-element input[dir=rtl],.colorpicker-element[dir=rtl] input,[dir=rtl] .colorpicker-element input{direction:ltr;text-align:right} 9 | /*# sourceMappingURL=bootstrap-colorpicker.min.css.map */ 10 | -------------------------------------------------------------------------------- /js/all.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * QRCDR setup 3 | */ 4 | // Print QRCODE 5 | var win = null; 6 | function printIt(printThis) { 7 | 8 | var infopanel = ""; 9 | 10 | // EDIT to print data 11 | /* 12 | var thisdata = $("#create").find(".tab-pane.active :input").filter(function(index, element) { 13 | return $(element).val() != ""; 14 | }).serializeArray(); 15 | 16 | var formData = JSON.stringify(thisdata); 17 | var dede = $.parseJSON( formData ); 18 | 19 | $('.infopanel').html(""); 20 | 21 | $.each(dede, function(i, item) { 22 | var dato = item.name + ": " + item.value; 23 | infopanel += "
" + dato; 24 | }); 25 | */ 26 | // EDIT to print data END 27 | 28 | var title = document.title; 29 | var img = $(printThis).find('img').attr('src'); 30 | var content = ''+title+''+infopanel+''; 31 | win = window.open(); 32 | self.focus(); 33 | win.document.open(); 34 | win.document.write(content); 35 | win.document.close(); 36 | 37 | win.onload = function (){ 38 | win.print(); 39 | win.close(); 40 | } 41 | } 42 | 43 | function initialize() { 44 | 45 | if ( $( "#map-canvas" ).length ) { 46 | // Google MAP 47 | var start = new google.maps.LatLng(40.7127837, -74.00594130000002); 48 | var marker; 49 | var map; 50 | var input = (document.getElementById('pac-input')); 51 | var getdata = (document.getElementById('latlong')); 52 | var latbox = document.getElementById('latbox'); 53 | var lngbox = document.getElementById('lngbox'); 54 | 55 | var searchBox; 56 | 57 | var mapOptions = { 58 | zoom: 10, 59 | center: start 60 | }; 61 | 62 | map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 63 | searchBox = new google.maps.places.SearchBox((input)); 64 | marker = new google.maps.Marker({ 65 | map:map, 66 | draggable:true, 67 | animation: google.maps.Animation.DROP, 68 | position: start 69 | }); 70 | 71 | google.maps.event.addListener(marker, 'dragend', function(event) { 72 | var latlang = marker.getPosition().lat()+","+marker.getPosition().lng(); 73 | updateposition(latlang); 74 | }); 75 | 76 | map.controls[google.maps.ControlPosition.TOP_LEFT].push(getdata); 77 | 78 | if ((latbox.value.length > 0 ) && (lngbox.value.length > 0)) { 79 | setfirst(Number(latbox.value), Number(lngbox.value)); 80 | } 81 | 82 | google.maps.event.addListener(searchBox, 'places_changed', function() { 83 | var places = searchBox.getPlaces(); 84 | 85 | if (places.length == 0) { 86 | return; 87 | } 88 | 89 | for (var i = 0, place; place = places[i]; i++) { 90 | marker.setPosition(place.geometry.location); 91 | map.setCenter(place.geometry.location); 92 | updateposition(); 93 | } 94 | }); 95 | } 96 | 97 | function updateposition(){ 98 | latbox.value = marker.getPosition().lat(); 99 | lngbox.value = marker.getPosition().lng(); 100 | } 101 | 102 | function setfirst(latvar, lngvar){ 103 | map.setCenter({lat: latvar, lng: lngvar}); 104 | marker.setPosition({lat: latvar, lng: lngvar}); 105 | } 106 | } 107 | 108 | $('#submitcreate').on('click', function() { 109 | 110 | var $myForm = $('#create'); 111 | 112 | if (!$myForm[0].checkValidity()) { 113 | // If the form is invalid, submit it. The form won't actually submit; 114 | // this will just cause the browser to display the native HTML5 error messages. 115 | $myForm.find(':submit').click(); 116 | } 117 | 118 | $('.colorpickerback').colorpicker('enable'); 119 | 120 | $('.preloader').fadeIn(100,function(){ 121 | 122 | var sendata = $("#create :input") 123 | .filter(function(index, element) { 124 | return $(element).val() != ""; 125 | }) 126 | .serialize(); 127 | 128 | $.ajax({ 129 | type: "POST", 130 | url: "include/process.php", 131 | cache: false, 132 | data: sendata 133 | }) 134 | .fail(function(error) { 135 | $("#alert_placeholder").html(''); 136 | }) 137 | .done(function(msg) { 138 | 139 | if ($('#trans-bg').prop('checked')) { 140 | $('.colorpickerback').colorpicker('disable') 141 | } 142 | 143 | var result = JSON.parse(msg); 144 | if (result.hasOwnProperty('errore')) { 145 | $("#alert_placeholder").html(''); 146 | $('.resultholder img').attr('src', result.placeholder); 147 | $('.preloader').fadeOut('slow'); 148 | } else { 149 | d = new Date(); 150 | $(".resultholder img").one("load", function() { 151 | 152 | $(this).attr('src', result.placeholder+'?t='+d.getTime() ); 153 | 154 | $("#alert_placeholder").html(''); 155 | var linksholder = ' PNG'; 156 | linksholder = linksholder + ' SVG'; 157 | // linksholder = linksholder + ' EPS'; 158 | linksholder = linksholder + ''; 159 | 160 | $('.linksholder').html(linksholder); 161 | 162 | $('.print').click(function(){ 163 | printIt('.resultholder'); 164 | }); 165 | 166 | $('.preloader').fadeOut('slow'); 167 | 168 | }).each(function() { 169 | if(this.complete) { 170 | // $(this).load(); // For jQuery < 3.0 171 | $(this).trigger('load'); // For jQuery >= 3.0 172 | } 173 | }); 174 | } 175 | }); 176 | }); 177 | }); 178 | 179 | $(document).ready(function(){ 180 | 181 | // SET CURRENCY 182 | $("#setcurrency").change(function(){ 183 | var value = $(this).val(); 184 | $("#getcurrency").html(value); 185 | }); 186 | 187 | // PAYPAL BUTTON TYPE 188 | $("#pp_type").change(function(){ 189 | var value = $(this).val(); 190 | 191 | if(value === '_donations') { 192 | $(".nodonation").addClass('hidden'); 193 | $(".yesdonation").removeClass('col-sm-3'); 194 | } else { 195 | $(".nodonation").removeClass('hidden'); 196 | $(".yesdonation").addClass('col-sm-3'); 197 | } 198 | }); 199 | 200 | // COLOR PICKER 201 | var backcol = $('.colorpickerback').val(); 202 | var frontcol = $('.colorpickerfront').val(); 203 | $('.getcol').css('background',backcol); 204 | $('.getcol').css('color',frontcol); 205 | 206 | $('#file').change(function(){ 207 | $('#sottometti').submit(); 208 | }); 209 | 210 | $(".alert").alert(); 211 | 212 | $('.colorpickerback').colorpicker().on('change', function(ev){ 213 | var color = ev.color.toString('hex'); 214 | $('.getcol').css('background',color); 215 | }); 216 | $('.colorpickerfront').colorpicker().on('change', function(ev){ 217 | var color = ev.color.toString('hex'); 218 | $('.getcol').css('color',color); 219 | }); 220 | 221 | $('.tooltipper').tooltip(); 222 | }); 223 | 224 | // Translarent background 225 | $(document).on('change', '#trans-bg', function(){ 226 | if ($(this).prop('checked')) { 227 | $('.colorpickerback').colorpicker('setValue', '#ffffff'); 228 | $('.colorpickerback').colorpicker('disable') 229 | } else { 230 | $('.colorpickerback').colorpicker('enable'); 231 | } 232 | }) 233 | 234 | $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 235 | var dest = $(e.target).attr('href'); 236 | $("#getsec").val(dest); 237 | 238 | if (dest == "#location") { 239 | initialize(); 240 | } 241 | }); 242 | 243 | // validate form 244 | (function() { 245 | 'use strict'; 246 | window.addEventListener('load', function() { 247 | // Fetch all the forms we want to apply custom Bootstrap validation styles to 248 | var forms = document.getElementsByClassName('needs-validation'); 249 | // Loop over them and prevent submission 250 | var validation = Array.prototype.filter.call(forms, function(form) { 251 | form.addEventListener('submit', function(event) { 252 | event.preventDefault(); 253 | event.stopPropagation(); 254 | form.classList.add('was-validated'); 255 | }, false); 256 | }); 257 | }, false); 258 | })(); 259 | 260 | // Check bitcoin address 261 | $(document).ready(function(){ 262 | 263 | var btcInput = $('input[name=btc_account]'); 264 | 265 | btcInput.on('input', function(){ 266 | var address = btcInput.val(); 267 | console.log(address); 268 | 269 | $.ajax({ 270 | method: "POST", 271 | url: "include/btc-check.php", 272 | data: { btc_account: address } 273 | }) 274 | .done(function( msg ) { 275 | console.log( "Data Saved: " + msg ); 276 | if (msg) { 277 | btcInput.removeClass('is-invalid').addClass('is-valid'); 278 | } else { 279 | btcInput.removeClass('is-valid').addClass('is-invalid'); 280 | } 281 | }); 282 | }); 283 | }); 284 | -------------------------------------------------------------------------------- /documentation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Documentation | QRcdr - QR Code generator 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 |
16 |
17 | 48 | 49 |
50 |
51 |
52 |

Thank you for purchasing QRcdr.
53 | If you have any questions that are beyond the scope of this help file, please feel free to email via my user page contact form here
54 | Thanks so much!

55 |

veno.es/qrcdr

56 |
57 |
58 |
59 |
60 | 61 |

Installation

62 |

Copy all files and folders from /qrcdr directory to your web space via FTP (put everything in the root if you will use the whole domain as file manager, otherwise create a custom directory and upload everything in it). 63 |

64 | 65 |

Navigate with your browser to the url where you uploaded the files.

66 |

That’s all! You are ready to use QRcdr with its default settings.

67 |
68 |
69 |
70 |

Options

71 |

Default settings are adjustable inside the file config.php: 72 |

 73 | $_CONFIG = array(
 74 |     'lang' => 'en',                            // main language
 75 |     'uploads_dir' => 'temp',                   // uploads directory
 76 |     'qrcodes_dir' => 'qrcodes',                // qr codes directory
 77 |     'delete_old_files' => true,                // delete periodically old files
 78 |     'file_lifetime' => 24,                     // delete files older than..(hours) from /uploads_dir and /qrcodes_dir
 79 |     'uploader' => true,                        // let users upload their own logo
 80 |     'upload_max_filesize' => 1000,             // max filesize in Kb
 81 |     'thumb_size' => 130,                       // size of the squared thumbnail after uploads
 82 |     'qr_bgcolor' => '#FFFFFF',                 // default background color for generated qrcodes
 83 |     'qr_color' => '#000000',                   // default foreground color for generated qrcodes
 84 |     'session_name' => 'qrSession',             // custom session name for the script
 85 |     'placeholder' => 'images/placeholder.png', // default placeholder
 86 |     'link' => true,                            // activate link tab
 87 |     'location' => true,                        // activate location tab
 88 |     'email' => true,                           // activate email tab
 89 |     'text' => true,                            // activate text tab
 90 |     'tel' => true,                             // activate telephone tab
 91 |     'sms' => true,                             // activate sms tab
 92 |     'wifi' => true,                            // activate wifi tab
 93 |     'vcard' => true,                           // activate v-card tab
 94 |     'paypal' => true,                          // activate PayPal tab
 95 |     'bitcoin' => true,                         // activate BitCoin tab
 96 |     'whatsapp' => true,                        // activate WhatsApp tab
 97 |     'default_tab' => '#link',                  // available options: #link | #location | #email | #text | #sms | #wifi | #vcard | #paypal | #bitcoin | #whatsapp
 98 |     'detect_browser_lang' => false,            // detect browser language
 99 |     'google_api_key' => 'YOUR-API-KEY',        // https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key
100 |     'color_primary' => false,                  // main color, used for buttons and header background. set a #hex color or false to get random colors
101 |     );
102 | 
103 |
104 |
105 |
106 |

Watermarks

107 |

If you want to change or hide default watermarks, simply replace or remove the images inside images/watermarks/

108 |

.jpg, .gif, .png file are accepted

109 | 110 | 111 |
112 |
113 |
114 |

Location

115 | 116 |

Google Map needs an API KEY, so if you enable the tab Location you must get one api key here:
117 | https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key
118 | and copy it inside the file config.php

119 | 120 |

If you want to change the default location shown by Google map, open js/all.js, around line 39.

121 |
var start = new google.maps.LatLng(40.7127837, -74.00594130000002);
122 | 
123 |
124 | 125 |
126 |
127 |

Customization

128 |

The attribute 'color_primary' inside the file config.php will set the main color for all the buttons and on the header background.

129 |

Since version 3.0 you have two starter templates called header.php and footer.php, located inside the folder /template/
130 | Edit their contents or remove them if you don't need that

131 |
132 |
133 |
134 |

Manage translations

135 | 136 |

If you want to add your custom language, duplicate and rename the file lang/en.php using the 2-letters ISO code desired and update also the value 'lang' => 'en' inside your main config file config.php

137 | 138 |

Language menu is displayed with the following function:

139 | 140 |
<?php echo langMenu(); ?>
141 | 142 |

you can choose if display it as dropdown menu (default) or as simple list, and set a custom class:

143 | 144 |
<?php echo langMenu('list', 'customclass'); ?>
145 |

The first variable can be 'menu' or 'list', the second is an optional custom class assigned to language menu (default: 'langmenu')

146 | 147 |

All translatable terms, including page title, description, and meta-keywords are inside the respective .php file in /translations/ folder.

148 |

default: /translations/en.php

149 | 150 |
151 |
152 |
153 |

Embed

154 |

You can embed your self hosted generator everywhere using iframes:

155 |
<iframe width="100%" src="http://www.example.com/qrcdr/" ></iframe>
156 |
157 |
158 |
159 |

Notes

160 |

Print media styles, Typography, Forms and Tables are based on Bootstrap v4

161 |

Icons are based on Font Awesome 4.7

162 |
163 | 164 |
165 |
166 |
167 | 168 | 169 | 170 | 171 | 178 | 179 | -------------------------------------------------------------------------------- /include/process.php: -------------------------------------------------------------------------------- 1 | 11 | * @copyright 2015-2019 Nicola Franchini 12 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 13 | * @link http://veno.es/qrcdr/ 14 | */ 15 | date_default_timezone_set('UTC'); 16 | require dirname(dirname(__FILE__))."/config.php"; 17 | $lang = $_CONFIG['lang']; 18 | if (file_exists(dirname(dirname(__FILE__))."/translations/".$lang.".php")) { 19 | include dirname(dirname(__FILE__))."/translations/".$lang.".php"; 20 | } else { 21 | include dirname(dirname(__FILE__))."/translations/en.php"; 22 | } 23 | 24 | $output_data = false; 25 | $otp = false; 26 | 27 | $outdir = $_CONFIG['qrcodes_dir']; 28 | $PNG_TEMP_DIR = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.$outdir.DIRECTORY_SEPARATOR; 29 | $PNG_WEB_DIR = $outdir.'/'; 30 | 31 | require dirname(dirname(__FILE__))."/lib/phpqrcode.php"; 32 | require dirname(dirname(__FILE__))."/lib/class-qrcdr.php"; 33 | require dirname(dirname(__FILE__))."/include/functions.php"; 34 | 35 | $optionlogo = 'none'; 36 | $output_data = false; 37 | $getsection = filter_input(INPUT_POST, "section", FILTER_SANITIZE_STRING); 38 | $setbackcolor = filter_input(INPUT_POST, "backcolor", FILTER_SANITIZE_STRING); 39 | $setfrontcolor = filter_input(INPUT_POST, "frontcolor", FILTER_SANITIZE_STRING); 40 | $optionlogo = filter_input(INPUT_POST, "optionlogo", FILTER_SANITIZE_STRING); 41 | $optionstyle = filter_input(INPUT_POST, "style", FILTER_SANITIZE_STRING); 42 | 43 | if ($setbackcolor) { 44 | $stringbackcolor = $setbackcolor; 45 | } 46 | if ($setfrontcolor) { 47 | $stringfrontcolor = $setfrontcolor; 48 | } 49 | 50 | $backcolor = hexdec(str_replace('#', '0x', $stringbackcolor)); 51 | $frontcolor = hexdec(str_replace('#', '0x', $stringfrontcolor)); 52 | 53 | $level = filter_input(INPUT_POST, "level", FILTER_SANITIZE_STRING); 54 | $size = filter_input(INPUT_POST, "size", FILTER_SANITIZE_STRING); 55 | 56 | if (in_array($level, array('L','M','Q','H'))) { 57 | $errorCorrectionLevel = $level; 58 | } 59 | if ($size) { 60 | $matrixPointSize = min(max((int)$size, 4), 32); 61 | } 62 | 63 | switch ($getsection) { 64 | 65 | case '#text': 66 | $output_data = filter_input(INPUT_POST, "data", FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES ); 67 | break; 68 | case '#email': 69 | $datamailto = filter_input(INPUT_POST, "mailto", FILTER_VALIDATE_EMAIL); 70 | $datamailsubj = filter_input(INPUT_POST, "subject", FILTER_SANITIZE_STRING); 71 | $datamailbody = filter_input(INPUT_POST, "body", FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); 72 | if ($datamailto) { 73 | $output_data = 'MATMSG:TO:'.$datamailto.';SUB:'.$datamailsubj.';BODY:'.$datamailbody.';;'; 74 | } 75 | break; 76 | case '#link': 77 | $output_data = filter_input(INPUT_POST, "link", FILTER_VALIDATE_URL); 78 | break; 79 | case '#tel': 80 | $countrycode = filter_input(INPUT_POST, "countrycodetel", FILTER_SANITIZE_STRING); 81 | $number = filter_input(INPUT_POST, "tel", FILTER_SANITIZE_STRING); 82 | if ($number) { 83 | $countrycode = ($countrycode ? '+'.$countrycode : ''); 84 | $output_data = 'tel:'.$countrycode.$number; 85 | } 86 | break; 87 | 88 | case '#sms': 89 | $countrycode = filter_input(INPUT_POST, "countrycodesms", FILTER_SANITIZE_STRING); 90 | 91 | $number = filter_input(INPUT_POST, "sms", FILTER_SANITIZE_STRING); 92 | $bodysms = filter_input(INPUT_POST, "bodysms", FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); 93 | 94 | if ($number) { 95 | $countrycode = ($countrycode ? '+'.$countrycode : ''); 96 | $output_data = 'SMSTO:'.$countrycode.$number.':'.$bodysms; 97 | } 98 | break; 99 | case '#whatsapp': 100 | $countrycode = filter_input(INPUT_POST, "wapp_countrycode", FILTER_SANITIZE_STRING); 101 | 102 | $number = filter_input(INPUT_POST, "wapp_number", FILTER_SANITIZE_STRING); 103 | $message = filter_input(INPUT_POST, "wapp_message", FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); 104 | 105 | if ($number) { 106 | $output_data = 'https://wa.me/'.$countrycode.$number; 107 | } 108 | 109 | if ($message) { 110 | $output_data .= '/?text='.urlencode($message); 111 | } 112 | 113 | break; 114 | case '#wifi': 115 | $ssid = filter_input(INPUT_POST, "ssid", FILTER_SANITIZE_STRING); 116 | $wifipass = filter_input(INPUT_POST, "wifipass", FILTER_SANITIZE_STRING); 117 | $networktype = filter_input(INPUT_POST, "networktype", FILTER_SANITIZE_STRING); 118 | $wifihidden = filter_input(INPUT_POST, "wifihidden", FILTER_SANITIZE_STRING); 119 | 120 | if ($ssid) { 121 | $output_data = 'WIFI:S:'.$ssid.';'; 122 | 123 | if ($networktype) { 124 | $output_data .= 'T:'.$networktype.';'; 125 | } 126 | if ($wifipass) { 127 | $output_data .= 'P:'.$wifipass.';'; 128 | } 129 | if ($wifihidden) { 130 | $output_data .= 'H:true;'; 131 | } 132 | $output_data .= ';'; 133 | } 134 | break; 135 | case '#location': 136 | $lat = filter_input(INPUT_POST, "lat", FILTER_SANITIZE_STRING); 137 | $lng = filter_input(INPUT_POST, "lng", FILTER_SANITIZE_STRING); 138 | if ($lat && $lng) { 139 | $output_data = "geo:".$lat.",".$lng; 140 | } 141 | break; 142 | case '#vcard': 143 | $vname = filter_input(INPUT_POST, "vname", FILTER_SANITIZE_STRING); 144 | $vlast = filter_input(INPUT_POST, "vlast", FILTER_SANITIZE_STRING); 145 | $name = $vname.' '.$vlast; 146 | $sortName = $vlast.';'.$vname; 147 | $vversion = filter_input(INPUT_POST, "vversion", FILTER_SANITIZE_STRING); 148 | $phone = filter_input(INPUT_POST, "vphone", FILTER_SANITIZE_STRING); 149 | $phoneCell = filter_input(INPUT_POST, "vmobile", FILTER_SANITIZE_STRING); 150 | $email = filter_input(INPUT_POST, "vemail", FILTER_VALIDATE_EMAIL); 151 | $orgName = filter_input(INPUT_POST, "vcompany", FILTER_SANITIZE_STRING); 152 | $orgTitle = filter_input(INPUT_POST, "vtitle", FILTER_SANITIZE_STRING); 153 | $vurl = filter_input(INPUT_POST, "vurl", FILTER_SANITIZE_STRING); 154 | $fax = filter_input(INPUT_POST, "vfax", FILTER_SANITIZE_STRING); 155 | $address = filter_input(INPUT_POST, "vaddress", FILTER_SANITIZE_STRING); 156 | $addressTown = filter_input(INPUT_POST, "vcity", FILTER_SANITIZE_STRING); 157 | $addressPostCode = filter_input(INPUT_POST, "vcap", FILTER_SANITIZE_STRING); 158 | $addressCountry = filter_input(INPUT_POST, "vcountry", FILTER_SANITIZE_STRING); 159 | 160 | if ($vname && $phone) { 161 | $output_data = 'BEGIN:VCARD'."\n"; 162 | $output_data .= 'VERSION:'.$vversion."\n"; 163 | $output_data .= 'N;CHARSET=utf-8;ENCODING=8BIT:'.$sortName."\n"; 164 | $output_data .= 'FN;CHARSET=utf-8;ENCODING=8BIT:'.$name."\n"; 165 | $output_data .= 'ORG;CHARSET=utf-8;ENCODING=8BIT:'.$orgName."\n"; 166 | $output_data .= 'TITLE;CHARSET=utf-8;ENCODING=8BIT:'.$orgTitle."\n"; 167 | 168 | //$output_data .= 'TEL;WORK;VOICE:'.$phone."\n"; 169 | $output_data .= 'TEL;HOME;VOICE:'.$phone."\n"; 170 | $output_data .= 'TEL;TYPE=CELL:'.$phoneCell."\n"; 171 | $output_data .= 'TEL;TYPE=FAX:'.$fax."\n"; 172 | 173 | $output_data .= 'ADR;TYPE=work:' 174 | .$address.';' 175 | .$addressTown.';' 176 | .$addressPostCode.';' 177 | .$addressCountry 178 | ."\n"; 179 | $output_data .= 'EMAIL:'.$email."\n"; 180 | $output_data .= 'URL:'.$vurl."\n"; 181 | 182 | $output_data .= 'END:VCARD'; 183 | } 184 | break; 185 | case '#paypal': 186 | $type = filter_input(INPUT_POST, "pp_type", FILTER_SANITIZE_STRING); 187 | $email = filter_input(INPUT_POST, "pp_email", FILTER_VALIDATE_EMAIL); 188 | $name = filter_input(INPUT_POST, "pp_name", FILTER_SANITIZE_STRING); 189 | $id = filter_input(INPUT_POST, "pp_id", FILTER_SANITIZE_STRING); 190 | $price = filter_input(INPUT_POST, "pp_price", FILTER_SANITIZE_STRING); 191 | $currency = filter_input(INPUT_POST, "pp_currency", FILTER_SANITIZE_STRING); 192 | $shipping = filter_input(INPUT_POST, "pp_shipping", FILTER_SANITIZE_STRING); 193 | $tax = filter_input(INPUT_POST, "pp_tax", FILTER_SANITIZE_STRING); 194 | 195 | if ($email && $name) { 196 | $output_data = 'https://www.paypal.com/cgi-bin/webscr'; 197 | $output_data .= '?cmd='.$type; 198 | $output_data .= '&business='.urlencode($email); 199 | $output_data .= '&item_name='.urlencode($name); 200 | $output_data .= '&amount='.urlencode($price); 201 | $output_data .= '¤cy_code='.$currency; 202 | 203 | if ($shipping) { 204 | $output_data .= '&shipping='.urlencode($shipping); 205 | } 206 | if ($tax) { 207 | $output_data .= '&tax_rate='.urlencode($tax); 208 | } 209 | 210 | if ($type === '_xclick') { 211 | $output_data .= '&button_subtype=services'; 212 | $output_data .= '&bn='.urlencode('PP-BuyNowBF:btn_buynow_LG.gif:NonHostedGuest'); 213 | } elseif ($type === '_cart') { 214 | $output_data .= '&button_subtype=products&add=1'; 215 | $output_data .= '&bn='.urlencode('PP-ShopCartBF:btn_cart_LG.gif:NonHostedGuest'); 216 | } else { 217 | $output_data .= '&bn='.urlencode('PP-DonationsBF:btn_donate_LG.gif:NonHostedGuest'); 218 | } 219 | $output_data .= '&lc=US&no_note=0'; 220 | } 221 | break; 222 | case '#bitcoin': 223 | $btc_account = filter_input(INPUT_POST, "btc_account", FILTER_SANITIZE_STRING); 224 | $btc_amount = filter_input(INPUT_POST, "btc_amount", FILTER_SANITIZE_STRING); 225 | $btc_label = filter_input(INPUT_POST, "btc_label", FILTER_SANITIZE_STRING); 226 | $btc_message = filter_input(INPUT_POST, "btc_message", FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); 227 | 228 | if ($btc_account) { 229 | $output_data = 'bitcoin:'.$btc_account; 230 | 231 | if ($btc_amount) { 232 | $output_data .= '?amount='.$btc_amount; 233 | } 234 | 235 | if ($btc_label) { 236 | $output_data .= '&label='.urlencode($btc_label); 237 | } 238 | 239 | if ($btc_message) { 240 | $output_data .= '&message='.urlencode($btc_message); 241 | } 242 | } 243 | break; 244 | } 245 | 246 | 247 | if ($output_data) { 248 | 249 | $trasp = (isset($_POST['transparent']) ? true : false); 250 | 251 | $filenamepng = $PNG_TEMP_DIR.md5($output_data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png'; 252 | $filenamesvg = $PNG_TEMP_DIR.md5($output_data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.svg'; 253 | // $filenameeps = $PNG_TEMP_DIR.md5($output_data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.eps'; 254 | 255 | // QRcode::png($output_data, $filenamepng, $errorCorrectionLevel, $matrixPointSize, 2, false, $backcolor, $frontcolor); 256 | // QRcode::svg($output_data, $filenamesvg, $errorCorrectionLevel, $matrixPointSize, 2, false, $backcolor, $frontcolor); 257 | // QRcode::eps($output_data, $filenameeps, $errorCorrectionLevel, $matrixPointSize, 2, false, $backcolor, $frontcolor); 258 | 259 | QRcdr::png($output_data, $filenamepng, $errorCorrectionLevel, $matrixPointSize, 2, false, $backcolor, $frontcolor, $optionstyle); 260 | QRcdr::svg($output_data, $filenamesvg, $errorCorrectionLevel, $matrixPointSize, 2, false, $backcolor, $frontcolor, $optionstyle); 261 | // QRcdr::eps($output_data, $filenameeps, $errorCorrectionLevel, $matrixPointSize, 2, false, $backcolor, $frontcolor); 262 | 263 | $finalpng = basename($filenamepng); 264 | $finalsvg = basename($filenamesvg); 265 | // $finaleps = basename($filenameeps); 266 | 267 | $mergedimage = false; 268 | 269 | if ($trasp) { 270 | $finalpng = basename(transparentBg($filenamepng)); 271 | } 272 | if ($optionlogo && $optionlogo !== 'none') { 273 | $mergedimage = mergeImages('../'.$PNG_WEB_DIR.$finalpng, '../'.$optionlogo, false); 274 | } 275 | if ($mergedimage) { 276 | $placeholder = $PNG_WEB_DIR.$mergedimage; 277 | } else { 278 | $placeholder = $PNG_WEB_DIR.$finalpng; 279 | } 280 | 281 | $result = array( 282 | 'png'=> $finalpng, 283 | 'svg'=> $finalsvg, 284 | // 'eps'=> $finaleps, 285 | 'placeholder'=> $placeholder, 286 | 'optionlogo'=> $optionlogo, 287 | // 'errore' => QRcode::text($output_data, false, $errorCorrectionLevel, $matrixPointSize, 2), 288 | /// 'errore'=> $_ERROR, 289 | 290 | ); 291 | if ($otp) { 292 | $result['otp'] = $otp; 293 | } 294 | 295 | $result = json_encode($result); 296 | } else { 297 | $result = json_encode(array('errore'=> getString('provide_more_data'), 'placeholder' => $_CONFIG['placeholder'])); 298 | } 299 | echo $result; 300 | -------------------------------------------------------------------------------- /documentation/assets/js/google-code-prettify/prettify.js: -------------------------------------------------------------------------------- 1 | var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; 2 | (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= 3 | [],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p div { 324 | position: absolute; 325 | left: 0; 326 | top: 0; 327 | width: 100%; 328 | height: 100%; } 329 | 330 | .colorpicker-bar.colorpicker-swatches { 331 | -webkit-box-shadow: none; 332 | box-shadow: none; 333 | height: auto; } 334 | 335 | .colorpicker-swatches--inner { 336 | clear: both; 337 | margin-top: -6px; } 338 | 339 | .colorpicker-swatch { 340 | position: relative; 341 | cursor: pointer; 342 | float: left; 343 | height: 16px; 344 | width: 16px; 345 | margin-right: 6px; 346 | margin-top: 6px; 347 | margin-left: 0; 348 | display: block; 349 | -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); 350 | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); 351 | background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white; 352 | background-size: 10px 10px; 353 | background-position: 0 0, 5px 5px; } 354 | 355 | .colorpicker-swatch--inner { 356 | position: absolute; 357 | top: 0; 358 | left: 0; 359 | width: 100%; 360 | height: 100%; } 361 | 362 | .colorpicker-swatch:nth-of-type(7n+0) { 363 | margin-right: 0; } 364 | 365 | .colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) { 366 | margin-right: 6px; } 367 | 368 | .colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) { 369 | margin-right: 0; } 370 | 371 | .colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) { 372 | margin-right: 0; } 373 | 374 | .colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) { 375 | margin-right: 6px; } 376 | 377 | .colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) { 378 | margin-right: 6px; } 379 | 380 | .colorpicker-swatch:last-of-type:after { 381 | content: ""; 382 | display: table; 383 | clear: both; } 384 | 385 | *[dir='rtl'] .colorpicker-element input, 386 | .colorpicker-element[dir='rtl'] input, 387 | .colorpicker-element input[dir='rtl'] { 388 | direction: ltr; 389 | text-align: right; } 390 | 391 | /*# sourceMappingURL=bootstrap-colorpicker.css.map */ 392 | -------------------------------------------------------------------------------- /js/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["colorpicker.scss"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0CH;EACA,mBAAA;EACA,cAAA;EACA,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,0BAAA;EACA,6BAAA;EACA,qCA1DA;EA4DA,uBAAA;EACA,aAAA;EACA,mBAAA;EACA,gCAAA;UAAA,wBAAA,EACA;;AAEA;;EAEA,2BAAA,EACA;;AAEA;EACA,mBAAA,EACA;;AAEA;EACA,mBAAA;EACA,UAAA;EACA,QAAA;EACA,YAAA;EACA,gBAAA;EACA,cAAA,EACA;;AAEA;EACA,mBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,iBAAA;EACA,aAAA;EACA,mBAAA;EACA,iBAAA;EACA,iBAAA;EACA,yBAAA;UAAA,iBAAA,EACA;;AAEA;;EAEA,YAAA;EACA,eAAA;EACA,YAAA;EACA,eAAA,EACA;;AAEA;EACA,YAAA;EACA,eAAA,EACA;;AAEA;EACA,YAAA;EACA,sBAAA;EACA,mCAAA;EACA,oCAAA;EACA,8BAAA;EACA,wCArHA;EAsHA,mBAAA;EACA,UAAA;EACA,WAAA;EACA,WAAA,EACA;;AAEA;EACA,YAAA;EACA,sBAAA;EACA,mCAAA;EACA,oCAAA;EACA,iCAAA;EACA,mBAAA;EACA,UAAA;EACA,WAAA;EACA,WAAA,EACA;;AAEA;EACA,aAAA,EACA;;AAEA;EACA,eAAA,EACA;;AAEA;EACA,mBAAA;EACA,aA7IA;EA8IA,cA9IA;EAYA,YAAA;EAEA,qBAAA;EAEA,0BAAA;EAEA,kBAAA;EAEA,WAAA;EACA,kLACA;EADA,qIACA;EAAA,SAAA;EA0HA,kBAAA;EACA,YAAA;EACA,iDAvJA;UAuJA,yCAvJA;EAwJA,mBArJA,EAkKA;EArBA;IAUA,eAAA;IACA,YAAA;IACA,WAAA;IACA,mBAAA;IACA,uBAAA;IACA,uDAAA;YAAA,+CAAA;IACA,mBAAA;IACA,OAAA;IACA,QAAA;IACA,sBAAA,EACA;;AAGA;;EAEA,mBAAA;EACA,YAxKA;EAyKA,cAtKA;EAuKA,YAAA;EACA,mBAAA;EACA,iBA3KA;EA4KA,mBA5KA,EA6KA;;AAEA;EACA,mBAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,aAAA,EACA;;AAEA;;EAEA,iDA5LA;UA4LA,yCA5LA,EA6LA;;AAEA;;EAEA,eAAA;EACA,YAAA;EACA,qCAAA;EACA,qCAAA;EACA,mBAAA;EACA,OAAA;EACA,QAAA;EACA,kBAAA;EACA,iBAAA;EACA,YAAA;EACA,WAAA,EACA;;AAEA;EArKA,YAAA;EACA,qBAAA;EACA,0BAAA;EACA,kBAAA;EACA,WAAA;EACA,mWAAA;EAAA,0LAAA;EAAA,SAAA,EAkKA;;AAEA;EA1MA,kRAEA;EACA,2BAJA;EAKA,kCAAA;EAwMA,cAAA,EACA;;AAEA;EACA,iBAtNA;EAuNA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,oBAAA;EACA,gBAAA;EACA,iDA/NA;UA+NA,yCA/NA,EAqOA;EAdA;IAUA,YAAA;IACA,eAAA;IACA,YAAA,EACA;;AAGA;EACA,cAnOA;EAoOA,YAvOA;EAwOA,kBAAA;EACA,YAAA,EACA;;AAEA;EACA,mBAAA,EACA;;AAEA;EACA,sBAAA;EACA,gBAAA;EACA,yBAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA,EACA;;AAEA;EACA,YAAA;EACA,mBAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,yBAAA;EAzPA,kRAEA;EACA,2BAJA;EAKA,kCAAA,EAuPA;;AAEA;EACA,mBAAA;EACA,sBAAA;EACA,YAAA;EACA,cAAA;EACA,4BAAA,EACA;;AAEA;EACA,aAzQA;EA0QA,aAAA,EACA;;AAEA;EACA,aA9QA,EA+QA;;AAEA;EACA,YAAA;EACA,iBAAA,EACA;;AAEA;;EAEA,YAAA;EACA,aAzRA;EA0RA,aA7RA;EA8RA,mBAAA;EACA,eAAA;EACA,gBA/RA;EAgSA,iBAAA,EACA;;AAEA;;EAEA,mBAAA;EACA,eAAA;EACA,aAAA;EACA,QAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA,EACA;;AAEA;EAlRA,YAAA;EACA,qBAAA;EACA,0BAAA;EACA,kBAAA;EACA,WAAA;EACA,iWAAA;EAAA,2LAAA;EAAA,SAAA,EA+QA;;AAEA;EA7SA,kRAEA;EACA,2BAJA;EAKA,kCAAA,EA2SA;;AAEA;;;EAGA,cAAA;EACA,cAAA,EACA;;AAEA;;;EAGA,cAAA;EACA,cAAA,EACA;;AAEA;;;;;EAMA,eAAA,EACA;;AAGA;;;;;EAMA,cAAA,EACA;;AAGA;EACA,sBAAA,EACA;;AAEA;EACA,aAAA;EACA,YAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,sCAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EACA,mBAAA,EACA;;AAEA;EACA,cAAA,EACA;;AAEA,kBAAA;AAEA;EA3WA,kRAEA;EACA,2BAJA;EAKA,kCAAA,EAyWA;;AAEA;EACA,mBAAA;EACA,QAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA,EACA;;AAEA;EACA,yBAAA;UAAA,iBAAA;EACA,aAAA,EACA;;AAEA;EACA,YAAA;EACA,iBAnYA,EAoYA;;AAEA;EACA,mBAAA;EACA,gBAAA;EACA,YAAA;EACA,aA3YA;EA4YA,YA5YA;EA6YA,kBA5YA;EA6YA,gBA7YA;EA8YA,eAAA;EACA,eAAA;EACA,iDAnZA;UAmZA,yCAnZA;EAQA,kRAEA;EACA,2BAJA;EAKA,kCAAA,EAyYA;;AAEA;EACA,mBAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,aAAA,EACA;;AAGA;EACA,gBAAA,EACA;;AAGA;EAEA,kBApaA,EAqaA;;AAHA;EAKA,gBAAA,EACA;;AAIA;EAEA,gBAAA,EACA;;AAHA;EAKA,kBAjbA,EAkbA;;AANA;EAQA,kBApbA,EAqbA;;AAGA;EACA,YAAA;EACA,eAAA;EACA,YAAA,EACA;;AAGA;;;EAGA,eAAA;EACA,kBAAA,EACA","file":"bootstrap-colorpicker.css","sourcesContent":["$outline-color: rgba(0, 0, 0, 0.2);\n$box-shadow-outline: 0 0 0 1px $outline-color;\n$bar-size-short: 16px !default;\n$base-margin: 6px !default;\n$columns: 6 !default; // this affects the number of swatches per row and the width of the color picker, saturation, etc.\n$bar-size-large: ($bar-size-short * $columns) + ($base-margin * ($columns - 1));\n\n@mixin bgCheckerBox($size: 10px) {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n rgb(255, 255, 255);\n background-size: $size $size;\n background-position: 0 0, $size/2 $size/2;\n}\n\n@mixin bgSaturation() {\n background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -moz-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 1))),\n -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(255, 255, 255, 0))); /* Chrome,Safari4+ */\n background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -webkit-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* Chrome10+,Safari5.1+ */\n background: -o-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -o-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* Opera 11.10+ */\n background: -ms-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -ms-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* IE10+ */\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* W3C */\n}\n\n@mixin bgHueHorizontal() {\n background: -moz-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, right top, left top, color-stop(0%, rgb(255, 0, 0)), color-stop(8%, rgb(255, 128, 0)), color-stop(17%, rgb(255, 255, 0)), color-stop(25%, rgb(128, 255, 0)), color-stop(33%, rgb(0, 255, 0)), color-stop(42%, rgb(0, 255, 128)), color-stop(50%, rgb(0, 255, 255)), color-stop(58%, rgb(0, 128, 255)), color-stop(67%, rgb(0, 0, 255)), color-stop(75%, rgb(128, 0, 255)), color-stop(83%, rgb(255, 0, 255)), color-stop(92%, rgb(255, 0, 128)), color-stop(100%, rgb(255, 0, 0))); /* Chrome,Safari4+ */\n background: -webkit-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* Chrome10+,Safari5.1+ */\n background: -o-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* Opera 11.10+ */\n background: -ms-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* IE10+ */\n background: linear-gradient(to left, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* W3C */\n\n}\n\n@mixin bgHueVertical() {\n background: -moz-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0%, rgba(255, 0, 0, 1)), color-stop(8%, rgba(255, 128, 0, 1)), color-stop(17%, rgba(255, 255, 0, 1)), color-stop(25%, rgba(128, 255, 0, 1)), color-stop(33%, rgba(0, 255, 0, 1)), color-stop(42%, rgba(0, 255, 128, 1)), color-stop(50%, rgba(0, 255, 255, 1)), color-stop(58%, rgba(0, 128, 255, 1)), color-stop(67%, rgba(0, 0, 255, 1)), color-stop(75%, rgba(128, 0, 255, 1)), color-stop(83%, rgba(255, 0, 255, 1)), color-stop(92%, rgba(255, 0, 128, 1)), color-stop(100%, rgba(255, 0, 0, 1))); /* Chrome,Safari4+ */\n background: -webkit-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* Chrome10+,Safari5.1+ */\n background: -o-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* Opera 11.10+ */\n background: -ms-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* IE10+ */\n background: linear-gradient(to top, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* W3C */\n}\n\n.colorpicker {\n position: relative;\n display: none;\n font-size: inherit;\n color: inherit;\n text-align: left;\n list-style: none;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid $outline-color;\n //box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n padding: .75rem .75rem;\n width: ($bar-size-large + $base-margin + $bar-size-short);\n border-radius: 4px;\n box-sizing: content-box;\n}\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n cursor: default !important;\n}\n\n.colorpicker div {\n position: relative;\n}\n\n.colorpicker-popup {\n position: absolute;\n top: 100%;\n left: 0;\n float: left;\n margin-top: 1px;\n z-index: 1060;\n}\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n position: relative;\n top: auto;\n left: auto;\n float: none;\n margin: 0;\n z-index: initial;\n border: none;\n padding: 0.25rem 0; // popover padding correction\n border-radius: 0;\n background: none;\n box-shadow: none;\n}\n\n.colorpicker:before,\n.colorpicker:after {\n content: \"\";\n display: table;\n clear: both;\n line-height: 0;\n}\n\n.colorpicker-clear {\n clear: both;\n display: block;\n}\n\n.colorpicker:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid #ccc;\n border-bottom-color: $outline-color;\n position: absolute;\n top: -7px;\n left: auto;\n right: 6px;\n}\n\n.colorpicker:after {\n content: '';\n display: inline-block;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #ffffff;\n position: absolute;\n top: -6px;\n left: auto;\n right: 7px;\n}\n\n.colorpicker.colorpicker-with-alpha {\n width: ($bar-size-large + (($base-margin + $bar-size-short) * 2));\n}\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n display: block;\n}\n\n.colorpicker-saturation {\n position: relative;\n width: $bar-size-large;\n height: $bar-size-large;\n @include bgSaturation();\n cursor: crosshair;\n float: left;\n box-shadow: $box-shadow-outline;\n margin-bottom: $base-margin;\n .colorpicker-guide {\n display: block;\n height: 6px;\n width: 6px;\n border-radius: 6px;\n border: 1px solid #000;\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n position: absolute;\n top: 0;\n left: 0;\n margin: -3px 0 0 -3px;\n }\n}\n\n.colorpicker-hue,\n.colorpicker-alpha {\n position: relative;\n width: $bar-size-short;\n height: $bar-size-large;\n float: left;\n cursor: row-resize;\n margin-left: $base-margin;\n margin-bottom: $base-margin;\n}\n\n.colorpicker-alpha-color {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n box-shadow: $box-shadow-outline;\n}\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n display: block;\n height: 4px;\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n left: 0;\n margin-left: -2px;\n margin-top: -2px;\n right: -2px;\n z-index: 1;\n}\n\n.colorpicker-hue {\n @include bgHueVertical();\n}\n\n.colorpicker-alpha {\n @include bgCheckerBox();\n display: none;\n}\n\n.colorpicker-bar {\n min-height: $bar-size-short;\n margin: $base-margin 0 0 0;\n clear: both;\n text-align: center;\n font-size: 10px;\n line-height: normal;\n max-width: 100%;\n box-shadow: $box-shadow-outline;\n &:before {\n content: \"\";\n display: table;\n clear: both;\n }\n}\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n height: $bar-size-large;\n width: $bar-size-short;\n margin: 0 0 $base-margin 0;\n float: left;\n}\n\n.colorpicker-input-addon {\n position: relative;\n}\n\n.colorpicker-input-addon i {\n display: inline-block;\n cursor: pointer;\n vertical-align: text-top;\n height: 16px;\n width: 16px;\n position: relative;\n}\n\n.colorpicker-input-addon:before {\n content: \"\";\n position: absolute;\n width: 16px;\n height: 16px;\n display: inline-block;\n vertical-align: text-top;\n @include bgCheckerBox();\n}\n\n.colorpicker.colorpicker-inline {\n position: relative;\n display: inline-block;\n float: none;\n z-index: auto;\n vertical-align: text-bottom;\n}\n\n.colorpicker.colorpicker-horizontal {\n width: $bar-size-large;\n height: auto;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n width: $bar-size-large;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n float: none;\n margin-bottom: 0;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n float: none;\n width: $bar-size-large;\n height: $bar-size-short;\n cursor: col-resize;\n margin-left: 0;\n margin-top: $base-margin;\n margin-bottom: 0;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n position: absolute;\n display: block;\n bottom: -2px;\n left: 0;\n right: auto;\n height: auto;\n width: 4px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n @include bgHueHorizontal();\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n @include bgCheckerBox();\n}\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n content: none;\n display: none;\n}\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n content: none;\n display: none;\n}\n\n.colorpicker,\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-bar {\n &.colorpicker-visible {\n display: block;\n }\n}\n\n.colorpicker,\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-bar {\n &.colorpicker-hidden {\n display: none;\n }\n}\n\n.colorpicker-inline.colorpicker-visible {\n display: inline-block;\n}\n\n.colorpicker.colorpicker-disabled:after {\n border: none;\n content: '';\n display: block;\n width: 100%;\n height: 100%;\n background: rgba(233, 236, 239, 0.33);\n top: 0;\n left: 0;\n right: auto;\n z-index: 2;\n position: absolute;\n}\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n display: none;\n}\n\n/** EXTENSIONS **/\n\n.colorpicker-preview {\n @include bgCheckerBox();\n}\n\n.colorpicker-preview > div {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n\n.colorpicker-bar.colorpicker-swatches {\n box-shadow: none;\n height: auto;\n}\n\n.colorpicker-swatches--inner {\n clear: both;\n margin-top: -$base-margin;\n}\n\n.colorpicker-swatch {\n position: relative;\n cursor: pointer;\n float: left;\n height: $bar-size-short;\n width: $bar-size-short;\n margin-right: $base-margin;\n margin-top: $base-margin;\n margin-left: 0;\n display: block;\n box-shadow: $box-shadow-outline;\n @include bgCheckerBox();\n}\n\n.colorpicker-swatch--inner {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n// saturation + hue vertical (clear margin-right on nth column + 1)\n.colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n margin-right: 0;\n}\n\n// saturation + hue + alpha vertical (clear margin-right on nth column + 2)\n.colorpicker-with-alpha {\n .colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n margin-right: $base-margin;\n }\n .colorpicker-swatch:nth-of-type(#{$columns + 2}n+0) {\n margin-right: 0;\n }\n}\n\n// horizontal mode (clear margin-right on nth column)\n.colorpicker-horizontal {\n .colorpicker-swatch:nth-of-type(#{$columns}n+0) {\n margin-right: 0;\n }\n .colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n margin-right: $base-margin;\n }\n .colorpicker-swatch:nth-of-type(#{$columns + 2}n+0) {\n margin-right: $base-margin;\n }\n}\n\n.colorpicker-swatch:last-of-type:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n// RTL writing mode support\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n direction: ltr;\n text-align: right;\n}\n"]} -------------------------------------------------------------------------------- /include/functions.php: -------------------------------------------------------------------------------- 1 | 11 | * @copyright 2015-2019 Nicola Franchini 12 | * @license item sold on codecanyon https://codecanyon.net/item/qrcdr-responsive-qr-code-generator/9226839 13 | * @link http://veno.es/qrcdr/ 14 | */ 15 | 16 | /** 17 | * Get language 18 | * 19 | * @param string $default default lang 20 | * @param bool $browserDetect detect browser language 21 | * 22 | * @return $lang 23 | */ 24 | function getLang($default, $browserDetect = false) 25 | { 26 | if ($browserDetect) { 27 | $browserlang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 28 | if (file_exists("lang/".$browserlang.".php")) { 29 | $lang = $browserlang; 30 | $_SESSION['lang'] = $lang; 31 | } 32 | } 33 | if (isset($_GET['lang'])) { 34 | $lang = $_GET['lang']; 35 | $_SESSION['lang'] = $lang; 36 | } 37 | if (isset($_SESSION['lang'])) { 38 | $lang = $_SESSION['lang']; 39 | } else { 40 | $lang = $default; 41 | } 42 | return $lang; 43 | } 44 | 45 | /** 46 | * Get translated string 47 | * 48 | * @param string $string key to search 49 | * 50 | * @return translated string 51 | */ 52 | function getString($string) 53 | { 54 | global $_translations; 55 | $result = '>'.$string.'<'; 56 | 57 | if (isset($_translations[$string])) { 58 | $stringa = $_translations[$string]; 59 | if (strlen($stringa) > 0) { 60 | $result = $_translations[$string]; 61 | } 62 | } 63 | return $result; 64 | } 65 | 66 | 67 | /** 68 | * Set error 69 | * 70 | * @param string $error error message 71 | * 72 | * @return global error 73 | */ 74 | function setError($error) 75 | { 76 | global $_ERROR; 77 | $_ERROR = $error; 78 | } 79 | 80 | /** 81 | * Delete old files 82 | * 83 | * @param string $dir the dir to scan 84 | * @param int $age files lifetime 85 | * 86 | * @return a clean directory 87 | */ 88 | function deleteOldFiles($dir = 'temp/', $age = 3600) 89 | { 90 | if (file_exists($dir) && $handle = opendir($dir)) { 91 | while (false !== ($file = readdir($handle))) { 92 | 93 | if (file_exists($dir.$file)) { 94 | 95 | if (preg_match("/^.*\.(png|svg|gif|jpeg|jpg|eps)$/i", $file)) { 96 | 97 | $filelastmodified = filemtime($dir.$file); 98 | $now = time(); 99 | $life = $now - $filelastmodified; 100 | if ($life > $age) { 101 | unlink($dir.$file); 102 | } 103 | } 104 | } 105 | } 106 | closedir($handle); 107 | } 108 | } 109 | 110 | /** 111 | * Language menu 112 | * 113 | * @param string $type menu output availabe: 'menu' | 'list' 114 | * @param string $class optional class to add 115 | * 116 | * @return the language menu 117 | */ 118 | function langMenu($type = 'menu', $class = 'langmenu') 119 | { 120 | $waterdir = 'translations/'; 121 | $langfiles = glob($waterdir.'*.php'); 122 | 123 | if ($type == 'menu') { 124 | $mymenu = '
'; 132 | } else { 133 | $mymenu = '
    '; 134 | foreach ($langfiles as $value) { 135 | $val = basename($value, '.php'); 136 | $link = '?lang='.$val; 137 | $mymenu .= '
  • '.$val.'
  • '; 138 | } 139 | $mymenu .='
'; 140 | } 141 | 142 | return $mymenu; 143 | } 144 | /** 145 | * Make thumbnails 146 | * 147 | * @param string $original the original file 148 | * @param string $thumbname the final file 149 | * @param boolean $destroy destroy original image 150 | * @param int $thumb_width thumbnail width 151 | * @param int $thumb_height thumbnail height 152 | * 153 | * @return the image thumbnailed 154 | */ 155 | function makeThumb( 156 | $original = false, 157 | $thumbname = 'thumb.png', 158 | $destroy = false, 159 | $thumb_width = 80, 160 | $thumb_height = 80 161 | ) { 162 | 163 | if ($original == false) { 164 | setError(getString('error_getting_original_image')); 165 | return false; 166 | } 167 | if (!file_exists($original) && !file_exists($thumbname)) { 168 | setError($original." ".getString('does_not_exists')); 169 | unset($_SESSION['logo']); 170 | return false; 171 | } 172 | 173 | if (file_exists($thumbname)) { 174 | if (file_exists($original)) { 175 | unlink($original); 176 | } 177 | return $thumbname; 178 | } 179 | 180 | list($width, $height) = getimagesize($original); 181 | $image = imagecreatefromstring(file_get_contents($original)); 182 | $width = imagesx($image); 183 | $height = imagesy($image); 184 | 185 | $original_aspect = $width / $height; 186 | $thumb_aspect = $thumb_width / $thumb_height; 187 | 188 | if ($original_aspect >= $thumb_aspect) { 189 | // If image is wider than thumbnail (in aspect ratio sense) 190 | $new_height = $thumb_height; 191 | $new_width = $width / ($height / $thumb_height); 192 | } else { 193 | // If the thumbnail is wider than the image 194 | $new_width = $thumb_width; 195 | $new_height = $height / ($width / $thumb_width); 196 | } 197 | $thumb = imagecreatetruecolor($thumb_width, $thumb_height); 198 | 199 | imagealphablending($thumb, false); 200 | imagesavealpha($thumb, true); 201 | 202 | $color = imagecolorallocatealpha($thumb, 0, 0, 0, 127); 203 | imagefill($thumb, 0, 0, $color); 204 | 205 | // Resize and crop 206 | imagecopyresampled( 207 | $thumb, 208 | $image, 209 | 0 - ($new_width - $thumb_width) / 2, // Center the image horizontally 210 | 0 - ($new_height - $thumb_height) / 2, // Center the image vertically 211 | 0, 0, 212 | $new_width, $new_height, 213 | $width, $height 214 | ); 215 | 216 | imagepng($thumb, $thumbname, 0); 217 | imagedestroy($thumb); 218 | 219 | if ($destroy == true) { 220 | unlink($original); 221 | } 222 | setError(getString('thumb_created')); 223 | return $thumbname; 224 | } 225 | 226 | /** 227 | * Set transparent background to QRcode 228 | * 229 | * @param string $image qrcode to change 230 | * 231 | * @return QRcode + watermark 232 | */ 233 | function transparentBg($image) 234 | { 235 | $image_new = imagecreatefromstring(file_get_contents($image)); 236 | 237 | $white = imagecolorexact($image_new, 255, 255, 255); 238 | imagecolortransparent($image_new, $white); 239 | 240 | imagepng($image_new, $image); 241 | imagedestroy($image_new); 242 | return $image; 243 | } 244 | 245 | /** 246 | * Add watermark 247 | * 248 | * @param string $back qrcode 249 | * @param string $front watermark 250 | * 251 | * @return QRcode + watermark 252 | */ 253 | function mergeImages($back = false, $front = false) 254 | { 255 | if ($back == false || !file_exists($back)) { 256 | setError(getString('error_getting_qrcode_image').": ".$back); 257 | return false; 258 | } 259 | 260 | if ($front == false || !file_exists($front)) { 261 | setError(getString('error_getting_watermark').": ".$front); 262 | return false; 263 | } 264 | $frame = imagecreatefromstring(file_get_contents($back)); 265 | 266 | $image = imagecreatefrompng($front); 267 | 268 | $frame_width = imagesx($frame); 269 | $frame_height = imagesy($frame); 270 | 271 | $thumb_width = $frame_width/4; 272 | $thumb_height = $frame_height/4; 273 | 274 | $width = imagesx($image); 275 | $height = imagesy($image); 276 | 277 | $dest_x = ($frame_width/2) - ($thumb_width/2); 278 | $dest_y = ($frame_height/2) - ($thumb_height/2); 279 | 280 | $fframe = imagecreatetruecolor($frame_width, $frame_height); 281 | imagealphablending($fframe, false); 282 | imagesavealpha($fframe, true); 283 | 284 | imagecopyresampled($fframe, $frame, 0, 0, 0, 0, $frame_width, $frame_height, $frame_width, $frame_height); 285 | 286 | $iimage = imagecreatetruecolor($width, $height); 287 | imagealphablending($iimage, false); 288 | imagesavealpha($iimage, true); 289 | 290 | imagecopyresampled($iimage, $image, 0, 0, 0, 0, $width, $height, $width, $height); 291 | 292 | imagealphablending($fframe, true); 293 | imagealphablending($iimage, true); 294 | 295 | imagecopyresampled( 296 | $fframe, $iimage, 297 | $dest_x, $dest_y, 0, 0, 298 | $thumb_width, $thumb_height, 299 | $width, $height 300 | ); 301 | 302 | imagepng($fframe, $back, 0); 303 | imagedestroy($fframe); 304 | imagedestroy($iimage); 305 | imagedestroy($image); 306 | 307 | //setError("image merged"); 308 | return basename($back); 309 | } 310 | 311 | /** 312 | * Random color part 313 | * 314 | * @return random color part 315 | */ 316 | function randomColorPart() 317 | { 318 | return str_pad(dechex(mt_rand(20, 200)), 2, '0', STR_PAD_LEFT); 319 | } 320 | 321 | /** 322 | * Random color 323 | * 324 | * @return random color 325 | */ 326 | function randomColor() 327 | { 328 | return '#'.randomColorPart() . randomColorPart() . randomColorPart(); 329 | } 330 | 331 | 332 | /** 333 | * Increases or decreases the brightness of a color by a percentage of the current brightness. 334 | * 335 | * @param string $hexCode Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF` 336 | * @param float $adjustPercent A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker. 337 | * 338 | * @return string 339 | */ 340 | function adjustBrightness($hexCode, $adjustPercent) 341 | { 342 | $hexCode = ltrim($hexCode, '#'); 343 | 344 | if (strlen($hexCode) == 3) { 345 | $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2]; 346 | } 347 | $hexCode = array_map('hexdec', str_split($hexCode, 2)); 348 | 349 | foreach ($hexCode as & $color) { 350 | $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color; 351 | $adjustAmount = ceil($adjustableLimit * $adjustPercent); 352 | 353 | $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT); 354 | } 355 | return '#' . implode($hexCode); 356 | } 357 | 358 | /** 359 | * Convertt color hex to rgb 360 | * 361 | * @param string $htmlCode to convert 362 | * 363 | * @return RGB color 364 | */ 365 | function HTMLToRGB($htmlCode) 366 | { 367 | if($htmlCode[0] == '#') 368 | $htmlCode = substr($htmlCode, 1); 369 | 370 | if (strlen($htmlCode) == 3) { 371 | $htmlCode = $htmlCode[0] . $htmlCode[0] . $htmlCode[1] . $htmlCode[1] . $htmlCode[2] . $htmlCode[2]; 372 | } 373 | 374 | $r = hexdec($htmlCode[0] . $htmlCode[1]); 375 | $g = hexdec($htmlCode[2] . $htmlCode[3]); 376 | $b = hexdec($htmlCode[4] . $htmlCode[5]); 377 | 378 | return $b + ($g << 0x8) + ($r << 0x10); 379 | } 380 | 381 | /** 382 | * Converto color RGB to HSL 383 | * 384 | * @param string $RGB to convert 385 | * 386 | * @return HSL color 387 | */ 388 | function RGBToHSL($RGB) 389 | { 390 | $r = 0xFF & ($RGB >> 0x10); 391 | $g = 0xFF & ($RGB >> 0x8); 392 | $b = 0xFF & $RGB; 393 | 394 | $r = ((float)$r) / 255.0; 395 | $g = ((float)$g) / 255.0; 396 | $b = ((float)$b) / 255.0; 397 | 398 | $maxC = max($r, $g, $b); 399 | $minC = min($r, $g, $b); 400 | 401 | $l = ($maxC + $minC) / 2.0; 402 | 403 | if ($maxC == $minC) { 404 | $s = 0; 405 | $h = 0; 406 | } else { 407 | if ($l < .5) { 408 | $s = ($maxC - $minC) / ($maxC + $minC); 409 | } else { 410 | $s = ($maxC - $minC) / (2.0 - $maxC - $minC); 411 | } 412 | if ($r == $maxC) { 413 | $h = ($g - $b) / ($maxC - $minC); 414 | } 415 | if ($g == $maxC) { 416 | $h = 2.0 + ($b - $r) / ($maxC - $minC); 417 | } 418 | if ($b == $maxC) { 419 | $h = 4.0 + ($r - $g) / ($maxC - $minC); 420 | } 421 | $h = $h / 6.0; 422 | } 423 | 424 | $h = (int)round(255.0 * $h); 425 | $s = (int)round(255.0 * $s); 426 | $l = (int)round(255.0 * $l); 427 | 428 | return (object) Array('hue' => $h, 'saturation' => $s, 'lightness' => $l); 429 | } 430 | 431 | /** 432 | * Convert color RGB to HSL 433 | * 434 | * @param string $selector css selector 435 | * @param array $attributes css attributes 436 | * 437 | * @return css rule 438 | */ 439 | function setCss($selector = false, $attributes = array()) 440 | { 441 | $print = ''; 442 | if ($selector && !empty($attributes)) { 443 | $print = $selector.'{'; 444 | foreach ($attributes as $key => $value) { 445 | $print .= $key.':'.$value.';'; 446 | } 447 | $print .= '}'; 448 | } 449 | return $print; 450 | } 451 | 452 | /** 453 | * Get main color 454 | * 455 | * @param bool $primary primary color 456 | * 457 | * @return main color 458 | */ 459 | function getMainColor($primary = false) 460 | { 461 | $maincolor = $primary ? $primary : randomColor(); 462 | $getcolor = filter_input(INPUT_GET, "color", FILTER_SANITIZE_STRING); 463 | $maincolor = $getcolor ? $getcolor : $maincolor; 464 | return $maincolor; 465 | } 466 | /** 467 | * Output inline css 468 | * 469 | * @param bool $primary primary color 470 | * 471 | * @return css output 472 | */ 473 | function setMainColor($primary = false) 474 | { 475 | $maincolor = getMainColor($primary); 476 | 477 | $maintext = '#F6F6F6'; 478 | $rgb = HTMLToRGB($maincolor); 479 | $hsl = RGBToHSL($rgb); 480 | $linkcolor = $maincolor; 481 | 482 | if ($hsl->lightness > 200) { 483 | $maintext = '#333'; 484 | $linkcolor = $maintext; 485 | } 486 | 487 | if ($maincolor) { 488 | $maincolor_dark = adjustBrightness($maincolor, -0.3); 489 | $output = ''; 550 | } 551 | return $output; 552 | } 553 | 554 | /** 555 | * Get BTC reates 556 | * 557 | * @return help text 558 | */ 559 | function getBtcRates() 560 | { 561 | $cache_file = 'include/btc-rates.json'; 562 | $remote_json = "https://bitpay.com/api/rates"; 563 | 564 | if (file_exists($cache_file)) { 565 | // if file is 24 hours (86400 seconds) old then regenerate. 566 | if (time() - filemtime($cache_file) > 86400) { 567 | $json = file_get_contents($remote_json); 568 | file_put_contents($cache_file, $json); 569 | } else { 570 | $json = file_get_contents($cache_file); 571 | } 572 | } else { 573 | $json = file_get_contents($remote_json); 574 | file_put_contents($cache_file, $json); 575 | } 576 | 577 | $data = json_decode($json); 578 | $dollar = $btc = 0; 579 | 580 | foreach ($data as $obj) { 581 | if ($obj->code == 'USD') { 582 | $btc = $obj->rate; 583 | } 584 | } 585 | $dollar = round(1/$btc, 8); 586 | 587 | $output = '1 BTC = ' . $btc . ' USD
'; 588 | $output .= '1 USD = '.$dollar.' BTC
'; 589 | $output .= 'Last update: '. date('F d Y', filemtime($cache_file)).''; 590 | 591 | return $output; 592 | } 593 | -------------------------------------------------------------------------------- /include/generator.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 0) { ?> 7 | 12 | 14 |
15 |
16 | 18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 32 |
33 | 34 | 35 | 0) { ?> 43 |
44 |
45 |
46 | 52 | $water) { 54 | echo ''; 60 | } 61 | 62 | if ($logo && $upthumb) { ?> 63 | 68 | 70 |
71 |
72 |
73 | 79 |
80 |
81 |
82 | 83 |
84 |
85 | 86 |
87 | 89 |
90 |
91 | 92 |
93 | 94 |
95 |
96 | 97 |
98 | 100 |
101 |
102 | 103 |
104 | 105 | 112 |
113 | 114 |
115 | 116 | 130 |
131 |
132 |
133 | 134 |
135 |
136 | 137 | 138 |
139 |
140 | '; 143 | foreach ($styles as $key => $style) { 144 | $activeattr = ($key == 0) ? 'checked' : ''; 145 | $activeclass = ($key == 0) ? 'active' : ''; 146 | 147 | $styleselecta .= ''; 151 | } 152 | $styleselecta .= '
'; 153 | ?> 154 |
155 | 156 |
157 | 158 | 162 | 250 | 251 |
252 |
253 | 254 |
255 | 260 |
261 |
262 |
263 | 264 |
265 |
266 |
267 |
268 |
269 | 271 |
272 |
273 |
274 |
275 | -------------------------------------------------------------------------------- /js/popper.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) Federico Zivolo 2019 3 | Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). 4 | */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?pe:10===e?se:pe||se}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),y&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,D(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=C(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=H('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return j(e.instance.popper,e.styles),V(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&j(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),j(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue}); 5 | //# sourceMappingURL=popper.min.js.map 6 | --------------------------------------------------------------------------------