Kaynağa Gözat

More Features & Bug Fixes

Fixed #17 - Log out bug when logged in
Fixed #18 - Added Page for No Access Guests
Fixed #22 - PHP Warning in check file
Fixed #24 - Added Remember Me with security backend
Fixed #26 - Icon Uploaded now included
causefx 9 yıl önce
ebeveyn
işleme
641aa7d3cb

+ 8 - 0
ajax_remove_file.php

@@ -0,0 +1,8 @@
+<?php
+if(isset($_POST['file'])){
+    $file = 'icons/' . $_POST['file'];
+    if(file_exists($file)){
+        unlink($file);
+    }
+}
+?>

+ 35 - 0
ajax_upload_file.php

@@ -0,0 +1,35 @@
+<?php
+    include('class.uploader.php');
+
+    $uploader = new Uploader();
+    $data = $uploader->upload($_FILES['files'], array(
+        'limit' => 10, //Maximum Limit of files. {null, Number}
+        'maxSize' => 1, //Maximum Size of files {null, Number(in MB's)}
+        'extensions' => array('jpg', 'png'), //Whitelist for file extension. {null, Array(ex: array('jpg', 'png'))}
+        'required' => false, //Minimum one file is required for upload {Boolean}
+        'uploadDir' => 'icons/', //Upload directory {String}
+        'title' => array('name'), //New file name {null, String, Array} *please read documentation in README.md
+        'removeFiles' => true, //Enable file exclusion {Boolean(extra for jQuery.filer), String($_POST field name containing json data with file names)}
+        'replace' => true, //Replace the file if it already exists  {Boolean}
+        'perms' => null, //Uploaded file permisions {null, Number}
+        'onCheck' => null, //A callback function name to be called by checking a file for errors (must return an array) | ($file) | Callback
+        'onError' => null, //A callback function name to be called if an error occured (must return an array) | ($errors, $file) | Callback
+        'onSuccess' => null, //A callback function name to be called if all files were successfully uploaded | ($files, $metas) | Callback
+        'onUpload' => null, //A callback function name to be called if all files were successfully uploaded (must return an array) | ($file) | Callback
+        'onComplete' => null, //A callback function name to be called when upload is complete | ($file) | Callback
+        'onRemove' => null //A callback function name to be called by removing files (must return an array) | ($removed_files) | Callback
+    ));
+
+    if($data['isComplete']){
+        $files = $data['data'];
+
+        echo json_encode($files['metas'][0]['name']);
+    }
+
+    if($data['hasErrors']){
+        $errors = $data['errors'];
+        echo json_encode($errors);
+    }
+
+    exit;
+?>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
bower_components/smoke/dist/css/smoke.min.css


+ 6 - 4
check.php

@@ -1,5 +1,7 @@
 <?php
 
+require_once("user.php");
+
 function check($extension) {
     
     if (extension_loaded($extension)) : 
@@ -74,8 +76,8 @@ function getFilePermission($file) {
     endif;
 }
 
-$db = dirname(__DIR__, 1) . "/users.db";
-$folder = dirname(__DIR__, 1) . "/users/";
+$db = DATABASE_LOCATION  . constant('User::DATABASE_NAME') . ".db";
+$folder = USER_HOME;
 
 ?>
 
@@ -117,7 +119,7 @@ $folder = dirname(__DIR__, 1) . "/users/";
             <!--Content-->
             <div id="content"  style="margin:0 20px; overflow:hidden">
                 
-                <h1><center>Check Persmissions</center></h1>
+                <h1><center>Check Requirements & Permissions</center></h1>
                 
                 <?php
                 
@@ -127,7 +129,7 @@ $folder = dirname(__DIR__, 1) . "/users/";
                 getFilePermission($db);
                 getFilePermission($folder);
                 getFilePermission((__DIR__));
-                getFilePermission(dirname(__DIR__, 1));
+                getFilePermission(dirname(__DIR__));
 
                 ?>
 

+ 474 - 0
class.uploader.php

@@ -0,0 +1,474 @@
+<?php
+# ======================================================================== #
+#
+#  Title      [PHP] Uploader
+#  Author:    CreativeDream
+#  Website:   https://github.com/CreativeDream/php-uploader
+#  Version:   0.4
+#  Date:      14-Sep-2016
+#  Purpose:   Validate, Remove, Upload, Download files to server.
+#  Information: Please don't forget to check your php.ini file for "upload_max_filesize", "post_max_size", "max_file_uploads"
+#
+# ======================================================================== #
+
+class Uploader {
+
+    protected $options = array(
+        'limit' => null,
+        'maxSize' => null,
+        'extensions' => null,
+        'required' => false,
+        'uploadDir' => 'uploads/',
+        'title' => array('auto', 10),
+        'removeFiles' => true,
+        'perms' => null,
+        'replace' => true,
+        'onCheck' => null,
+        'onError' => null,
+        'onSuccess' => null,
+        'onUpload' => null,
+        'onComplete' => null,
+        'onRemove' => null
+    );
+
+    public $error_messages = array(
+        1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini.",
+        2 => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.",
+        3 => "The uploaded file was only partially uploaded.",
+        4 => "No file was uploaded.",
+        6 => "Missing a temporary folder.",
+        7 => "Failed to write file to disk.",
+        8 => "A PHP extension stopped the file upload.",
+        'accept_file_types' => "Filetype not allowed",
+        'file_uploads' => "File uploading option in disabled in php.ini",
+        'post_max_size' => "The uploaded file exceeds the post_max_size directive in php.ini",
+        'max_file_size' => "File is too big",
+        'max_number_of_files' => "Maximum number of files exceeded",
+        'required_and_no_file' => "No file was choosed. Please select one.",
+        'no_download_content' => "File could't be download."
+    );
+
+    private $field = null;
+    private $data = array(
+        "hasErrors" => false,
+        "hasWarnings" => false,
+        "isSuccess" => false,
+        "isComplete" => false,
+        "data" => array(
+            "files" => array(),
+            "metas" => array()
+        )
+    );
+
+    public function __construct(){
+        // __construct function
+
+        $this->cache_data = $this->data;
+    }
+
+    /**
+     * upload method
+     *
+     * Return the initialize method
+     * @param $field {Array, String}
+     * @param $options {Array, null}
+     * @return array
+     */
+    public function upload($field, $options = null){
+        $this->data = $this->cache_data;
+        return $this->initialize($field, $options);
+    }
+
+    /**
+     * initialize method
+     *
+     * Initialize field values and properties.
+     * Merge options
+     * Prepare files
+     * @param $field {Array, String}
+     * @param $options {Array, null}
+     * @return array
+     */
+    private function initialize($field, $options){
+		if(is_array($field) && in_array($field, $_FILES)){
+			$this->field = $field;
+            $this->field['Field_Name'] = array_search($field, $_FILES);
+            $this->field['Field_Type'] = 'input';
+
+            if(!is_array($this->field['name'])){
+           	$this->field = array_merge($this->field, array("name" => array($this->field['name']), "tmp_name"=>array($this->field['tmp_name']), "type"=>array($this->field['type']), "error"=>array($this->field['error']), "size"=>array($this->field['size'])));
+            }
+
+            foreach($this->field['name'] as $key=>$value){ if(empty($value)){ unset($this->field['name'][$key]); unset($this->field['type'][$key]); unset($this->field['tmp_name'][$key]); unset($this->field['error'][$key]); unset($this->field['size'][$key]); } }
+
+            $this->field['length'] = count($this->field['name']);
+		}elseif(is_string($field) && $this->isURL($field)){
+            $this->field = array("name" => array($field), "size"=>array(), "type"=>array(), "error"=>array());
+            $this->field['Field_Type'] = 'link';
+            $this->field['length'] = 1;
+        }else{
+            return false;
+        }
+
+        if($options != null){
+            $this->setOptions($options);
+        }
+
+		return $this->prepareFiles();
+    }
+
+    /**
+     * setOptions method
+     *
+     * Merge options
+     * @param $options {Array}
+     */
+    private function setOptions($options){
+        if(!is_array($options)){return false;}
+        $this->options = array_merge($this->options, $options);
+    }
+
+	/**
+     * validation method
+     *
+     * Check the field and files
+     * @return boolean
+     */
+    private function validate($file = null){
+        $field = $this->field;
+        $errors = array();
+        $options = $this->options;
+
+        if($file == null){
+            $ini = array(ini_get('file_uploads'),((int) ini_get('upload_max_filesize')),((int) ini_get('post_max_size')), ((int) ini_get('max_file_uploads')));
+
+            if(!isset($field) || empty($field)) return false;
+            if(!$ini[0]) $errors[] = $this->error_messages['file_uploads'];
+
+            if($options['required'] && $field['length'] == 0) $errors[] = $this->error_messages['required_and_no_file'];
+            if(($options['limit'] && $field['length'] > $options['limit']) || ($field['length']) > $ini[3]) $errors[] = $this->error_messages['max_number_of_files'];
+            if(!file_exists($options['uploadDir']) && !is_dir($options['uploadDir']) && mkdir($options['uploadDir'], 750, true)){
+                $this->data['hasWarnings'] = true;
+                $this->data['warnings'] = "A new directory was created in " . realpath($options['uploadDir']);
+            }
+            if(!is_writable($options['uploadDir'])) @chmod($options['uploadDir'], 750);
+
+            if($field['Field_Type'] == "input"){
+                $total_size = 0; foreach($this->field['size'] as $key=>$value){ $total_size += $value; } $total_size = $total_size/1048576;
+                if($options['maxSize'] && $total_size > $options['maxSize']) $errors[] = $this->error_messages['max_file_size'];
+
+                if($ini[1] != 0 && $total_size > $ini[1]) $errors[] = $this->error_messages[1];
+                if($ini[2] != 0 && $total_size > $ini[2]) $errors[] = $this->error_messages['post_max_size'];
+            }
+        }else{
+            if(@$field['error'][$file['index']] > 0 && array_key_exists($field['error'][$file['index']], $this->error_messages)) $errors[] = $this->error_messages[$field['error'][$file['index']]];
+            if($options['extensions'] && !in_array($file['extension'], $options['extensions'])) $errors[] = $this->error_messages['accept_file_types'];
+            if($file['type'][0] == "image" && @!is_array(getimagesize($file['tmp']))) $errors[] = $this->error_messages['accept_file_types'];
+            if($options['maxSize'] && $file['size'][0] > $options['maxSize']) $errors[] = $this->error_messages['max_file_size'];
+
+            if($field['Field_Type'] == 'link' && empty($this->cache_download_content)) $errors[] = "";
+        }
+
+        $custom = $this->_onCheck($file); if($custom) $errors = array_merge($errors, $custom);
+
+        if(!empty($errors)){
+            $this->data['hasErrors'] = true;
+            if(!isset($this->data['errors'])) $this->data['errors'] = array();
+
+            $this->data['errors'][] = $errors;
+            $custom = $this->_onError($errors, $file);
+
+            return false;
+        }else{
+            return true;
+        }
+	}
+
+	/**
+     * prepareFiles method
+     *
+     * Prepare files for upload/download and generate meta infos
+     * @return $this->data
+     */
+	private function prepareFiles(){
+        $field = $this->field;
+        $validate = $this->validate();
+
+        if($validate){
+            $files = array();
+            $removed_files = $this->removeFiles();
+            $isAddMoreMode = count(preg_grep('/^(\d+)\:\/\/(.*)/i', $removed_files)) > 0;
+            $addMoreMatches = array();
+
+            for($i = 0; $i < count($field['name']); $i++){
+
+                $metas = array();
+
+                if($field['Field_Type'] == 'input'){
+                    $tmp_name = $field['tmp_name'][$i];
+                }elseif($field['Field_Type'] == 'link'){
+                    $link = $this->downloadFile($field['name'][0], false, true);
+
+                    $tmp_name = $field['name'][0];
+                    $field['name'][0] = pathinfo($field['name'][0], PATHINFO_BASENAME);
+                    $field['type'][0] = $link['type'];
+                    $field['size'][0] = $link['size'];
+                    $field['error'][0] = 0;
+                }
+
+                $metas['extension'] = substr(strrchr($field['name'][$i], "."),1);
+                $metas['type'] = preg_split('[/]', $field['type'][$i]);
+                $metas['extension'] = $field['Field_Type'] == 'link' && empty($metas['extension']) ? $metas['type'][1] : $metas['extension'];
+                $metas['old_name'] = $field['name'][$i];
+                $metas['size'] = $field['size'][$i];
+                $metas['size2'] = $this->formatSize($metas['size']);
+                $metas['name'] = $this->generateFileName($this->options['title'], array('name'=>substr($metas['old_name'], 0, (!empty($metas['extension']) ? -(strlen($metas['extension'])+1) : strlen($metas['old_name']))), 'size'=>$metas['size'], 'extension'=> $metas['extension']));
+                $metas['file'] = $this->options['uploadDir'] . $metas['name'];
+                $metas['replaced'] = file_exists($metas['file']);
+                $metas['date'] = date('r');
+
+                $is_file_removed = in_array($field['name'][$i], $removed_files);
+                if($isAddMoreMode){
+                    $addMoreMatches[$field['name'][$i]][] = $i;
+                    $matches = preg_grep('/^'.(count($addMoreMatches[$field['name'][$i]])-1).'\:\/\/'.$field['name'][$i].'/i', $removed_files);
+                    if(count($matches) == 1) {
+                        $is_file_removed = true;
+                    }
+                }
+
+                if(!$is_file_removed && $this->validate(array_merge($metas, array('index'=>$i, 'tmp'=>$tmp_name))) && $this->uploadFile($tmp_name, $metas['file'])){
+                    if($this->options['perms']) @chmod($metas['file'], $this->options['perms']);
+
+                    $custom = $this->_onUpload($metas, $this->field); if($custom && is_array($custom)) $metas = array_merge($custom, $metas);
+
+                    ksort($metas);
+
+                    $files[] = $metas['file'];
+                    $this->data['data']['metas'][] = $metas;
+                }
+            }
+
+            $this->data['isSuccess'] = count($field['name']) - count($removed_files) == count($files);
+            $this->data['data']['files'] = $files;
+
+            if($this->data['isSuccess']) $custom = $this->_onSuccess($this->data['data']['files'], $this->data['data']['metas']);
+
+            $this->data['isComplete'] = true;
+            $custom = $this->_onComplete($this->data['data']['files'], $this->data['data']['metas']);
+        }
+
+        return $this->data;
+	}
+
+    /**
+     * uploadFile method
+     *
+     * Upload/Download files to server
+     * @return boolean
+     */
+    private function uploadFile($source, $destination){
+        if($this->field['Field_Type'] == 'input'){
+            return @move_uploaded_file($source, $destination);
+        }elseif($this->field['Field_Type'] == 'link'){
+            return $this->downloadFile($source, $destination);
+        }
+    }
+
+	/**
+     * removeFiles method
+     *
+     * Remove files or cancel upload for them
+     * @return array
+     */
+	private function removeFiles(){
+        $removed_files = array();
+        if($this->options['removeFiles'] !== false){
+            foreach($_POST as $key=>$value){
+                preg_match((is_string($this->options['removeFiles']) ? $this->options['removeFiles'] : '/jfiler-items-exclude-'.$this->field['Field_Name'].'-(\d+)/'), $key, $matches);
+                if(isset($matches) && !empty($matches)){
+                    $input = $_POST[$matches[0]];
+                    if($this->isJson($input)) $removed_files = json_decode($input, true);
+
+                    $custom = $this->_onRemove($removed_files, $this->field); if($custom && is_array($custom)) $removed_files = $custom;
+                }
+            }
+        }
+
+        return $removed_files;
+	}
+
+    /**
+     * downloadFile method
+     *
+     * Download file to server
+     * @return boolean
+     */
+    private function downloadFile($source, $destination, $info = false){
+        set_time_limit(80);
+
+        $forInfo = array(
+            "size" => 1,
+            "type" => "text/plain"
+        );
+
+        if(!isset($this->cache_download_content)){
+            $file_content = file_get_contents($source);
+            if($info){
+                $headers = implode(" ", $http_response_header);
+                if(preg_match('/Content-Length: (\d+)/', $headers, $matches)) $forInfo['size'] = $matches[1];
+                if(preg_match('/Content-Type: (\w+\/\w+)/', $headers, $matches)) $forInfo['type'] = $matches[1];
+
+                $this->cache_download_content = $file_content;
+
+                return $forInfo;
+            }
+        }else{
+            $file_content = $this->cache_download_content;
+        }
+
+        $downloaded_file = @fopen($destination, 'w');
+        $written = @fwrite($downloaded_file, $file_content);
+        @fclose($downloaded_file);
+
+        return $written;
+    }
+
+	/**
+     * generateFileName method
+     *
+     * Generated a file name by uploading
+     * @return boolean
+     */
+	private function generateFileName($conf, $file, $skip_replace_check = false){
+        $file['name'] = preg_replace("[^\w\s\d\.\-_~,;:\[\]\(\]]", '', $file['name']);
+		$type = is_array($conf) && isset($conf[0]) ? $conf[0] : $conf;
+        $type = $type ? $type : 'name';
+		$length = is_array($conf) && isset($conf[1]) ? $conf[1] : null;
+		$random_string = substr(str_shuffle("_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length ? $length : 10);
+        $extension = !empty($file['extension']) ? "." . $file['extension'] : "";
+        $string = "";
+        $is_extension_used = false;
+
+		switch($type){
+			case "auto":
+				$string = $random_string;
+			break;
+			case "name":
+				$string = $file['name'];
+			break;
+			default:
+				$string = $type;
+
+				if(strpos($string, "{{random}}") !== false){
+					$string = str_replace("{{random}}", $random_string, $string);
+				}
+				if(strpos($string, "{{file_name}}") !== false){
+					$string = str_replace("{{file_name}}", $file['name'], $string);
+				}
+				if(strpos($string, "{{file_size}}") !== false){
+					$string = str_replace("{{file_size}}", $file['size'], $string);
+				}
+				if(strpos($string, "{{timestamp}}") !== false){
+					$string = str_replace("{{timestamp}}", time(), $string);
+				}
+				if(strpos($string, "{{date}}") !== false){
+					$string = str_replace("{{date}}", date('Y-n-d_H:i:s'), $string);
+				}
+                if(strpos($string, "{{extension}}") !== false){
+                    $is_extension_used = true;
+                    $string = str_replace("{{extension}}", $file['extension'], $string);
+                }
+                if(strpos($string, "{{.extension}}") !== false){
+                    $is_extension_used = true;
+                    $string = str_replace("{{.extension}}", $extension, $string);
+                }
+		}
+
+        if(!$is_extension_used)
+            $string .= $extension;
+
+        if(!$this->options['replace'] && !$skip_replace_check){
+            $name = $file['name'];
+            $i = 1;
+            while (file_exists($this->options['uploadDir'].$string)) {
+                $file['name'] = $name . " ({$i})";
+                $string = $this->generateFileName($conf, $file, true);
+                $i++;
+            }
+        }
+
+		return $string;
+	}
+
+    /**
+     * isJson method
+     *
+     * Check if string is a valid json
+     * @return boolean
+     */
+    private function isJson($string) {
+        json_decode($string);
+        return (json_last_error() == JSON_ERROR_NONE);
+    }
+
+    /**
+     * isURL method
+     *
+     * Check if string $url is a link
+     * @return boolean
+     */
+    private function isURL($url){
+        return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
+    }
+
+    /**
+     * formatSize method
+     *
+     * Convert file size
+     * @return float
+     */
+    private function formatSize($bytes){
+        if ($bytes >= 1073741824){
+            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
+        }elseif ($bytes >= 1048576){
+            $bytes = number_format($bytes / 1048576, 2) . ' MB';
+        }elseif ($bytes > 0){
+            $bytes = number_format($bytes / 1024, 2) . ' KB';
+        }else{
+            $bytes = '0 bytes';
+        }
+
+        return $bytes;
+    }
+
+	private function _onCheck(){
+		$arguments = func_get_args();
+		return $this->options['onCheck'] != null && function_exists($this->options['onCheck']) ? $this->options['onCheck'](@$arguments[0]) : null;
+	}
+
+	private function _onSuccess(){
+		$arguments = func_get_args();
+		return $this->options['onSuccess'] != null && function_exists($this->options['onSuccess']) ? $this->options['onSuccess'](@$arguments[0], @$arguments[1]) : null;
+	}
+
+	private function _onError(){
+		$arguments = func_get_args();
+		return $this->options['onError'] && function_exists($this->options['onError']) ? $this->options['onError'](@$arguments[0], @$arguments[1]) : null;
+	}
+
+	private function _onUpload(){
+		$arguments = func_get_args();
+		return $this->options['onUpload'] && function_exists($this->options['onUpload']) ? $this->options['onUpload'](@$arguments[0], @$arguments[1]) : null;
+	}
+
+    private function _onComplete(){
+		$arguments = func_get_args();
+		return $this->options['onComplete'] != null && function_exists($this->options['onComplete']) ? $this->options['onComplete'](@$arguments[0], @$arguments[1]) : null;
+	}
+
+    private function _onRemove(){
+		$arguments = func_get_args();
+		return $this->options['onRemove'] && function_exists($this->options['onRemove']) ? $this->options['onRemove'](@$arguments[0], @$arguments[1]) : null;
+	}
+}
+?>

+ 191 - 0
css/jquery.filer-dragdropbox-theme.css

@@ -0,0 +1,191 @@
+/*!
+ * CSS jQuery.filer
+ * Theme: DragDropBox
+ * Copyright (c) 2016 CreativeDream
+ * Version: 1.3 (14-Sep-2016)
+*/
+
+/*-------------------------
+	Input
+-------------------------*/
+.jFiler-input-dragDrop {
+    display: block;
+    width: 343px;
+    margin: 0 auto 25px auto;
+    padding: 25px;
+    color: #97A1A8;
+    background: #F9FBFE;
+    border: 2px dashed #C8CBCE;
+    text-align: center;
+    -webkit-transition: box-shadow 0.3s,
+                        border-color 0.3s;
+    -moz-transition: box-shadow 0.3s,
+                        border-color 0.3s;
+    transition: box-shadow 0.3s,
+                        border-color 0.3s;
+}
+
+.jFiler .jFiler-input-dragDrop.dragged {
+    border-color: #aaa;
+    box-shadow: inset 0 0 20px rgba(0,0,0,.08);
+}
+
+.jFiler .jFiler-input-dragDrop.dragged * {
+    pointer-events: none;
+}
+
+.jFiler .jFiler-input-dragDrop.dragged .jFiler-input-icon {
+    -webkit-transform: rotate(180deg);
+    -ms-transform: rotate(180deg);
+    transform: rotate(180deg);
+}
+
+.jFiler .jFiler-input-dragDrop.dragged .jFiler-input-text,
+.jFiler .jFiler-input-dragDrop.dragged .jFiler-input-choose-btn {
+    filter: alpha(opacity=30);
+    opacity: 0.3;
+}
+
+.jFiler-input-dragDrop .jFiler-input-icon {
+    font-size: 48px;
+    margin-top: -10px;
+    -webkit-transition: all 0.3s ease;
+    -moz-transition: all 0.3s ease;
+    transition: all 0.3s ease;
+}
+
+.jFiler-input-text h3 {
+    margin: 0;
+    font-size: 18px;
+}
+
+.jFiler-input-text span {
+    font-size: 12px;
+}
+
+.jFiler-input-choose-btn {
+    display: inline-block;
+    padding: 8px 14px;
+    outline: none;
+    cursor: pointer;
+    text-decoration: none;
+    text-align: center;
+    white-space: nowrap;
+    font-size: 12px;
+    font-weight: bold;
+    color: #8d9496;
+    border-radius: 3px;
+    border: 1px solid #c6c6c6;
+    vertical-align: middle;
+    *background-color: #fff;
+    box-shadow: 0px 1px 5px rgba(0,0,0,0.05);
+    -webkit-transition: all 0.2s;
+    -moz-transition: all 0.2s;
+    transition: all 0.2s;
+}
+
+.jFiler-input-choose-btn:hover,
+.jFiler-input-choose-btn:active {
+    color: inherit;
+}
+
+.jFiler-input-choose-btn:active {
+    background-color: #f5f5f5;
+}
+
+/* gray */
+.jFiler-input-choose-btn.gray {
+    background-image: -webkit-gradient(linear,0 0,0 100%,from(#fcfcfc),to(#f5f5f5));
+    background-image: -webkit-linear-gradient(top,#fcfcfc,#f5f5f5);
+    background-image: -o-linear-gradient(top,#fcfcfc,#f5f5f5);
+    background-image: linear-gradient(to bottom,#fcfcfc,#f5f5f5);
+    background-image: -moz-linear-gradient(top,#fcfcfc,#f5f5f5);
+}
+
+.jFiler-input-choose-btn.gray:hover {
+    filter: alpha(opacity=87);
+    opacity: 0.87;
+}
+
+.jFiler-input-choose-btn.gray:active {
+    background-color: #f5f5f5;
+    background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#fcfcfc));
+    background-image: -webkit-linear-gradient(top,#f5f5f5,#fcfcfc);
+    background-image: -o-linear-gradient(top,#f5f5f5,#fcfcfc);
+    background-image: linear-gradient(to bottom,#f5f5f5,#fcfcfc);
+    background-image: -moz-linear-gradient(top,#f5f5f5,#fcfcfc);
+}
+
+/* blue */
+.jFiler-input-choose-btn.blue {
+    color: #48A0DC;
+    border: 1px solid #48A0DC;
+}
+
+.jFiler-input-choose-btn.blue:hover {
+    background: #48A0DC;
+}
+
+.jFiler-input-choose-btn.blue:active {
+    background: #48A0DC;
+}
+
+/* green */
+.jFiler-input-choose-btn.green {
+    color: #27ae60;
+    border: 1px solid #27ae60;
+}
+
+.jFiler-input-choose-btn.green:hover {
+    background: #27ae60;
+}
+
+.jFiler-input-choose-btn.green:active {
+    background: #27ae60;
+}
+
+/* red */
+.jFiler-input-choose-btn.red {
+    color: #ed5a5a;
+    border: 1px solid #ed5a5a;
+}
+
+.jFiler-input-choose-btn.red:hover {
+    background: #ed5a5a;
+}
+
+.jFiler-input-choose-btn.red:active {
+    background: #E05252;
+}
+
+/* black */
+.jFiler-input-choose-btn.black {
+    color: #555;
+    border: 1px solid #555;
+}
+
+.jFiler-input-choose-btn.black:hover {
+    background: #555;
+}
+
+.jFiler-input-choose-btn.black:active {
+    background: #333;
+}
+
+.jFiler-input-choose-btn.blue:hover,
+.jFiler-input-choose-btn.green:hover,
+.jFiler-input-choose-btn.red:hover,
+.jFiler-input-choose-btn.black:hover {
+    border-color: transparent;
+    color: #fff;
+}
+
+.jFiler-input-choose-btn.blue:active,
+.jFiler-input-choose-btn.green:active,
+.jFiler-input-choose-btn.red:active,
+.jFiler-input-choose-btn.black:active {
+    border-color: transparent;
+    color: #fff;
+    filter: alpha(opacity=87);
+    opacity: 0.87;
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 145 - 0
css/jquery.filer-icons/jquery-filer-preview.html


Dosya farkı çok büyük olduğundan ihmal edildi
+ 8 - 0
css/jquery.filer-icons/jquery-filer.css


BIN
css/jquery.filer-icons/jquery-filer.eot


+ 283 - 0
css/jquery.filer-icons/jquery-filer.svg

@@ -0,0 +1,283 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2015-1-20: Created.
+-->
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+Created by FontForge 20120731 at Tue Jan 20 14:13:11 2015
+ By Iulian Galciuc,,,
+Created by Iulian Galciuc,,, with FontForge 2.0 (http://fontforge.sf.net)
+</metadata>
+<defs>
+<font id="jquery-filer" horiz-adv-x="512" >
+  <font-face 
+    font-family="jquery-filer"
+    font-weight="500"
+    font-stretch="normal"
+    units-per-em="512"
+    panose-1="2 0 6 9 0 0 0 0 0 0"
+    ascent="448"
+    descent="-64"
+    bbox="-0.361328 -64.8438 512.331 448.844"
+    underline-thickness="25.6"
+    underline-position="-51.2"
+    unicode-range="U+F2F6-F344"
+  />
+    <missing-glyph />
+    <glyph glyph-name="uniF32B" unicode="&#xf32b;" 
+d="M480 192c0 -29 -10 -55.7917 -30 -80.375c-20 -24.5833 -47.1667 -44 -81.5 -58.25s-71.8333 -21.375 -112.5 -21.375c-11.6667 0 -23.75 0.666668 -36.25 2c-33 -29.1667 -71.3333 -49.3333 -115 -60.5c-8.16666 -2.33333 -17.6667 -4.16667 -28.5 -5.5
+c-2.83334 -0.333454 -5.375 0.416546 -7.625 2.25c-2.25 1.83333 -3.70834 4.25 -4.375 7.25v0.25c-0.5 0.666666 -0.541668 1.66667 -0.125 3c0.416664 1.3333 0.583336 2.16663 0.5 2.5c-0.0833359 0.333303 0.291664 1.12497 1.125 2.375l1.5 2.25l1.75 2.125l2 2.25
+c1.16666 1.33333 3.75 4.20833 7.75 8.625s6.875 7.58333 8.625 9.5s4.33334 5.20833 7.75 9.875s6.125 8.91667 8.125 12.75c2 3.83333 4.25 8.75 6.75 14.75s4.66666 12.3333 6.5 19c-26.1667 14.8334 -46.7917 33.1667 -61.875 55
+c-15.0833 21.8333 -22.625 45.25 -22.625 70.25c0 21.6667 5.91667 42.375 17.75 62.125s27.75 36.7917 47.75 51.125c20.0001 14.3333 43.8334 25.7083 71.5 34.125c27.6667 8.41666 56.6667 12.625 87 12.625c40.6667 0 78.1667 -7.125 112.5 -21.375
+s61.5 -33.6667 81.5 -58.25c20 -24.5833 30 -51.375 30 -80.375z" />
+    <glyph glyph-name="uniF30C" unicode="&#xf30c;" 
+d="M385 232.5c0 4.66667 -1.5 8.5 -4.5 11.5l-22.75 22.5c-3.16666 3.16666 -6.91666 4.75 -11.25 4.75s-8.08334 -1.58334 -11.25 -4.75l-102 -101.75l-56.5 56.5c-3.16667 3.16667 -6.91667 4.75 -11.25 4.75s-8.08333 -1.58333 -11.25 -4.75l-22.75 -22.5
+c-3 -3 -4.5 -6.83333 -4.5 -11.5c0 -4.5 1.5 -8.25 4.5 -11.25l90.5 -90.5c3.16667 -3.16666 6.91667 -4.75 11.25 -4.75c4.5 0 8.33333 1.58334 11.5 4.75l135.75 135.75c3 3 4.5 6.75 4.5 11.25zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375
+c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375
+c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" />
+    <glyph glyph-name="uniF33F" unicode="&#xf33f;" 
+d="M288 72v48c0 2.33334 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-48c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41666 -2.25 -5.75v-48c0 -2.33334 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h48c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41666 2.25 5.75
+zM352 240c0 14.6667 -4.625 28.25 -13.875 40.75s-20.7917 22.1667 -34.625 29s-28 10.25 -42.5 10.25c-40.5 0 -71.4167 -17.75 -92.75 -53.25c-2.5 -4 -1.83333 -7.5 2 -10.5l33 -25c1.16667 -1 2.75 -1.5 4.75 -1.5c2.66667 0 4.75 1 6.25 3
+c8.83333 11.3333 16 19 21.5 23c5.66713 4 12.8338 6 21.5 6c8 0 15.125 -2.16666 21.375 -6.5c6.25 -4.33333 9.375 -9.25 9.375 -14.75c0 -6.33356 -1.66666 -11.4169 -5 -15.25c-3.33334 -3.83333 -9 -7.58333 -17 -11.25
+c-10.5 -4.66667 -20.125 -11.875 -28.875 -21.625s-13.125 -20.2083 -13.125 -31.375v-9c0 -2.33333 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h48c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41667 2.25 5.75c0 3.16667 1.79166 7.29167 5.375 12.375
+s8.125 9.20833 13.625 12.375c5.33572 3 9.41907 5.375 12.25 7.125c2.83456 1.75 6.66791 4.66667 11.5 8.75c4.83591 4.08333 8.54425 8.08333 11.125 12c2.58859 3.91747 4.92194 8.95914 7 15.125c2.08334 6.16667 3.125 12.9167 3.125 20.25zM448 192
+c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875
+c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875
+c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" />
+    <glyph glyph-name="uniF2F8" unicode="&#xf2f8;" 
+d="M340.8 365v0c59.1006 0 107.2 -48.2998 107.2 -107.7c0 -29.5996 -11.7998 -57.2002 -32.7998 -77.5l-148.3 -149.8l-10.9004 -11l-10.9004 11l-151.199 152.7c-19.3008 20.2002 -29.9004 46.7002 -29.9004 74.5996c0 59.4004 48.0996 107.7 107.2 107.7
+c33.7998 0 64.7998 -15.7998 84.7998 -41.7998c20 26 51 41.7998 84.7998 41.7998z" />
+    <glyph glyph-name="uniF30D" unicode="&#xf30d;" 
+d="M256 320c-34 0 -65.7917 -5.79166 -95.375 -17.375c-29.5834 -11.5833 -53.0834 -27.2083 -70.5 -46.875c-17.4167 -19.6667 -26.125 -40.9167 -26.125 -63.75c0 -18.6667 5.95834 -36.4583 17.875 -53.375c11.9167 -16.9167 28.7083 -31.5417 50.375 -43.875
+l21.75 -12.5l-6.75 -24c-4 -15.1667 -9.83333 -29.5 -17.5 -43c25.3333 10.5 48.25 24.75 68.75 42.75l10.75 9.5l14.25 -1.5c11.5 -1.33334 22.3333 -2 32.5 -2c34 -3.8147e-06 65.7917 5.79166 95.375 17.375s53.0833 27.2083 70.5 46.875
+c17.4167 19.6667 26.125 40.9167 26.125 63.75s-8.70834 44.0833 -26.125 63.75c-17.4167 19.6667 -40.9167 35.2917 -70.5 46.875s-61.375 17.375 -95.375 17.375zM480 192c0 -29 -10 -55.7917 -30 -80.375c-20 -24.5833 -47.1667 -44 -81.5 -58.25
+s-71.8333 -21.375 -112.5 -21.375c-11.6667 0 -23.75 0.666668 -36.25 2c-33 -29.1667 -71.3333 -49.3333 -115 -60.5c-8.16666 -2.33333 -17.6667 -4.16667 -28.5 -5.5h-1.25c-2.5 0 -4.75 0.875 -6.75 2.625s-3.33334 4.04167 -4 6.875v0.25
+c-0.5 0.666666 -0.541668 1.66667 -0.125 3c0.416664 1.3333 0.583336 2.16663 0.5 2.5c-0.0833359 0.333303 0.291664 1.12497 1.125 2.375l1.5 2.25l1.75 2.125l2 2.25c1.16666 1.33333 3.75 4.20833 7.75 8.625s6.875 7.58333 8.625 9.5s4.33334 5.20833 7.75 9.875
+s6.125 8.91667 8.125 12.75c2 3.83333 4.25 8.75 6.75 14.75s4.66666 12.3333 6.5 19c-26.1667 14.8334 -46.7917 33.1667 -61.875 55c-15.0833 21.8333 -22.625 45.25 -22.625 70.25c0 29 10 55.7917 30 80.375c20 24.5833 47.1667 44 81.5 58.25
+s71.8333 21.375 112.5 21.375c40.6667 0 78.1667 -7.125 112.5 -21.375s61.5 -33.6667 81.5 -58.25c20 -24.5833 30 -51.375 30 -80.375z" />
+    <glyph glyph-name="uniF330" unicode="&#xf330;" 
+d="M384 184v-80c0 -19.8333 -7.04166 -36.7917 -21.125 -50.875s-31.0417 -21.125 -50.875 -21.125h-208c-19.8333 0 -36.7917 7.04167 -50.875 21.125c-14.0833 14.0834 -21.125 31.0417 -21.125 50.875v208c0 19.834 7.04167 36.7923 21.125 50.875
+c14.0834 14.0833 31.0417 21.125 50.875 21.125h176c2.33334 0 4.25 -0.75 5.75 -2.25s2.25 -3.41666 2.25 -5.75v-16c0 -2.33334 -0.75 -4.25 -2.25 -5.75s-3.41666 -2.25 -5.75 -2.25h-176c-11 0 -20.4167 -3.91666 -28.25 -11.75s-11.75 -17.25 -11.75 -28.25v-208
+c-3.8147e-06 -11 3.91666 -20.4167 11.75 -28.25s17.25 -11.75 28.25 -11.75h208c11 -3.8147e-06 20.4167 3.91666 28.25 11.75s11.75 17.25 11.75 28.25v80c0 2.33333 0.75 4.25 2.25 5.75s3.41666 2.25 5.75 2.25h16c2.33334 0 4.25 -0.75 5.75 -2.25
+s2.25 -3.41667 2.25 -5.75zM480 400v-128c0 -4.33334 -1.58334 -8.08334 -4.75 -11.25c-3.16666 -3.16669 -6.91666 -4.75002 -11.25 -4.75c-4.33334 0 -8.08334 1.58334 -11.25 4.75l-44 44l-163 -163c-1.66667 -1.66667 -3.58333 -2.5 -5.75 -2.5
+s-4.08333 0.833328 -5.75 2.5l-28.5 28.5c-1.66667 1.66798 -2.5 3.58466 -2.5 5.75c0 2.16803 0.833328 4.0847 2.5 5.75l163 163l-44 44c-3.16666 3.16666 -4.75 6.91666 -4.75 11.25s1.58334 8.08334 4.75 11.25s6.91666 4.75 11.25 4.75h128
+c4.33334 0 8.08334 -1.58334 11.25 -4.75s4.75 -6.91666 4.75 -11.25z" />
+    <glyph glyph-name="uniF342" unicode="&#xf342;" 
+d="M0 237.177v210.823h210.823v-210.823h-210.823zM30.1172 417.883v-150.589h150.589v150.589h-150.589zM301.177 448h210.823v-210.823h-210.823v210.823zM481.883 267.294v150.589h-150.589v-150.589h150.589zM0 -64v210.823h210.823v-210.823h-210.823zM30.1172 116.706
+v-150.589h150.589v150.589h-150.589zM301.177 -64v210.823h210.823v-210.823h-210.823zM331.294 116.706v-150.589h150.589v150.589h-150.589z" />
+    <glyph glyph-name="uniF31F" unicode="&#xf31f;" 
+d="M291.147 448l160.617 -159.864v-352.136h-391.529v512h230.912zM301.177 395.535v-98.123h98.5752zM90.3525 -33.8828h331.295v301.177h-150.589v150.589h-180.706v-451.766zM273.581 291.056v108.06h58.3184v-108.06h-58.3184zM289.876 286.768v46.3115h112.349
+v-46.3115h-112.349zM320.75 317.642v51.457h44.5967v-51.457h-44.5967z" />
+    <glyph glyph-name="uniF30B" unicode="&#xf30b;" 
+d="M421.647 387.765h90.3525v-451.765h-512v451.765h90.3525v30.1182h90.3535v-30.1182h150.588v30.1182h90.3535v-30.1182zM361.412 387.765v-60.2354h30.1172v60.2354h-30.1172zM120.471 387.765v-60.2354h30.1172v60.2354h-30.1172zM481.883 -33.8828v268.68h-451.766
+v-268.68h451.766zM30.1172 264.915h451.766v92.7324h-60.2354v-60.2354h-90.3535v60.2354h-150.588v-60.2354h-90.3535v60.2354h-60.2354v-92.7324z" />
+    <glyph glyph-name="uniF307" unicode="&#xf307;" 
+d="M512 -48.5801l0.331055 -15.4199h-512.692l0.361328 15.4199c1.89746 81.8604 84.9014 151.673 199.288 169.412v38.6406c-16.6846 14.9082 -28.1895 38.8818 -35.5088 59.1816c-8.94434 4.90918 -16.9863 14.3662 -22.5576 26.8652
+c-9.78809 22.0459 -7.40918 43.2783 5.39062 52.3135c-0.511719 6.62598 -0.782227 13.0713 -0.782227 19.2451l-0.0908203 11.1143c-0.391602 34.2734 -0.842773 76.9199 50.7178 81.5283c0 0.150391 1.3252 2.68066 2.31934 4.54785
+c7.95117 15.5107 19.8174 32.165 59.3623 33.5811l7.95117 0.150391c56.9521 0 95.6533 -21.1123 108.965 -59.4521c3.70508 -10.6621 0 -20.1191 -3.19238 -28.4609c-3.88477 -9.93945 -8.22168 -21.2334 -5.84277 -41.2012
+c0.933594 -7.28809 0.391602 -14.6074 -0.451172 -21.7754c10.6006 -9.21582 13.3721 -28.3408 6.2041 -49.0615c-5.12012 -14.9688 -13.915 -26.1123 -23.9141 -31.1113c-6.89648 -18.8535 -17.4375 -40.96 -32.2559 -55.2061v-41.3818
+c112.73 -18.3711 194.5 -88.0029 196.397 -168.93zM31.7441 -33.8828v-0.0292969h448.542c-11.7158 62.3135 -84.9014 114.176 -181.609 126.253l-13.1914 1.65625v82.1006l5.96289 4.51758c10.8125 8.16211 21.8652 27.5576 30.3887 53.248l3.43359 10.3008h10.8428
+c-0.151367 0.481445 4.21582 4.96875 7.1377 13.6729c2.13867 6.11426 2.5 11.084 2.25879 14.2158l-13.2822 -1.44531l2.68066 24.2441c0.994141 7.55957 1.92773 14.668 1.20508 20.3301c-3.31348 27.5273 3.28223 44.5439 7.64941 55.8076
+c1.14453 2.95117 2.71094 6.9873 2.71094 8.28223c-11.7461 33.5215 -55.417 38.6113 -80.3838 38.6113l-6.83691 -0.121094c-25.2988 -0.933594 -29.2139 -8.49316 -33.7324 -17.2871c-3.73438 -7.22852 -9.96875 -19.3057 -26.3828 -20.751
+c-21.7451 -1.95801 -23.7324 -10.7822 -23.2803 -51.1699l0.0898438 -11.4453c0 -9.00488 0.663086 -18.6729 1.92773 -28.6113l2.89062 -22.5586l-15.3594 4.30762c0.241211 -3.10254 1.11426 -7.43945 3.37305 -12.499c3.6748 -8.28223 8.34277 -12.3184 9.93848 -12.8906
+l8.85449 -1.53613l2.5 -8.46289c9.00586 -27.2266 20.9922 -47.5557 32.8281 -55.748l6.50586 -4.51758v-80.293l-13.2822 -1.56641c-98.2734 -11.5352 -172.574 -63.5488 -184.38 -126.615z" />
+    <glyph glyph-name="uniF2F6" unicode="&#xf2f6;" 
+d="M449.75 274.5c0 -6.6687 -2.33334 -12.3354 -7 -17l-181 -181l-34 -34c-4.66667 -4.66667 -10.3333 -7 -17 -7s-12.3333 2.33333 -17 7l-34 34l-90.5 90.5c-4.66679 4.66733 -7.00012 10.334 -7 17c0 6.6674 2.33334 12.3341 7 17l34 34c4.66666 4.66667 10.3333 7 17 7
+s12.3333 -2.33333 17 -7l73.5 -73.75l164 164.25c4.66666 4.66666 10.3333 7 17 7s12.3333 -2.33334 17 -7l34 -34c4.66666 -4.66776 7 -10.3344 7 -17z" />
+    <glyph glyph-name="uniF32D" unicode="&#xf32d;" 
+d="M304 104v-56c0 -4.33333 -1.58334 -8.08333 -4.75 -11.25s-6.91666 -4.75 -11.25 -4.75h-64c-4.33333 -1.90735e-06 -8.08333 1.58333 -11.25 4.75s-4.75 6.91667 -4.75 11.25v56c0 4.33334 1.58333 8.08334 4.75 11.25s6.91667 4.75 11.25 4.75h64
+c4.33334 0 8.08334 -1.58334 11.25 -4.75s4.75 -6.91666 4.75 -11.25zM311.5 368l-7 -192c-0.166656 -4.33333 -1.875 -8.08333 -5.125 -11.25s-7.04166 -4.75 -11.375 -4.75h-64c-4.33333 0 -8.125 1.58333 -11.375 4.75s-4.95833 6.91667 -5.125 11.25l-7 192
+c-0.166672 4.33334 1.29167 8.08334 4.375 11.25s6.79167 4.75 11.125 4.75h80c4.33563 0 8.04398 -1.58334 11.125 -4.75c3.08807 -3.16666 4.54642 -6.91666 4.375 -11.25z" />
+    <glyph glyph-name="uniF33D" unicode="&#xf33d;" 
+d="M481.883 161.883c0 -124.567 -101.316 -225.883 -225.883 -225.883s-225.883 101.315 -225.883 225.883c0 105.352 74.5713 198.144 177.333 220.642l6.44531 -29.4248c-89.0273 -19.4863 -153.66 -99.9004 -153.66 -191.217
+c0 -107.942 87.8232 -195.766 195.765 -195.766s195.765 87.8232 195.765 195.766c0 91.1953 -64.542 171.61 -153.479 191.187l6.47559 29.4248c102.641 -22.6182 177.122 -115.381 177.122 -220.611zM271.059 448v-301.177h-30.1172v301.177h30.1172z" />
+    <glyph glyph-name="uniF2F7" unicode="&#xf2f7;" 
+d="M448 176c-25.3333 39.3333 -57.0833 68.75 -95.25 88.25c10.1667 -17.3333 15.25 -36.0833 15.25 -56.25c0 -30.8333 -10.9583 -57.2083 -32.875 -79.125c-21.9167 -21.9167 -48.2917 -32.875 -79.125 -32.875c-30.8333 0 -57.2083 10.9583 -79.125 32.875
+c-21.9167 21.9167 -32.875 48.2917 -32.875 79.125c0 20.1667 5.08333 38.9167 15.25 56.25c-38.1667 -19.5 -69.9167 -48.9167 -95.25 -88.25c22.1667 -34.1667 49.9583 -61.375 83.375 -81.625s69.625 -30.375 108.625 -30.375s75.2083 10.125 108.625 30.375
+c33.4167 20.2501 61.2083 47.4584 83.375 81.625zM268 272c0 3.33755 -1.16666 6.1709 -3.5 8.5c-2.33334 2.33334 -5.16666 3.5 -8.5 3.5c-20.8333 0 -38.7083 -7.45834 -53.625 -22.375c-14.9167 -14.9167 -22.375 -32.7917 -22.375 -53.625
+c0 -3.33488 1.16667 -6.16821 3.5 -8.5c2.33333 -2.33333 5.16667 -3.5 8.5 -3.5s6.16667 1.16667 8.5 3.5s3.5 5.16667 3.5 8.5c0 14.3333 5.08333 26.5833 15.25 36.75s22.4167 15.25 36.75 15.25c3.33731 0 6.17065 1.16666 8.5 3.5c2.33334 2.3374 3.5 5.17075 3.5 8.5z
+M480 176c0 -5.66667 -1.66666 -11.4167 -5 -17.25c-23.3333 -38.3333 -54.7083 -69.0417 -94.125 -92.125s-81.0417 -34.625 -124.875 -34.625c-43.8333 0 -85.4583 11.5833 -124.875 34.75s-70.7917 53.8333 -94.125 92c-3.33334 5.83333 -5 11.5833 -5 17.25
+c0 5.66667 1.66667 11.4167 5 17.25c23.3334 38.1667 54.7084 68.8333 94.125 92c39.4167 23.1667 81.0417 34.75 124.875 34.75c43.8333 0 85.4583 -11.5833 124.875 -34.75s70.7917 -53.8333 94.125 -92c3.33334 -5.83333 5 -11.5833 5 -17.25z" />
+    <glyph glyph-name="uniF344" unicode="&#xf344;" 
+d="M291.147 448l160.617 -159.864v-352.136h-391.529v512h230.912zM301.177 395.535v-98.123h98.5752zM90.3525 -33.8828h331.295v301.177h-150.589v150.589h-60.2354v-30.1182h-30.1172v30.1182h-90.3535v-451.766zM150.588 207.059h30.1182v-30.1172h-30.1182v30.1172z
+M180.706 207.059v30.1182h30.1172v-30.1182h-30.1172zM180.706 267.294v30.1182h30.1172v-30.1182h-30.1172zM150.588 267.294h30.1182v-30.1172h-30.1182v30.1172zM150.588 327.529h30.1182v-30.1172h-30.1182v30.1172zM180.706 327.529v30.1182h30.1172v-30.1182h-30.1172
+zM150.588 387.765h30.1182v-30.1172h-30.1182v30.1172zM180.706 165.226c33.2197 0 60.2354 -27.0156 60.2354 -60.2354c0 -9.93848 -2.53027 -19.6064 -7.5293 -28.7324c-9.42676 -17.1973 -26.6543 -28.7627 -46.1104 -30.9004
+c-2.95117 -0.391602 -4.72852 -0.602539 -6.5957 -0.602539c-33.2197 0 -60.2354 27.0156 -60.2354 60.2354s27.0156 60.2354 60.2354 60.2354zM206.999 90.6846c2.5293 4.66797 3.82422 9.48633 3.82422 14.2754c0 16.5947 -13.5225 30.1182 -30.1172 30.1182
+s-30.1182 -13.5234 -30.1182 -30.1182s13.4932 -30.1172 30.0879 -30.1172l3.37305 0.420898c9.66797 1.05469 18.251 6.83691 22.9502 15.4209z" />
+    <glyph glyph-name="uniF32E" unicode="&#xf32e;" 
+d="M256 384c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875
+c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375
+s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75zM288 72.25v47.5c0 2.3338 -0.75 4.29214 -2.25 5.875c-1.5 1.58334 -3.33334 2.375 -5.5 2.375h-48c-2.16667 0 -4.08333 -0.833336 -5.75 -2.5c-1.66667 -1.66714 -2.5 -3.5838 -2.5 -5.75v-47.5
+c0 -2.16693 0.833328 -4.0836 2.5 -5.75c1.66841 -1.66667 3.58508 -2.5 5.75 -2.5h48c2.16666 -3.8147e-06 4 0.791664 5.5 2.375c1.5 1.5836 2.25 3.54193 2.25 5.875zM287.5 158.25l4.5 155.25c0 2 -0.833344 3.5 -2.5 4.5c-1.66666 1.33334 -3.66666 2 -6 2h-55
+c-2.33333 0 -4.33333 -0.666656 -6 -2c-1.66667 -1 -2.5 -2.5 -2.5 -4.5l4.25 -155.25c0 -1.66667 0.833328 -3.125 2.5 -4.375s3.66667 -1.875 6 -1.875h46.25c2.33765 0 4.29599 0.625 5.875 1.875c1.58334 1.25 2.45834 2.70833 2.625 4.375z" />
+    <glyph glyph-name="uniF33E" unicode="&#xf33e;" 
+d="M304 102v-60c0 -2.66667 -1 -5 -3 -7s-4.33334 -3 -7 -3h-60c-2.66667 0 -5 1 -7 3s-3 4.33333 -3 7v60c0 2.66666 1 5 3 7s4.33333 3 7 3h60c2.66666 0 5 -1 7 -3s3 -4.33334 3 -7zM383 252c0 -9 -1.29166 -17.4167 -3.875 -25.25s-5.5 -14.2083 -8.75 -19.125
+s-7.83334 -9.875 -13.75 -14.875c-5.918 -5 -10.7097 -8.625 -14.375 -10.875c-3.66666 -2.25 -8.75 -5.20833 -15.25 -8.875c-6.83334 -3.83333 -12.5417 -9.25 -17.125 -16.25s-6.875 -12.5833 -6.875 -16.75c0 -2.83347 -1 -5.54179 -3 -8.125
+c-2 -2.58334 -4.33334 -3.87501 -7 -3.875h-60c-2.5 0 -4.625 1.54167 -6.375 4.625s-2.625 6.20833 -2.625 9.375v11.25c0 13.8333 5.41667 26.875 16.25 39.125s22.75 21.2917 35.75 27.125c9.83334 4.5 16.8333 9.16667 21 14s6.25 11.1667 6.25 19
+c0 7 -3.875 13.1667 -11.625 18.5s-16.7083 8 -26.875 8c-10.8333 0 -19.8333 -2.41666 -27 -7.25c-5.83333 -4.16666 -14.75 -13.75 -26.75 -28.75c-2.16667 -2.66667 -4.75 -4 -7.75 -4c-2 0 -4.08333 0.666672 -6.25 2l-41 31.25
+c-2.16667 1.66666 -3.45833 3.75 -3.875 6.25s0.0416718 4.83334 1.375 7c26.6668 44.3333 65.3334 66.5 116 66.5c13.3333 0 26.75 -2.58334 40.25 -7.75c13.5 -5.16699 25.6667 -12.0836 36.5 -20.75c10.8347 -8.66666 19.6681 -19.2917 26.5 -31.875
+c6.83334 -12.5833 10.25 -25.7917 10.25 -39.625z" />
+    <glyph glyph-name="uniF343" unicode="&#xf343;" 
+d="M150.588 448h361.412v-120.471h-361.412v120.471zM481.883 357.647v60.2354h-301.177v-60.2354h301.177zM150.588 146.823v120.471h361.412v-120.471h-361.412zM180.706 237.177v-60.2354h301.177v60.2354h-301.177zM150.588 -33.8828v120.471h361.412v-120.471h-361.412
+zM180.706 56.4707v-60.2354h301.177v60.2354h-301.177zM0 327.529v120.471h120.471v-120.471h-120.471zM30.1172 417.883v-60.2354h60.2354v60.2354h-60.2354zM0 146.823v120.471h120.471v-120.471h-120.471zM30.1172 237.177v-60.2354h60.2354v60.2354h-60.2354z
+M0 -33.8828v120.471h120.471v-120.471h-120.471zM30.1172 56.4707v-60.2354h60.2354v60.2354h-60.2354z" />
+    <glyph glyph-name="uniF33C" unicode="&#xf33c;" 
+d="M431 69.75c0 -19.5 -6.58334 -35.8333 -19.75 -49c-13.1667 -13.1667 -29.5 -19.75 -49 -19.75c-22.5 0 -42.0833 8.33333 -58.75 25l-194.25 194c-18.8333 19.1667 -28.25 41.75 -28.25 67.75c0 26.5 9.16666 49 27.5 67.5s40.75 27.75 67.25 27.75
+c26.3333 0 49.0833 -9.41666 68.25 -28.25l151.25 -151.5c1.66666 -1.66667 2.5 -3.5 2.5 -5.5c0 -2.66667 -2.54166 -6.54167 -7.625 -11.625s-8.95834 -7.625 -11.625 -7.625c-2.17239 0 -4.08905 0.833328 -5.75 2.5l-151.5 151.75
+c-13.1667 12.8333 -28.25 19.25 -45.25 19.25c-17.6667 0 -32.5833 -6.25 -44.75 -18.75c-12.1667 -12.5 -18.25 -27.5833 -18.25 -45.25c0 -17.5 6.33334 -32.5833 19 -45.25l194 -194.25c10.5 -10.5 22.5833 -15.75 36.25 -15.75c10.6667 0 19.5 3.5 26.5 10.5
+s10.5 15.8333 10.5 26.5c0 13.6667 -5.25 25.75 -15.75 36.25l-145.25 145.25c-4.33333 4 -9.33333 6 -15 6c-4.83333 0 -8.83333 -1.58333 -12 -4.75s-4.75 -7.16667 -4.75 -12c0 -5.33333 2.08333 -10.25 6.25 -14.75l102.5 -102.5c1.66666 -1.66666 2.5 -3.5 2.5 -5.5
+c0 -2.66689 -2.58334 -6.58355 -7.75 -11.75c-5.16898 -5.16666 -9.08563 -7.75 -11.75 -7.75c-2 0 -3.83334 0.833336 -5.5 2.5l-102.5 102.5c-10.5 10.1671 -15.75 22.5838 -15.75 37.25c0 13.6667 4.75 25.25 14.25 34.75s21.0833 14.25 34.75 14.25
+c14.6671 0 27.0838 -5.25 37.25 -15.75l145.25 -145.25c16.6667 -16.3333 25 -35.9167 25 -58.75z" />
+    <glyph glyph-name="uniF31E" unicode="&#xf31e;" 
+d="M430.1 256c17.7002 0 18.6006 -7 17.7002 -18.2002l-12.0996 -185.3c-1 -11.2998 -3.10059 -20.5 -21.1006 -20.5h-316.199c-17.6006 0 -20.2002 9.2998 -21.1006 20.5l-13 183c-1 11.2998 -0.0996094 20.5 17.6006 20.5h348.199zM426.2 304.7l1.59961 -32.7002h-343.399
+c0.5 6.2002 4 46.7002 5.5 63.4004c1.59961 18.0996 7.7998 16.5996 25.1992 16.5996h75.3008c28.2998 0 22.8994 0.200195 36.5996 -14.5996c16.5 -17.7002 19.0996 -17.4004 40.9004 -17.4004h143.199c10.6006 0 14.6006 -2.90039 15.1006 -15.2998z" />
+    <glyph glyph-name="uniF318" unicode="&#xf318;" 
+d="M288 0c-8.83203 0 -16 7.16797 -16 16v192c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-192c0 -8.83203 -7.16797 -16 -16 -16zM384 384c17.6797 0 32 -14.3203 32 -32v-32c0 -17.6641 -14.3203 -32 -32 -32v-288c0 -35.3438 -28.6562 -64 -64 -64h-224
+c-35.3438 0 -64 28.6562 -64 64v288c-17.6797 0 -32 14.3359 -32 32v32c0 17.6797 14.3203 32 32 32h96v32c0 17.6797 14.3203 32 32 32h96c17.6797 0 32 -14.3203 32 -32v-32h96zM160 400v-16h96v16c0 8.83203 -7.16797 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16z
+M352 0v288h-288v-288c0 -17.6641 14.3203 -32 32 -32h224c17.6797 0 32 14.3359 32 32zM368 320c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-320c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h320zM128 0c-8.83203 0 -16 7.16797 -16 16v192
+c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-192c0 -8.83203 -7.16797 -16 -16 -16zM208 0c-8.83203 0 -16 7.16797 -16 16v192c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-192c0 -8.83203 -7.16797 -16 -16 -16z" />
+    <glyph glyph-name="uniF331" unicode="&#xf331;" 
+d="M180.706 440.019l331.294 -64.8125v-353.461l-0.210938 0.0605469c-1.05371 -47.4658 -39.8154 -85.8057 -87.5518 -85.8057c-48.3994 0 -87.7627 39.3936 -87.7627 87.7627s39.3633 87.7627 87.7627 87.7627c22.166 0 42.1943 -8.52344 57.6455 -22.1064v140.529
+l-271.06 53.0371v-183.537c0.0302734 -1.02344 0.271484 -1.95703 0.271484 -3.04199c0 -1.08398 -0.271484 -2.04785 -0.301758 -3.07129v-0.180664v0c-1.74609 -46.8633 -40.1465 -84.541 -87.4307 -84.541c-48.3994 0 -87.7637 39.3945 -87.7637 87.7637
+c0 48.3682 39.3643 87.7627 87.7637 87.7627c22.0156 0 41.9229 -8.43359 57.3438 -21.8662v277.745zM123.362 38.7314c30.75 0 55.7168 24.2441 57.3438 54.6035v6.11328c-1.62695 30.3291 -26.5938 54.5732 -57.3438 54.5732
+c-31.8047 0 -57.6455 -25.8408 -57.6455 -57.6445c0 -31.8047 25.8408 -57.6455 57.6455 -57.6455zM210.823 313.646l271.06 -53.0078v89.751l-271.06 53.0674v-89.8105zM424.237 -33.8828c31.8037 0 57.6455 25.8418 57.6455 57.6455
+c0 31.8047 -25.8418 57.6455 -57.6455 57.6455c-31.8047 0 -57.6455 -25.8408 -57.6455 -57.6455c0 -31.8037 25.8408 -57.6455 57.6455 -57.6455z" />
+    <glyph glyph-name="uniF303" unicode="&#xf303;" 
+d="M384 144c0 -4.33333 -1.58334 -8.08333 -4.75 -11.25l-112 -112c-3.16666 -3.16667 -6.91666 -4.75 -11.25 -4.75c-4.33333 0 -8.08333 1.58333 -11.25 4.75l-112 112c-3.16667 3.16667 -4.75 6.91667 -4.75 11.25c-7.62939e-06 4.33333 1.58333 8.08333 4.75 11.25
+s6.91667 4.75 11.25 4.75h224c4.33334 0 8.08334 -1.58333 11.25 -4.75s4.75 -6.91667 4.75 -11.25zM384 240c0 -4.33333 -1.58334 -8.08333 -4.75 -11.25s-6.91666 -4.75 -11.25 -4.75h-224c-4.33333 0 -8.08333 1.58333 -11.25 4.75s-4.75 6.91667 -4.75 11.25
+c-7.62939e-06 4.33333 1.58333 8.08333 4.75 11.25l112 112c3.16667 3.16666 6.91667 4.75 11.25 4.75c4.33334 0 8.08334 -1.58334 11.25 -4.75l112 -112c3.16666 -3.16667 4.75 -6.91667 4.75 -11.25z" />
+    <glyph glyph-name="uniF2FF" unicode="&#xf2ff;" 
+d="M467.697 361.954c17.6182 -17.6191 17.6182 -46.291 -0.0302734 -63.8799l-272.716 -272.745l-158.057 -53.1582l51.8623 159.263l272.775 272.806c17.0771 17.0459 46.8936 17.0459 63.9092 0zM93.1836 47.6162l18.5527 -18.5527l59.1211 19.8779l-58.2471 58.2773z
+M131.162 131.223l63.5488 -63.5781l165.466 165.466l-63.5781 63.5488zM317.892 317.982l63.5781 -63.5488l21.9561 21.9561l-63.5781 63.5479zM446.403 319.367c5.87305 5.87305 5.87305 15.3906 -0.0292969 21.2939l-42.2559 42.2852
+c-5.69141 5.69141 -15.6006 5.69141 -21.293 0l-21.6846 -21.7148l63.5781 -63.5488z" />
+    <glyph glyph-name="uniF339" unicode="&#xf339;" 
+d="M320 72v40c0 2.33334 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-24v128c0 2.33333 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-80c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41667 -2.25 -5.75v-40c0 -2.33333 0.75 -4.25 2.25 -5.75
+s3.41667 -2.25 5.75 -2.25h24v-80h-24c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41666 -2.25 -5.75v-40c0 -2.33334 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h112c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41666 2.25 5.75zM288 296v40
+c0 2.33334 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-48c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41666 -2.25 -5.75v-40c0 -2.33334 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h48c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41666 2.25 5.75zM448 192
+c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875
+c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875
+c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" />
+    <glyph glyph-name="uniF317" unicode="&#xf317;" 
+d="M351.25 135.5c0 4.33333 -1.58334 8.08333 -4.75 11.25l-45.25 45.25l45.25 45.25c3.16666 3.16667 4.75 6.91667 4.75 11.25c0 4.5 -1.58334 8.33334 -4.75 11.5l-22.5 22.5c-3.16666 3.16666 -7 4.75 -11.5 4.75c-4.33334 0 -8.08334 -1.58334 -11.25 -4.75
+l-45.25 -45.25l-45.25 45.25c-3.16667 3.16666 -6.91667 4.75 -11.25 4.75c-4.5 0 -8.33333 -1.58334 -11.5 -4.75l-22.5 -22.5c-3.16667 -3.16763 -4.75 -7.00096 -4.75 -11.5c0 -4.33333 1.58333 -8.08333 4.75 -11.25l45.25 -45.25l-45.25 -45.25
+c-3.16667 -3.16667 -4.75 -6.91667 -4.75 -11.25c0 -4.5 1.58333 -8.33334 4.75 -11.5l22.5 -22.5c3.16667 -3.16666 7 -4.75 11.5 -4.75c4.33333 0 8.08333 1.58334 11.25 4.75l45.25 45.25l45.25 -45.25c3.16666 -3.16666 6.91666 -4.75 11.25 -4.75
+c4.5 0 8.33334 1.58334 11.5 4.75l22.5 22.5c3.16666 3.16666 4.75 7 4.75 11.5zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75
+c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75
+c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" />
+    <glyph glyph-name="uniF336" unicode="&#xf336;" 
+d="M340.8 349.6c-38.2002 0 -71 -23.5 -84.7002 -56.7998c-13.8994 33.4004 -46.5996 56.7998 -84.7998 56.7998c-50.7998 0 -91.8994 -41.2998 -91.8994 -92.2998c0 -24.7998 9.7998 -47.2998 25.5996 -63.8994l151 -152.5l148.4 149.8
+c17.3994 16.7998 28.2998 40.3994 28.2998 66.5996c0 51 -41.2002 92.2998 -91.9004 92.2998zM340.8 365v0c59.1006 0 107.2 -48.2998 107.2 -107.7c0 -29.5996 -11.7998 -57.2002 -32.7998 -77.5l-148.3 -149.8l-10.9004 -11l-10.9004 11l-151.199 152.7
+c-19.3008 20.2002 -29.9004 46.7002 -29.9004 74.5996c0 59.4004 48.0996 107.7 107.2 107.7c33.7998 0 64.7998 -15.7998 84.7998 -41.7998c20 26 51 41.7998 84.7998 41.7998z" />
+    <glyph glyph-name="uniF312" unicode="&#xf312;" 
+d="M368 176v32c0 4.33333 -1.58334 8.08333 -4.75 11.25s-6.91666 4.75 -11.25 4.75h-64v64c0 4.33334 -1.58334 8.08334 -4.75 11.25s-6.91666 4.75 -11.25 4.75h-32c-4.33333 0 -8.08333 -1.58334 -11.25 -4.75s-4.75 -6.91666 -4.75 -11.25v-64h-64
+c-4.33333 0 -8.08333 -1.58333 -11.25 -4.75s-4.75 -6.91667 -4.75 -11.25v-32c0 -4.33333 1.58333 -8.08333 4.75 -11.25s6.91667 -4.75 11.25 -4.75h64v-64c0 -4.33334 1.58333 -8.08334 4.75 -11.25s6.91667 -4.75 11.25 -4.75h32c4.33334 0 8.08334 1.58334 11.25 4.75
+s4.75 6.91666 4.75 11.25v64h64c4.33334 0 8.08334 1.58333 11.25 4.75s4.75 6.91667 4.75 11.25zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75
+c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75
+c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" />
+    <glyph glyph-name="uniF333" unicode="&#xf333;" 
+d="M351.383 448l160.617 -159.864v-352.136h-376.471v30.1172h346.354v301.177h-150.589v150.589h-210.342v-29.6367h14.126c24.9072 0 45.1758 -20.2686 45.1758 -45.1758v-258.561l-74.21 -149.354l-75.9268 149.264v258.65c0 24.9072 20.2695 45.1758 45.1768 45.1758
+h15.541v59.7539h260.548zM117.7 26.293l32.4062 65.2646v176.219h-29.6357v-181.52h-30.1182v181.52h-30.1172v-176.128l33.25 -65.3555h24.2148zM150.106 343.07c0 8.28223 -6.74609 15.0586 -15.0586 15.0586h-59.7539c-8.28223 0 -15.0586 -6.77637 -15.0586 -15.0586
+v-45.1768h89.8711v45.1768zM361.412 395.535v-98.123h98.5742z" />
+    <glyph glyph-name="uniF328" unicode="&#xf328;" 
+d="M392 192.75c0 26.8333 -7.25 51.4167 -21.75 73.75l-188.5 -188.25c22.8333 -14.8333 47.5833 -22.25 74.25 -22.25c18.5 0 36.125 3.625 52.875 10.875s31.2083 16.9583 43.375 29.125s21.8333 26.7083 29 43.625c7.16666 16.9167 10.75 34.625 10.75 53.125z
+M142.25 118l188.75 188.5c-22.5 15.1667 -47.5 22.75 -75 22.75c-24.6667 0 -47.4167 -6.08334 -68.25 -18.25s-37.3333 -28.75 -49.5 -49.75c-12.1667 -21 -18.25 -43.8333 -18.25 -68.5c0 -27 7.41666 -51.9167 22.25 -74.75zM448 192.75
+c0 -26.1667 -5.08334 -51.1667 -15.25 -75c-10.1667 -23.8333 -23.7917 -44.3333 -40.875 -61.5c-17.0833 -17.1667 -37.5 -30.8333 -61.25 -41c-23.75 -10.1667 -48.625 -15.25 -74.625 -15.25c-26 -4.76837e-07 -50.875 5.08333 -74.625 15.25
+c-23.75 10.1667 -44.1667 23.8333 -61.25 41c-17.0833 17.1667 -30.7083 37.6667 -40.875 61.5c-10.1667 23.8333 -15.25 48.8333 -15.25 75c0 26.1667 5.08334 51.125 15.25 74.875s23.7917 44.2083 40.875 61.375c17.0833 17.1667 37.5 30.8333 61.25 41
+s48.625 15.25 74.625 15.25s50.875 -5.08334 74.625 -15.25c23.75 -10.1668 44.1667 -23.8335 61.25 -41c17.0833 -17.1667 30.7083 -37.625 40.875 -61.375s15.25 -48.7083 15.25 -74.875z" />
+    <glyph glyph-name="uniF335" unicode="&#xf335;" 
+d="M376.38 448l135.62 -125.952v-295.695h-151.101v30.1182h120.983v240.941h-120.471v120.471h-150.589v-30.4189h-30.1172v60.5361h195.674zM391.529 392.824v-65.2949h70.3252zM0 357.647h195.675l135.619 -125.952v-295.695h-331.294v421.647zM210.823 302.472v-65.2949
+h70.3252zM30.1172 -33.8828h271.06v240.941h-120.471v120.471h-150.589v-361.412z" />
+    <glyph glyph-name="uniF2FB" unicode="&#xf2fb;" 
+d="M512 207.059c0 -66.4395 -54.0312 -120.471 -120.471 -120.471c-36.0508 0 -69.5713 16.0225 -92.582 43.7314l-0.0595703 -0.0302734l-0.421875 0.541992c-0.331055 0.421875 -0.783203 0.692383 -1.14453 1.14453l0.120117 0.0898438l-109.447 134.987
+c-17.1367 19.2754 -41.7432 30.3594 -67.5234 30.3594c-49.8145 0 -90.3535 -40.5391 -90.3535 -90.3535s40.5391 -90.3525 90.3535 -90.3525c27.5576 0 53.2783 12.3477 70.5352 33.8818l0.271484 -0.210938l24.6055 30.4795l23.4316 -18.9141l-24.7861 -30.6895
+l-0.301758 0.240234c-22.9795 -28.5205 -57.1328 -44.9053 -93.7559 -44.9053c-66.4395 0 -120.471 54.0312 -120.471 120.471s54.0312 120.471 120.471 120.471c33.7314 0 65.8369 -14.3662 88.6357 -39.1826l0.241211 0.180664l1.26465 -1.56641l111.375 -137.337
+c17.2578 -20.8711 42.4365 -32.918 69.542 -32.918c49.8145 0 90.3535 40.5381 90.3535 90.3525s-40.5391 90.3535 -90.3535 90.3535c-25.4795 0 -49.6943 -10.9033 -66.8613 -29.7871l-28.5518 -35.3877l-23.4307 18.9141l28.5508 35.3877l-0.120117 0.0908203
+c22.8896 25.9912 55.8682 40.8994 90.4131 40.8994c66.4395 0 120.471 -54.0312 120.471 -120.471z" />
+    <glyph glyph-name="uniF329" unicode="&#xf329;" 
+d="M384 312.471c70.5654 0 128 -57.4346 128 -128s-57.4346 -128 -128 -128h-286.117c-53.9717 0 -97.8828 43.9111 -97.8828 97.8818c0 55.0254 46.6826 100.051 100.984 97.8223c21.4736 54.5732 73.2158 90.4131 132.428 90.4131
+c37.165 0 72.8848 -14.8779 99.6592 -41.1709c16.4141 7.34863 33.5205 11.0537 50.9287 11.0537zM384 86.5879c53.9707 0 97.8828 43.9121 97.8828 97.8828s-43.9121 97.8818 -97.8828 97.8818c-16.0527 0 -31.834 -4.24609 -46.9834 -12.5889l-10.6621 -5.87305
+l-7.98047 9.21582c-21.6553 24.998 -52.6465 39.3643 -84.9619 39.3643c-50.0254 0 -93.3047 -32.5273 -107.701 -80.9561l-3.79492 -12.71l-13.1006 2.16895c-3.58398 0.571289 -7.16797 1.14355 -10.9326 1.14355c-37.376 0 -67.7656 -30.3887 -67.7656 -67.7646
+s30.3896 -67.7646 67.7656 -67.7646h286.117z" />
+    <glyph glyph-name="uniF338" unicode="&#xf338;" 
+d="M320 80v-32c0 -4.33301 -1.58301 -8.08301 -4.75 -11.25s-6.91699 -4.75 -11.25 -4.75h-128c-4.33301 0 -8.08301 1.58301 -11.25 4.75s-4.75 6.91699 -4.75 11.25v32c0 4.33301 1.58301 8.08301 4.75 11.25s6.91699 4.75 11.25 4.75h16v96h-16
+c-4.33301 0 -8.08301 1.58301 -11.25 4.75s-4.75 6.91699 -4.75 11.25v32c0 4.33301 1.58301 8.08301 4.75 11.25s6.91699 4.75 11.25 4.75h96c4.33301 0 8.08301 -1.58301 11.25 -4.75s4.75 -6.91699 4.75 -11.25v-144h16c4.33301 0 8.08301 -1.58301 11.25 -4.75
+s4.75 -6.91699 4.75 -11.25zM288 368v-48c0 -4.33301 -1.58301 -8.08301 -4.75 -11.25s-6.91699 -4.75 -11.25 -4.75h-64c-4.33301 0 -8.08301 1.58301 -11.25 4.75s-4.75 6.91699 -4.75 11.25v48c0 4.33301 1.58301 8.08301 4.75 11.25s6.91699 4.75 11.25 4.75h64
+c4.33301 0 8.08301 -1.58301 11.25 -4.75s4.75 -6.91699 4.75 -11.25z" />
+    <glyph glyph-name="uniF33B" unicode="&#xf33b;" 
+d="M368 176v32c0 4.33333 -1.58334 8.08333 -4.75 11.25s-6.91666 4.75 -11.25 4.75h-192c-4.33333 0 -8.08333 -1.58333 -11.25 -4.75s-4.75 -6.91667 -4.75 -11.25v-32c0 -4.33333 1.58333 -8.08333 4.75 -11.25s6.91667 -4.75 11.25 -4.75h192
+c4.33334 0 8.08334 1.58333 11.25 4.75s4.75 6.91667 4.75 11.25zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75
+c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75
+c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" />
+    <glyph glyph-name="uniF341" unicode="&#xf341;" 
+d="M512 244.706c0 -70.5654 -57.4043 -128 -128 -128h-83.0342v30.1172h83.0342c53.9707 0 97.8828 43.9121 97.8828 97.8828s-43.9121 97.8818 -97.8828 97.8818c-16.0225 0 -31.834 -4.24609 -46.9834 -12.5586l-10.6621 -5.87305l-7.98047 9.21582
+c-21.6553 24.9678 -52.6465 39.334 -84.9619 39.334c-50.0254 0 -93.335 -32.5273 -107.701 -80.9561l-3.79492 -12.71l-13.1006 2.16797c-3.58398 0.572266 -7.16797 1.14453 -10.9326 1.14453c-37.3467 0 -67.7656 -30.3887 -67.7656 -67.7646
+s30.4189 -67.7646 67.7656 -67.7646h111.404v-30.1172h-111.404c-53.9717 0 -97.8828 43.9111 -97.8828 97.8818c0 54.9951 46.0498 100.442 100.984 97.8223c21.4736 54.5732 73.2158 90.4131 132.428 90.4131c37.165 0 72.8848 -14.8779 99.6592 -41.1709
+c16.4443 7.34863 33.5205 11.0537 50.9287 11.0537c70.5957 0 128 -57.4346 128 -128zM320.633 181.338l-49.5742 49.6045v-234.707h-30.1172v234.707l-49.6035 -49.5742l-21.2939 21.2939l85.9561 85.9248l85.9258 -85.9551z" />
+    <glyph glyph-name="uniF32F" unicode="&#xf32f;" 
+d="M288 72.25v47.5c0 2.3338 -0.791656 4.29214 -2.375 5.875c-1.58334 1.58334 -3.45834 2.375 -5.625 2.375h-48c-2.16667 0 -4.04167 -0.791664 -5.625 -2.375s-2.375 -3.54166 -2.375 -5.875v-47.5c0 -2.33334 0.791672 -4.29166 2.375 -5.875
+s3.45833 -2.375 5.625 -2.375h48c2.16666 -3.8147e-06 4.04166 0.791664 5.625 2.375c1.58334 1.5836 2.375 3.54193 2.375 5.875zM287.5 165.75l4.5 114.75c0 2 -0.833344 3.58334 -2.5 4.75c-2.16666 1.83334 -4.16666 2.75 -6 2.75h-55
+c-1.83333 0 -3.83333 -0.916656 -6 -2.75c-1.66667 -1.16666 -2.5 -2.91666 -2.5 -5.25l4.25 -114.25c0 -1.66667 0.833328 -3.04167 2.5 -4.125s3.66667 -1.625 6 -1.625h46.25c2.33765 0 4.29599 0.541672 5.875 1.625c1.58334 1.08333 2.45834 2.45833 2.625 4.125z
+M284 399.25l192 -352c5.83331 -10.5 5.66666 -21 -0.5 -31.5c-2.83334 -4.83333 -6.70834 -8.66667 -11.625 -11.5c-4.91754 -2.83333 -10.2092 -4.25 -15.875 -4.25h-384c-5.66667 0 -10.9583 1.41667 -15.875 4.25c-4.91667 2.83333 -8.79167 6.66667 -11.625 11.5
+c-6.16678 10.5 -6.33345 21 -0.5 31.5l192 352c2.83333 5.16666 6.75 9.25 11.75 12.25s10.4167 4.5 16.25 4.5c5.83334 0 11.25 -1.5 16.25 -4.5s8.91666 -7.08334 11.75 -12.25z" />
+    <glyph glyph-name="uniF340" unicode="&#xf340;" 
+d="M256 268.138c41.502 0 75.2939 -33.792 75.2939 -75.2939c0 -41.5029 -33.792 -75.2949 -75.2939 -75.2949s-75.2939 33.792 -75.2939 75.2949c0 41.502 33.792 75.2939 75.2939 75.2939zM256 147.667c24.9072 0 45.1768 20.2686 45.1768 45.1768
+c0 24.9072 -20.2695 45.1758 -45.1768 45.1758s-45.1768 -20.2686 -45.1768 -45.1758c0 -24.9082 20.2695 -45.1768 45.1768 -45.1768zM510.193 163.509l-77.9453 -23.3711c-3.61328 -12.1074 -8.37207 -23.7334 -14.2754 -34.6357l38.4902 -71.5596
+c-12.2275 -15.3896 -26.1719 -29.334 -41.5625 -41.5928l-71.5596 38.5205c-10.9023 -5.90234 -22.5273 -10.6611 -34.6348 -14.2754l-23.3711 -77.9443c-9.6377 -1.11426 -19.4258 -1.80664 -29.335 -1.80664c-9.9082 0 -19.667 0.692383 -29.335 1.80664l-23.3711 77.9443
+c-12.1074 3.61426 -23.7324 8.37305 -34.6348 14.2754l-71.5898 -38.5205c-15.3906 12.2285 -29.335 26.1729 -41.5625 41.5625l38.5205 71.5596c-5.90332 10.9033 -10.6621 22.5283 -14.2754 34.666l-77.9453 23.3711c-1.11426 9.6377 -1.80664 19.3955 -1.80664 29.335
+c0 9.93848 0.692383 19.6963 1.80664 29.334l77.9746 23.4316c3.61426 12.1074 8.37305 23.7324 14.2764 34.6357l-38.5205 71.5293c12.1973 15.3896 26.1416 29.334 41.5322 41.5625l71.5898 -38.5508c10.8721 5.93262 22.4971 10.7217 34.6348 14.3057l23.3711 77.9443
+c9.6377 1.11426 19.3965 1.80762 29.335 1.80762s19.6973 -0.693359 29.335 -1.80762l23.3711 -77.9443c12.1074 -3.61426 23.7021 -8.37305 34.6348 -14.2754l71.5898 38.5498c15.3906 -12.2578 29.335 -26.2021 41.5625 -41.5615l-38.5205 -71.5898
+c5.90332 -10.9023 10.6914 -22.498 14.2754 -34.6055l77.9453 -23.4316c1.11426 -9.66797 1.80664 -19.4258 1.80664 -29.334c0 -9.90918 -0.692383 -19.667 -1.80664 -29.335zM408.034 164.322l73.7275 22.1064c0.0908203 2.16797 0.121094 4.30664 0.121094 6.41504
+c0 2.10742 -0.0302734 4.24609 -0.0605469 6.41504l-58.1875 17.498l-15.6006 4.66797l-4.63867 15.6016c-3.01172 10.0889 -6.9873 19.7871 -11.8965 28.8223l-7.74023 14.3057l7.68066 14.3057l28.7021 53.3086c-2.98242 3.16211 -6.08398 6.23438 -9.2168 9.21582
+l-67.584 -36.3818l-14.3057 7.67969c-9.06543 4.90918 -18.8232 8.91504 -28.9131 11.9268l-15.6006 4.6377l-4.66797 15.6016l-17.4385 58.1875c-2.16895 0.0595703 -4.30664 0.0898438 -6.41504 0.0898438s-4.24609 -0.0302734 -6.44531 -0.0605469l-17.4375 -58.1865
+l-4.66895 -15.6016l-15.6006 -4.6377c-10.1494 -3.01172 -19.8477 -7.01758 -28.793 -11.8965l-14.3359 -7.80078l-67.6738 36.4424c-3.13281 -2.98145 -6.2041 -6.08398 -9.18652 -9.21582l36.3828 -67.6143l-7.70996 -14.3057
+c-4.90918 -9.00488 -8.91504 -18.7334 -11.9268 -28.8828l-4.63867 -15.6006l-73.7275 -22.1064c-0.0908203 -2.16895 -0.121094 -4.30762 -0.121094 -6.41504c0 -2.07812 0.0302734 -4.2168 0.121094 -6.38574l73.7578 -22.1064l4.6084 -15.5703
+c3.04199 -10.1494 7.04688 -19.8779 11.9268 -28.9131l7.70996 -14.3057l-36.3828 -67.584c2.98242 -3.16211 6.08398 -6.23438 9.2168 -9.21582l67.6133 36.3516l14.3066 -7.70996c9.03516 -4.90918 18.7627 -8.91504 28.8828 -11.9268l15.6006 -4.6377l4.66797 -15.6016
+l17.4385 -58.1865c2.16895 -0.0605469 4.30664 -0.0908203 6.41504 -0.0908203s4.24707 0.0302734 6.41504 0.0908203l17.4385 58.1865l4.66797 15.6016l15.6006 4.6377c10.1201 3.04199 19.8477 7.01758 28.9131 11.9268l14.3057 7.70996l67.5547 -36.4121
+c3.16211 2.98145 6.23438 6.05371 9.21582 9.21582l-28.6719 53.3086l-7.68066 14.3057l7.70996 14.3057c4.90918 9.00586 8.91504 18.7334 11.9268 28.8828z" />
+    <glyph glyph-name="uniF332" unicode="&#xf332;" 
+d="M30.1172 417.883h451.766v-451.766h-451.766v451.766zM451.765 -3.76465v60.2354h-391.529v-60.2354h391.529zM60.2354 86.5879h391.529v301.177h-391.529v-301.177zM427.761 141.854l-20.9922 -21.5947l-72.7939 70.7461l-46.8027 -50.4766l-74.873 132.969
+l-102.43 -149.835l-24.877 16.9863l129.807 189.831l78.4268 -139.203l39.665 42.8271z" />
+    <glyph glyph-name="uniF316" unicode="&#xf316;" 
+d="M404.5 85.5c0 -6.66674 -2.33334 -12.3334 -7 -17l-34 -34c-4.66803 -4.66667 -10.3347 -7 -17 -7c-6.66925 0 -12.3359 2.33333 -17 7l-73.5 73.5l-73.5 -73.5c-4.66667 -4.66667 -10.3333 -7 -17 -7s-12.3333 2.33333 -17 7l-34 34c-4.66666 4.66666 -7 10.3333 -7 17
+s2.33334 12.3333 7 17l73.5 73.5l-73.5 73.5c-4.66666 4.66667 -7 10.3333 -7 17s2.33334 12.3333 7 17l34 34c4.66696 4.66666 10.3336 7 17 7c6.66733 0 12.334 -2.33334 17 -7l73.5 -73.5l73.5 73.5c4.66666 4.66666 10.3333 7 17 7s12.3333 -2.33334 17 -7l34 -34
+c4.66666 -4.66772 7 -10.3344 7 -17c0 -6.66666 -2.33334 -12.3333 -7 -17l-73.5 -73.5l73.5 -73.5c4.66666 -4.66685 7 -10.3335 7 -17z" />
+    <glyph glyph-name="uniF300" unicode="&#xf300;" 
+d="M180.706 207.059h-180.706v180.706h30.1172v-123.753c30.5098 96.165 121.556 165.165 225.883 165.165c105.593 0 199.409 -71.0781 228.111 -172.846l-29.0039 -8.16211c-25.0576 88.8477 -106.947 150.92 -199.107 150.92
+c-97.1592 -0.0302734 -181.188 -68.5479 -202.029 -161.912h126.735v-30.1182zM331.294 176.941h180.706v-180.706h-30.1172v123.724c-30.8711 -96.4375 -121.706 -165.105 -225.883 -165.105c-105.623 0 -199.439 71.0781 -228.111 172.846l29.0039 8.16113
+c25.0273 -88.8467 106.887 -150.919 199.107 -150.919c97.25 0 181.157 68.4873 202.029 161.882h-126.735v30.1182z" />
+    <glyph glyph-name="uniF32C" unicode="&#xf32c;" 
+d="M512 244.706c0 -70.5654 -57.4043 -128 -128 -128h-83.0342v30.1172h83.0342c53.9707 0 97.8828 43.9121 97.8828 97.8828s-43.9121 97.8818 -97.8828 97.8818c-16.0225 0 -31.834 -4.24609 -46.9834 -12.5586l-10.6621 -5.87305l-7.98047 9.21582
+c-21.6553 24.9678 -52.6465 39.334 -84.9619 39.334c-50.0254 0 -93.335 -32.5273 -107.701 -80.9561l-3.79492 -12.71l-13.1006 2.16797c-3.58398 0.572266 -7.16797 1.14453 -10.9326 1.14453c-37.3467 0 -67.7656 -30.3887 -67.7656 -67.7646
+s30.4189 -67.7646 67.7656 -67.7646h111.404v-30.1172h-111.404c-53.9717 0 -97.8828 43.9111 -97.8828 97.8818c0 54.9951 45.5078 100.442 100.984 97.8223c21.4736 54.5732 73.2158 90.4131 132.428 90.4131c37.165 0 72.8848 -14.8779 99.6592 -41.1709
+c16.4443 7.34863 33.5205 11.0537 50.9287 11.0537c70.5957 0 128 -57.4346 128 -128zM271.059 34.4844l49.6035 49.6045l21.2939 -21.2939l-85.9561 -85.9551l-85.9258 85.9258l21.293 21.293l49.5742 -49.5742v232.81h30.1172v-232.81z" />
+    <glyph glyph-name="uniF311" unicode="&#xf311;" 
+d="M416 232v-48c0 -6.66699 -2.33301 -12.333 -7 -17c-4.66992 -4.66699 -10.3369 -7 -17 -7h-104v-104c0 -6.66699 -2.33301 -12.333 -7 -17c-4.66895 -4.66699 -10.3359 -7 -17 -7h-48c-6.66699 0 -12.333 2.33301 -17 7s-7 10.333 -7 17v104h-104
+c-6.66699 0 -12.334 2.33301 -17 7c-4.66699 4.66699 -7 10.334 -7 17v48c0 6.66797 2.33301 12.334 7 17c4.66699 4.66699 10.333 7 17 7h104v104c0 6.66699 2.33301 12.333 7 17c4.66797 4.66699 10.334 7 17 7h48c6.66699 0 12.333 -2.33301 17 -7
+c4.66699 -4.66992 7 -10.3359 7 -17v-104h104c6.66699 0 12.333 -2.33301 17 -7s7 -10.333 7 -17z" />
+    <glyph glyph-name="uniF31D" unicode="&#xf31d;" 
+d="M291.147 448l160.617 -159.864v-352.136h-391.529v512h230.912zM301.177 395.535v-98.123h98.5752zM90.3525 -33.8828h331.295v301.177h-150.589v150.589h-180.706v-451.766z" />
+    <glyph glyph-name="uniF32A" unicode="&#xf32a;" 
+d="M193.3 187.6l-11.5996 11.6006l74.5 74.2998l74.5 -74.2998l-11.7002 -11.6006l-54.5996 54.6006v-241.8h-16.5v241.8zM399.3 264.4c45.2002 -0.100586 80.7002 -40.1006 80.7002 -85.6006s-37 -82.7998 -82 -82.7998v0h-101v16h97.2998h3.2002
+c36.7002 0.200195 66.5 30.2998 66.5 67.0996c0 36.9004 -29 69.8008 -65.5996 70.3008l-15.2002 0.0996094s0.200195 7 0.200195 20.2998c0 55.6006 -45.6006 98.9004 -100.9 98.9004c-38.2998 0 -73.7998 -22.5 -90.4004 -57.4004l-6.5 -13.7002l-13.5 6.80078
+c-6.19922 3.19922 -13 4.7998 -19.8994 4.7998c-21.7998 0 -40.2998 -17.7002 -43.9004 -39.2998l-1.5 -8.80078l-8.39941 -2.89941c-30 -10.4004 -50.2002 -39.7998 -50.2002 -71.6006c0 -41.0996 33.2998 -74.5996 74.2002 -74.5996h90.5996v-16h-91.4004
+c-49.5 0 -89.5996 40.5 -89.5996 90.2002c0 39.5996 25.4004 74.2002 60.5996 86.2998c4.80078 28.4004 29.3008 52 58.9004 52c9.7002 0 18.7002 -2.2998 26.7998 -6.40039c18.6006 39.2002 58.2998 66.3008 104.4 66.3008c64 0 116.8 -52.1006 116.8 -116.4
+c0 -1.2002 -0.200195 -2.40039 -0.200195 -3.59961z" />
+    <glyph glyph-name="uniF334" unicode="&#xf334;" 
+d="M391.259 244.706l120.741 83.8174v-303.134l-120.712 83.8174v-67.7949c0 -24.9072 -20.4189 -45.1768 -45.5371 -45.1768h-239.857c-24.9072 0 -45.1768 20.2695 -45.1768 45.1768v165.616h-15.1787c-25.1182 0 -45.5381 20.2695 -45.5381 45.1768v60.2656
+c0 24.9072 20.4199 45.1768 45.5381 45.1768h44.8145v15.0586c0 24.9072 20.2695 45.1768 45.1768 45.1768h166.882v-30.1182h-166.882c-8.28223 0 -15.0586 -6.74609 -15.0586 -15.0586v-15.0586h225.25c25.1182 0 45.5381 -20.2695 45.5381 -45.1768v-67.7646z
+M481.883 82.9443v187.994l-120.712 -83.8477v125.38c0 8.3125 -6.92676 15.0586 -15.4199 15.0586h-300.213c-8.52344 0 -15.4209 -6.74609 -15.4209 -15.0586v-60.2656c0 -8.3125 6.89746 -15.0586 15.4209 -15.0586h45.2969v-195.734
+c0 -8.3125 6.77637 -15.0596 15.0586 -15.0596h239.827c8.52344 0 15.4199 6.74707 15.4199 15.0596v125.35z" />
+    <glyph glyph-name="uniF33A" unicode="&#xf33a;" 
+d="M416 232v-48c0 -6.66699 -2.33301 -12.333 -7 -17c-4.66992 -4.66699 -10.3369 -7 -17 -7h-304c-6.66699 0 -12.334 2.33301 -17 7c-4.66699 4.66699 -7 10.334 -7 17v48c0 6.66797 2.33301 12.334 7 17c4.66699 4.66699 10.333 7 17 7h304
+c6.66699 0 12.333 -2.33301 17 -7s7 -10.333 7 -17z" />
+    <glyph glyph-name="uniF337" unicode="&#xf337;" 
+d="M448 192c0 -26 -5.08334 -50.8333 -15.25 -74.5c-10.1669 -23.6667 -23.8335 -44.0834 -41 -61.25c-17.1674 -17.1667 -37.584 -30.8333 -61.25 -41c-23.6667 -10.1667 -48.5 -15.25 -74.5 -15.25c-28.6667 0 -55.9167 6.04167 -81.75 18.125
+c-25.8333 12.0833 -47.8333 29.125 -66 51.125c-1.1683 1.66666 -1.70996 3.54166 -1.625 5.625c0.0837402 2.08363 0.792076 3.79196 2.125 5.125l34.25 34.5c1.66667 1.5 3.75 2.25 6.25 2.25c2.66783 -0.333336 4.5845 -1.33334 5.75 -3
+c12.1668 -15.8333 27.0835 -28.0833 44.75 -36.75c17.6667 -8.66667 36.4167 -13 56.25 -13c17.3333 0 33.875 3.375 49.625 10.125s29.375 15.875 40.875 27.375s20.625 25.125 27.375 40.875s10.125 32.2917 10.125 49.625s-3.375 33.875 -10.125 49.625
+s-15.875 29.375 -27.375 40.875s-25.125 20.625 -40.875 27.375s-32.2917 10.125 -49.625 10.125c-16.3333 0 -32 -2.95834 -47 -8.875s-28.3333 -14.375 -40 -25.375l34.25 -34.5c5.16826 -5 6.33493 -10.75 3.5 -17.25c-2.83333 -6.66667 -7.75 -10 -14.75 -10h-112
+c-4.33334 0 -8.08334 1.58333 -11.25 4.75c-3.16667 3.16667 -4.75 6.91667 -4.75 11.25v112c0 7 3.33334 11.9167 10 14.75c6.5 2.8277 12.25 1.66104 17.25 -3.5l32.5 -32.25c17.8333 16.8333 38.2083 29.875 61.125 39.125s46.625 13.875 71.125 13.875
+c26 0 50.8333 -5.08334 74.5 -15.25c23.6667 -10.1668 44.0833 -23.8335 61.25 -41c17.1667 -17.1672 30.8333 -37.5839 41 -61.25c10.1667 -23.6667 15.25 -48.5 15.25 -74.5zM288 264v-112c0 -2.33333 -0.75 -4.25 -2.25 -5.75s-3.41666 -2.25 -5.75 -2.25h-80
+c-2.33333 0 -4.25 0.75 -5.75 2.25s-2.25 3.41667 -2.25 5.75v16c0 2.33333 0.75 4.25 2.25 5.75s3.41667 2.25 5.75 2.25h56v88c0 2.33334 0.75 4.25 2.25 5.75s3.41666 2.25 5.75 2.25h16c2.33334 0 4.25 -0.75 5.75 -2.25s2.25 -3.41666 2.25 -5.75z" />
+  </font>
+</defs></svg>

BIN
css/jquery.filer-icons/jquery-filer.ttf


BIN
css/jquery.filer-icons/jquery-filer.woff


Dosya farkı çok büyük olduğundan ihmal edildi
+ 341 - 0
css/jquery.filer.css


+ 105 - 15
index.php

@@ -16,7 +16,18 @@ function registration_callback($username, $email, $userdir)
 require_once("user.php");
 $USER = new User("registration_callback");
 
-$dbfile = constant('User::DATABASE_LOCATION')  . constant('User::DATABASE_NAME') . ".db";
+function printArray($arrayName){
+    
+    foreach ( $arrayName as $item ) :
+        
+        echo $item . "<br/>";
+        
+    endforeach;
+    
+}
+    
+$dbfile = DATABASE_LOCATION  . constant('User::DATABASE_NAME') . ".db";
+
 $database = new PDO("sqlite:" . $dbfile);
 
 $needSetup = "Yes";
@@ -29,7 +40,7 @@ foreach($database->query($query) as $data) {
 
 }
 
-$db = constant('User::DATABASE_LOCATION')  . constant('User::DATABASE_NAME') . ".db";
+$db = DATABASE_LOCATION  . constant('User::DATABASE_NAME') . ".db";
 $file_db = new PDO("sqlite:" . $db);
 $file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
@@ -424,7 +435,7 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                             <!--<li class="tab-item profile" id="settings.phpx"><i class="mdi mdi-account"></i></li>-->
                             <a class="fix-nav"><i class="mdi mdi-pin"></i></a>
                             <?php if(!$USER->authenticated) : ?>
-                            <a class="log-in"><i class="fa fa-sign-in"></i></a>
+                            <!--<a class="log-in"><i class="fa fa-sign-in"></i></a>-->
                             <?php endif ?>
                             <?php if($USER->authenticated) : ?>
                             <a class="logout"><i class="fa fa-sign-out"></i></a>
@@ -448,8 +459,18 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                         
                         <li class="dropdown notifications">
                             
+                            <?php if(!$USER->authenticated) : ?>
+                            
+                            <a class="log-in">
+                            
+                            <?php endif; ?>
+                            
+                            <?php if($USER->authenticated) : ?>
+                            
                             <a class="show-members">
                                 
+                            <?php endif; ?>
+                                
                                 <i class="userpic"><img style="border-radius: 50px;" src="https://www.gravatar.com/avatar/<?=$userpic;?>?s=40&d=mm" class="userpic"></i> 
                                 
                             </a>
@@ -589,8 +610,8 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                 </div>
                 <?php endif; ?>
                 
-                <?php if($USER->authenticated && $USER->role == "admin" && $tabSetup == "Yes" && $needSetup == "No") :?>
-                <div class="table-wrapper">
+                <?php if($tabSetup == "No" && $needSetup == "No") :?>        
+                <div id="tabEmpty" class="table-wrapper" style="display: none">
                 
                     <div class="table-row">
                 
@@ -600,18 +621,17 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                                 
                                 <div class="content-box">
                                     
-                                    <div class="yellow-bg biggest-box">
+                                    <div class="red-bg biggest-box">
                 
-                                        <h1 class="zero-m text-uppercase">Almost Done!</h1>
+                                        <h1 class="zero-m text-uppercase">Hold Up!</h1>
                 
                                     </div>
                 
                                     <div class="big-box text-left registration-form">
                 
-                                        <h2 class="text-center">Looks like this is a fresh install.</h4>
-                                        <h3 class="text-center">Here's a couple hints before you get started.</h4>
-                                        <h5 class="">The new layout now has 3 groups:<br><br>Admins - Have access to everything<br><br>Users - Have access to tabs marked active and for user<br><br>Guests - Have access to tabs marked active and for guest<br><br>You can have the side-bar pinned if you enable that on the bottom of the side-bar itself<br><br>Alright, Click the Hamburger on the top right and goto Settings to start making your tabs!</h4>
-                						                                    
+                                        <br><br><br>
+                                        <h2 class="text-center">Looks like you don't have access.</h2>
+        						                                    
                                     </div>
                                 
                                 </div>
@@ -624,9 +644,7 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                 
                 </div>
                 <?php endif; ?>
-                
-                
-                
+                                
                 <!--End Load Framed Content-->
 
             </div>
@@ -723,6 +741,7 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                                             
                                             <input type="hidden" name="op" value="login">
 				                            <input type="hidden" name="sha1" value="">
+                                            <input type="hidden" name="rememberMe" value="false"/>
                                             <input type="text" class="form-control material" name="username" placeholder="Username" autocorrect="off" autocapitalize="off" value="" autofocus required>
                                         
                                         </div>
@@ -732,6 +751,18 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                                             <input type="password" class="form-control material" name="password1" placeholder="Password" required>
                                         
                                         </div>
+                                        
+                                        <div class="form-group">
+                                            
+                                            <div class="i-block"> <input id="rememberMe" name="rememberMe" class="switcher switcher-success switcher-medium pull-left" value="true" type="checkbox" checked=""> 
+                                                
+                                                <label for="rememberMe" class="pull-left"></label>
+                                            
+                                                <label class="pull-right"> &nbsp; Remember Me</label>
+                                            
+                                            </div>
+
+                                        </div>
 
                                         <button id="loginSubmit" style="background:<?=$topbartext;?>;" type="submit" class="btn btn-block btn-info text-uppercase waves" value="log in" onclick="User.processLogin()"><text style="color:<?=$topbar;?>;">Login</text></button>
 
@@ -862,6 +893,49 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
             
         });
             
+        //Sign in
+        $(".log-in").click(function(e){
+            
+            var e1 = document.querySelector(".log-in"),
+            
+                e2 = document.querySelector(".login-modal");
+            
+            cta(e1, e2, {relativeToWindow: true}, function () {
+                
+                $('.login-modal').modal("show");
+            
+            });
+
+            e.preventDefault();
+        
+        });
+
+        //Logout
+        $(".logout").click(function(e){
+        var el1 = document.querySelector(".logout"),
+        el2 = document.querySelector(".logout-modal");
+        cta(el1, el2, {relativeToWindow: true}, function () {
+        $('.logout-modal').modal("show");
+        });
+
+        e.preventDefault();
+        });
+
+        //Members Sidebar
+        $(".show-members").click(function(e){
+        var e_s1 = document.querySelector(".show-members"),
+        e_s2 = document.querySelector("#members-sidebar");
+
+        cta(e_s1, e_s2, {relativeToWindow: true}, function () {
+        $('#members-sidebar').addClass('members-sidebar-open');
+        });
+
+        e.preventDefault();
+        });
+
+        $('.close-members-sidebar').click(function(){
+        $('#members-sidebar').removeClass('members-sidebar-open');
+        });
 
         $(document).ready(function(){
             
@@ -889,6 +963,12 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
                 $("#content").html('<div class="iframe active" data-content-url="'+defaultTab+'"><iframe scrolling="auto" sandbox="allow-forms allow-same-origin allow-pointer-lock allow-scripts allow-popups allow-modals" allowfullscreen="true" webkitallowfullscreen="true" frameborder="0" style="width:100%; height:100%;" src="'+defaultTab+'"></iframe></div>');
             }
             
+            if (defaultTab == null){
+             
+                $( "div[id^='tabEmpty" ).show();
+                
+            }
+            
             setHeight();
 
         }); 
@@ -898,13 +978,23 @@ $userpic = md5( strtolower( trim( $USER->email ) ) );
             $.smkAlert({
                 position: 'top-left',
                 text: '<?php if(!empty($USER->info_log)) : 
-                    echo $USER->info_log[0]; 
+                    echo printArray($USER->info_log); 
                     elseif(empty($USER->info_log)) :
                     echo "Welcome Guest!";
                     endif;?>',
                 type: 'info'
                 
             });
+            
+            <?php if(!empty($USER->error_log)) : ?>
+            $.smkAlert({
+                position: 'top-left',
+                text: '<?php echo printArray($USER->error_log); ?>',
+                type: 'warning'
+                
+            });
+            
+            <?php endif; ?>
 
         });
             

+ 0 - 38
js/common.js

@@ -100,44 +100,6 @@ $(function () {
     e.preventDefault();
   });
 
-  //Sign in
-  $(".log-in").click(function(e){
-    var e1 = document.querySelector(".log-in"),
-        e2 = document.querySelector(".login-modal");
-    cta(e1, e2, {relativeToWindow: true}, function () {
-        $('.login-modal').modal("show");
-    });
-
-    e.preventDefault();
-  });
-
-  //Logout
-  $(".logout").click(function(e){
-    var el1 = document.querySelector(".logout"),
-        el2 = document.querySelector(".logout-modal");
-    cta(el1, el2, {relativeToWindow: true}, function () {
-        $('.logout-modal').modal("show");
-    });
-
-    e.preventDefault();
-  });
-
-  //Members Sidebar
-  $(".show-members").click(function(e){
-    var e_s1 = document.querySelector(".show-members"),
-        e_s2 = document.querySelector("#members-sidebar");
-
-        cta(e_s1, e_s2, {relativeToWindow: true}, function () {
-          $('#members-sidebar').addClass('members-sidebar-open');
-        });
-
-    e.preventDefault();
-  });
-
-  $('.close-members-sidebar').click(function(){
-    $('#members-sidebar').removeClass('members-sidebar-open');
-  });
-
   //Fullscreen mode
   function toggleFullScreen() {
     if (!document.fullscreenElement &&    // alternative standard method

+ 151 - 0
js/custom.js

@@ -0,0 +1,151 @@
+$(document).ready(function(){
+
+	//Example 2
+	$("#uploadIcons").filer({
+		limit: null,
+		maxSize: null,
+		extensions: null,
+		changeInput: '<div class="jFiler-input-dragDrop"><div class="jFiler-input-inner"><div class="jFiler-input-icon"><i class="fa fa-cloud-upload"></i></div><div class="jFiler-input-text"><h3>Drag & Drop files here</h3> <span style="display:inline-block; margin: 15px 0">or</span></div><button type="button" class="btn waves btn-labeled btn-primary btn-sm text-uppercase waves-effect waves-float"><span class="btn-label"><i class="fa fa-folder-open"></i></span>Browse </button></div></div>',
+		showThumbs: true,
+		theme: "dragdropbox",
+		templates: {
+			box: '<ul class="jFiler-items-list jFiler-items-grid"></ul>',
+			item: '<li class="jFiler-item">\
+						<div class="jFiler-item-container">\
+							<div class="jFiler-item-inner">\
+								<div class="jFiler-item-thumb">\
+									<div class="jFiler-item-status"></div>\
+									<div class="jFiler-item-thumb-overlay">\
+										<div class="jFiler-item-info">\
+											<div style="display:table-cell;vertical-align: middle;">\
+												<span class="jFiler-item-title"><b title="{{fi-name}}">icons/{{fi-name}}</b></span>\
+												<span class="jFiler-item-others">{{fi-size2}}</span>\
+											</div>\
+										</div>\
+									</div>\
+									{{fi-image}}\
+								</div>\
+								<div class="jFiler-item-assets jFiler-row">\
+									<ul class="list-inline pull-left">\
+										<li>{{fi-progressBar}}</li>\
+									</ul>\
+									<ul class="list-inline pull-right">\
+										<li><a class="fa fa-trash jFiler-item-trash-action"></a></li>\
+									</ul>\
+								</div>\
+							</div>\
+						</div>\
+					</li>',
+			itemAppend: '<li class="jFiler-item">\
+							<div class="jFiler-item-container">\
+								<div class="jFiler-item-inner">\
+									<div class="jFiler-item-thumb">\
+										<div class="jFiler-item-status"></div>\
+										<div class="jFiler-item-thumb-overlay">\
+											<div class="jFiler-item-info">\
+												<div style="display:table-cell;vertical-align: middle;">\
+													<span class="jFiler-item-title"><b title="{{fi-name}}">icons/{{fi-name}}</b></span>\
+													<span class="jFiler-item-others">{{fi-size2}}</span>\
+												</div>\
+											</div>\
+										</div>\
+										{{fi-image}}\
+									</div>\
+									<div class="jFiler-item-assets jFiler-row">\
+										<ul class="list-inline pull-left">\
+											<li><span class="jFiler-item-others">{{fi-icon}}</span></li>\
+										</ul>\
+										<ul class="list-inline pull-right">\
+											<li><a class="fa fa-trash jFiler-item-trash-action"></a></li>\
+										</ul>\
+									</div>\
+								</div>\
+							</div>\
+						</li>',
+			progressBar: '<div class="bar"></div>',
+			itemAppendToEnd: false,
+			canvasImage: true,
+			removeConfirmation: true,
+			_selectors: {
+				list: '.jFiler-items-list',
+				item: '.jFiler-item',
+				progressBar: '.bar',
+				remove: '.jFiler-item-trash-action'
+			}
+		},
+		dragDrop: {
+			dragEnter: null,
+			dragLeave: null,
+			drop: null,
+			dragContainer: null,
+		},
+		uploadFile: {
+			url: "./ajax_upload_file.php",
+			data: null,
+			type: 'POST',
+			enctype: 'multipart/form-data',
+			synchron: true,
+			beforeSend: function(){},
+			success: function(data, itemEl, listEl, boxEl, newInputEl, inputEl, id){
+				var parent = itemEl.find(".jFiler-jProgressBar").parent(),
+					new_file_name = JSON.parse(data),
+					filerKit = inputEl.prop("jFiler");
+
+        		filerKit.files_list[id].name = new_file_name;
+
+				itemEl.find(".jFiler-jProgressBar").fadeOut("slow", function(){
+					$("<div class=\"jFiler-item-others text-success\"><i class=\"fa fa-check\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow");
+				});
+			},
+			error: function(el){
+				var parent = el.find(".jFiler-jProgressBar").parent();
+				el.find(".jFiler-jProgressBar").fadeOut("slow", function(){
+					$("<div class=\"jFiler-item-others text-error\"><i class=\"fa fa-minus\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow");
+				});
+			},
+			statusCode: null,
+			onProgress: null,
+			onComplete: null
+		},
+		files: null,
+		addMore: false,
+		allowDuplicates: true,
+		clipBoardPaste: true,
+		excludeName: null,
+		beforeRender: null,
+		afterRender: null,
+		beforeShow: null,
+		beforeSelect: null,
+		onSelect: null,
+		afterShow: null,
+		onRemove: function(itemEl, file, id, listEl, boxEl, newInputEl, inputEl){
+			var filerKit = inputEl.prop("jFiler"),
+		        file_name = filerKit.files_list[id].name;
+
+		    $.post('./ajax_remove_file.php', {file: file_name});
+		},
+		onEmpty: null,
+		options: null,
+		dialogs: {
+			alert: function(text) {
+				return alert(text);
+			},
+			confirm: function (text, callback) {
+				confirm(text) ? callback() : null;
+			}
+		},
+		captions: {
+			button: "Choose Files",
+			feedback: "Choose files To Upload",
+			feedback2: "files were chosen",
+			drop: "Drop file here to Upload",
+			removeConfirmation: "Are you sure you want to remove this file?",
+			errors: {
+				filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.",
+				filesType: "Only Images are allowed to be uploaded.",
+				filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.",
+				filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB."
+			}
+		}
+	});
+})

Dosya farkı çok büyük olduğundan ihmal edildi
+ 7 - 0
js/jquery.filer.min.js


+ 108 - 115
settings.php

@@ -26,9 +26,19 @@ elseif($USER->authenticated && $USER->role !== "admin") :
 
 endif;
 
-$dbfile = constant('User::DATABASE_LOCATION')  . constant('User::DATABASE_NAME') . ".db";
+function printArray($arrayName){
+    
+    foreach ( $arrayName as $item ) :
+        
+        echo $item . "<br/>";
+        
+    endforeach;
+    
+}
 
-$userdirpath = constant('User::USER_HOME');
+$dbfile = DATABASE_LOCATION  . constant('User::DATABASE_NAME') . ".db";
+
+$userdirpath = USER_HOME;
 $userdirpath = substr_replace($userdirpath, "", -1);
 
 $file_db = new PDO("sqlite:" . $dbfile);
@@ -116,7 +126,38 @@ if(isset($_POST['action'])) :
 
     $action = $_POST['action'];
     
-endif; 
+endif;
+
+if($action == "deleteDB") : 
+                     
+    unset($_COOKIE['Organizr']);
+    setcookie('Organizr', '', time() - 3600, '/');
+    unset($_COOKIE['OrganizrU']);
+    setcookie('OrganizrU', '', time() - 3600, '/');
+
+    $file_db = null;
+
+    unlink($dbfile); 
+
+    foreach(glob($userdirpath . '/*') as $file) : 
+
+        if(is_dir($file)) :
+
+            rmdir($file); 
+
+        elseif(!is_dir($file)) :
+
+            unlink($file);
+
+        endif;
+
+    endforeach; 
+
+    rmdir($userdirpath);
+
+   echo "<script>window.parent.location.reload();</script>";
+
+endif;
 
                 
 if(!isset($_POST['op'])) :
@@ -367,10 +408,9 @@ endif;
 		    <script type="text/javascript" src="js/user.js"></script>
 
         <link rel="stylesheet" href="css/style.css">
+        <link href="css/jquery.filer.css" rel="stylesheet">
+	    <link href="css/jquery.filer-dragdropbox-theme.css" rel="stylesheet">
 
-        <link rel="icon" href="img/favicon.ico" type="image/x-icon" />
-        <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
-        
         <!--[if lt IE 9]>
         <script src="bower_components/html5shiv/dist/html5shiv.min.js"></script>
         <script src="bower_components/respondJs/dest/respond.min.js"></script>
@@ -439,14 +479,26 @@ endif;
 
                                         <a class="total-tabs" href="#">Total Tabs <span class="badge green-bg"></span></a>
                                         
+                                        <button id="iconHide" type="button" class="btn waves btn-labeled btn-success btn-sm text-uppercase waves-effect waves-float">
+                                            
+                                            <span class="btn-label"><i class="fa fa-upload"></i></span>Upload Icons
+                                            
+                                        </button> 
+                                        
                                         <?php if($action) : ?>
                                         
-                                        <button id="apply" class="btn btn-success waves text-uppercase pull-right waves-effect waves-float" type="submit">Apply Changes</button>
+                                        <button id="apply" class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
+                                        
+                                            <span class="btn-label"><i class="fa fa-check"></i></span>Apply Changes
+                                        
+                                        </button>
                                         
                                         <?php endif; ?>
 
                                     </div>
 
+                                    <input type="file" name="files[]" id="uploadIcons" multiple="multiple">
+                                    
                                     <form id="add_tab" method="post">
 
                                         <div class="form-group add-tab">
@@ -610,7 +662,11 @@ endif;
 
                                             <div class="checkbox clear-todo pull-left"></div>
 
-                                            <input class="btn btn-success waves text-uppercase pull-right waves-effect waves-float" type="submit" value="Save Tabs">
+                                            <button class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
+                                                
+                                                <span class="btn-label"><i class="fa fa-floppy-o"></i></span>Save Tabs
+                                                
+                                            </button>
                                             
                                         </form>
                                         
@@ -619,48 +675,6 @@ endif;
                                 </div>
 
                                 <div class="tab-pane big-box  fade in" id="useredit">
-                        
-                                    <div class="row">
-                                        
-                                        <div class="col-lg-12">
-                                          
-                                            <div class="gray-bg content-box big-box box-shadow">
-                                            
-                                                <h4><strong>Change User Info For <?=$_SESSION['username'];?></strong></h4>
-                                            
-                                                <form class="content-form form-inline" name="update" id="update" action="" method="POST">
-                                              
-                                                    <input type="hidden" name="op" value="update"/>
-				                                    <input type="hidden" name="sha1" value=""/>
-                                                    <input type="hidden" name="role" value="<?php echo $USER->role; ?>"/>
-                                                    
-                                                    <div class="form-group">
-                                                
-                                                        <input autocomplete="off" type="text" value="<?php echo $USER->email; ?>" class="form-control" name="email" placeholder="E-mail Address">
-                                              
-                                                    </div>
-                                              
-                                                    <div class="form-group">
-                                                
-                                                        <input autocomplete="off" type="password" class="form-control" name="password1" placeholder="Password">
-                                              
-                                                    </div>
-                                                    
-                                                    <div class="form-group">
-                                                
-                                                        <input autocomplete="off" type="password" class="form-control" name="password2" placeholder="Password Again">
-                                              
-                                                    </div>
-
-                                                    <input type="button" class="btn btn-success text-uppercase waves waves-effect waves-float" value="Update" onclick="User.processUpdate()"/>
-
-                                                </form>                 
-                                          
-                                            </div>
-                                        
-                                        </div>
-                                      
-                                    </div>
                                     
                                     <div class="row">
                                         
@@ -698,8 +712,12 @@ endif;
                                                         <input type="password" class="form-control" name="password2" placeholder="Retype Password">
 
                                                     </div>
-
-                                                    <input type="button" class="btn btn-success text-uppercase waves waves-effect waves-float" value="Create User" onclick="User.processRegistration()"/>
+                                                    
+                                                    <button class="btn waves btn-labeled btn-primary btn text-uppercase waves-effect waves-float" type="submit" onclick="User.processRegistration()">
+                                                
+                                                        <span class="btn-label"><i class="fa fa-user-plus"></i></span>Create User
+                                                
+                                                    </button>
 
                                                 </form>               
                                           
@@ -737,7 +755,11 @@ endif;
                                               
                                                     </div>
 
-                                                    <input type="submit" class="btn btn-danger text-uppercase waves waves-effect waves-float" value="Delete User"/>
+                                                    <button class="btn waves btn-labeled btn-danger btn text-uppercase waves-effect waves-float" type="submit" onclick="User.processRegistration()">
+                                                
+                                                        <span class="btn-label"><i class="fa fa-user-times"></i></span>Delete User
+                                                
+                                                    </button>
 
                                                 </form>                 
                                           
@@ -782,7 +804,11 @@ endif;
                                                 <form id="deletedb" method="post">
                                                     
                                                     <input type="hidden" name="action" value="deleteDB" />
-                                                    <input class="btn btn-danger waves text-uppercase pull-right waves-effect waves-float" type="submit" value="Delete Database">
+                                                    <button class="btn waves btn-labeled btn-danger pull-right text-uppercase waves-effect waves-float" type="submit">
+                                                
+                                                        <span class="btn-label"><i class="fa fa-trash"></i></span>Delete Databse
+                                                
+                                                    </button>
                                                     
                                                 </form>
                                         
@@ -805,7 +831,11 @@ endif;
                                         <button id="bookTheme" style="background: #3B5998" type="button" class="btn waves btn-dark text-uppercase waves-effect waves-float">Book</button>
                                         <button id="spaTheme" style="background: #66BBAE" type="button" class="btn waves btn-dark text-uppercase waves-effect waves-float">Spa</button>
                                         
-                                        <input class="btn btn-success waves text-uppercase pull-right waves-effect waves-float" type="submit" value="Save Options">
+                                        <button class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
+                                                
+                                                <span class="btn-label"><i class="fa fa-floppy-o"></i></span>Save Options
+                                                
+                                        </button>
 
                                         <div class="content-box box-shadow big-box grids">
 
@@ -979,15 +1009,27 @@ endif;
         <script src="js/notifications/notificationFx.js"></script>
 
         <script src="js/jqueri_ui_custom/jquery-ui.min.js"></script>
+        <script src="js/jquery.filer.min.js" type="text/javascript"></script>
+	    <script src="js/custom.js" type="text/javascript"></script>
 
         <?php if($_POST['op']) : ?>
         <script>
 
              $.smkAlert({
-                text: '<?php echo $USER->info_log[0];?>',
+                text: '<?php echo printArray($USER->info_log); ?>',
                 type: 'info'
             });
             
+            <?php if(!empty($USER->error_log)) : ?>
+            $.smkAlert({
+                position: 'top-left',
+                text: '<?php echo printArray($USER->error_log); ?>',
+                type: 'warning'
+                
+            });
+            
+            <?php endif; ?>
+            
         </script>
         <?php endif; ?>
         
@@ -1013,64 +1055,6 @@ endif;
 
             swal("Colors Saved!", "Apply Changes To Reload The Page!", "success");
             
-        </script>
-        <?php endif; ?>
-        
-         <?php if($action == "deleteDB") : ?>
-        <script>
-
-            swal({
-
-                title: "Are you sure?",
-                text: "You will not be able to undo this!",
-                type: "warning",
-                showCancelButton: true,
-                confirmButtonColor: "#DD6B55",
-                confirmButtonText: "Yes, delete it!",
-                cancelButtonText: "No, No, No!",
-                closeOnConfirm: false,
-                closeOnCancel: false,
-                confirmButtonColor: "#63A8EB"
-
-            },
-
-            function (isConfirm) {
-
-                if (isConfirm) {
-                    swal("Deleted!", "The Database is long gone now.", "success");
-
-                    <?php 
-                    
-                    $file_db = null;
-                    
-                    unlink($dbfile); 
-                    
-                    foreach(glob($userdirpath . '/*') as $file) : 
-
-                        if(is_dir($file)) :
-
-                            rmdir($file); 
-
-                        elseif(!is_dir($file)) :
-                    
-                            unlink($file);
-                        
-                        endif;
-
-                    endforeach; 
-
-                    rmdir($userdirpath);
-                    
-                    ?>
-
-                    window.parent.location.reload();
-
-                } else {
-
-                    swal("Cancelled", "Whoa! That was close", "error");
-                }
-            });
-            
         </script>
         <?php endif; ?>
 
@@ -1171,6 +1155,13 @@ endif;
 
         <script>
             
+            $("#iconHide").click(function(){
+
+                $( "div[class^='jFiler jFiler-theme-dragdropbox']" ).toggle();
+     
+            });
+            
+
             $('.icp-auto').iconpicker({placement: 'left', hideOnSelect: false, collision: true});
             
             $( "span[class^='fa fa-hand-paper-o']" )
@@ -1260,6 +1251,8 @@ endif;
         <script>
         
         $( document ).ready(function() {
+            
+            $( "div[class^='jFiler jFiler-theme-dragdropbox']" ).hide();
         		
         	$.ajax({
         				
@@ -1268,7 +1261,7 @@ endif;
                 dataType: "json",
                 success: function(github) {
                    
-                    var currentVersion = "0.95";
+                    var currentVersion = "0.96";
                     var githubVersion = github.tag_name;
                     var githubDescription = github.body;
                     var githubName = github.name;

+ 61 - 20
user.php

@@ -8,6 +8,9 @@
 	 * salting subsequent password checks.
 	 */
 
+    define('USER_HOME', dirname(__DIR__) . '/users/');
+    define('DATABASE_LOCATION', dirname(__DIR__) . '/');
+
 	class User
 	{
 		// =======================================================================
@@ -18,7 +21,7 @@
 			// and you need to use htaccess rules or some such to ensure no one
 			// grabs your user's data.
 
-			const USER_HOME = "../users/";
+			//const USER_HOME = "../users/";
 
 			// In order for users to be notified by email of certain things, set this to true.
 			// Note that the server you run this on should have sendmail in order for
@@ -37,7 +40,7 @@
 			// base dir as your web page. So change it, because people are going to try
 			// to download your database file. And succeed.
 
-			const DATABASE_LOCATION = "../";
+			//const DATABASE_LOCATION = "../";
 
 			// if this is set to "true", registration failure due to known usernames is reported,
 			// and login failures are explained as either the wrong username or the wrong password.
@@ -70,7 +73,7 @@
 
 			// this is the session timeout. If someone hasn't performed any page requests
 			// in [timeout] seconds, they're considered logged out.
-			const time_out = 7200;
+			const time_out = 604800;
 
 			// You'll probably want to change this to something sensible. If your site is
 			// www.sockmonkey.com, then you want this to be "sockmonkey.com"
@@ -140,10 +143,14 @@
 		{
 			// session management comes first. Warnings are repressed with @ because it will warn if something else already called session_start()
 			@session_start();
-			if (empty($_SESSION["username"]) || empty($_SESSION["token"])) $this->resetSession();
+            if(!isset($_COOKIE['Organizr'])) {
+                if (empty($_SESSION["username"]) || empty($_SESSION["token"])) $this->resetSession();
+            }else{
+                $_SESSION["username"] = $_COOKIE['OrganizrU'];
+            }
 
 			// file location for the user database
-			$dbfile = User::DATABASE_LOCATION  . User::DATABASE_NAME . ".db";
+			$dbfile = DATABASE_LOCATION  . User::DATABASE_NAME . ".db";
 
 			// do we need to build a new database?
 			$rebuild = false;
@@ -199,7 +206,7 @@
 
 			// at this point we can make some globals available.
 			$this->username = $_SESSION["username"];
-			$this->userdir = ($this->username !=User::GUEST_USER? User::USER_HOME . $this->username : false);
+			$this->userdir = ($this->username !=User::GUEST_USER? USER_HOME . $this->username : false);
 			$this->email = $this->get_user_email($this->username);
 			$this->role = $this->get_user_role($this->username);
 
@@ -220,6 +227,7 @@
 			// get relevant values
 			$username = $_POST["username"];
 			$sha1 = $_POST["sha1"];
+            $rememberMe = $_POST["rememberMe"];
 			// step 1: someone could have bypassed the javascript validation, so validate again.
 			if(!$this->validate_user_name($username)) {
 				$this->info("log in error: user name did not pass validation");
@@ -228,7 +236,11 @@
 				$this->info("log in error: password did not pass validation");
 				return false; }
 			// step 2: if validation passed, log the user in
-			return $this->login_user($username, $sha1);
+			if($rememberMe == "true") {
+                return $this->login_user($username, $sha1, true);    
+            }else{
+                return $this->login_user($username, $sha1, false);                    
+            }
 		}
 
 		/**
@@ -440,15 +452,33 @@ EOT;
 		{
 			// actually logged in?
 			if($this->is_user_active($username)===false) { return false; }
-
+            
 			// logged in, but do the tokens match?
 			$token = $this->get_user_token($username);
-			if($token != $_SESSION["token"]) {
-				$this->error("token mismatch for $username");
-				return false; }
-
-			// active, using the correct token -> authenticated
-			return true;
+            if(isset($_COOKIE["Organizr"])){
+            
+                if($_COOKIE["Organizr"] == $token){
+                    
+                    return true;
+                    
+                }else{
+                    
+                    $this->error("cookie token mismatch for $username");
+                    return false;
+                    
+                }
+            
+            }else{
+            
+                if($token != $_SESSION["token"]) {
+                    $this->error("token mismatch for $username");
+                    return false; 
+                }
+            
+                // active, using the correct token -> authenticated
+			     return true;
+            }
+            
 		}
 
 		/**
@@ -531,9 +561,9 @@ EOT;
 			$query = "SELECT * FROM users WHERE username = '$username'";
 			foreach($this->database->query($query) as $data) {
 				$this->info("created user account for $username");
-				$this->update_user_token($username, $sha1);
+				$this->update_user_token($username, $sha1, false);
 				// make the user's data directory
-				$dir = User::USER_HOME . $username;
+				$dir = USER_HOME . $username;
 				if(!mkdir($dir, 0760, true)) { $this->error("could not make user directory $dir"); return false; }
 				$this->info("created user directory $dir");
 				// if there is a callback, call it
@@ -546,7 +576,7 @@ EOT;
 		/**
 		 * Log a user in
 		 */
-		function login_user($username, $sha1)
+		function login_user($username, $sha1, $remember)
 		{
 			// transform sha1 into real password
 			$dbpassword = $this->token_hash_password($username, $sha1, $this->get_user_token($username));
@@ -560,8 +590,13 @@ EOT;
 				if($dbpassword==$data["password"]) {
 					// authentication passed - 1) mark active and update token
 					$this->mark_user_active($username);
-					$this->setSession($username, $this->update_user_token($username, $sha1));
+					$this->setSession($username, $this->update_user_token($username, $sha1, false));
 					// authentication passed - 2) signal authenticated
+                    if($remember == "true") {
+                        setcookie("Organizr", $this->update_user_token($username, $sha1, true), time() + (86400 * 7), "/");
+                        setcookie("OrganizrU", $username, time() + (86400 * 7), "/");
+                        
+                    }
 					return true; }
 				// authentication failed
 				$this->info("password mismatch for $username");
@@ -604,6 +639,10 @@ EOT;
 			$this->database->exec($update);
 			$this->resetSession();
 			$this->info("logged $username out");
+            unset($_COOKIE['Organizr']);
+            setcookie('Organizr', '', time() - 3600, '/');
+            unset($_COOKIE['OrganizrU']);
+            setcookie('OrganizrU', '', time() - 3600, '/');
 			return true;
 		}
 
@@ -663,7 +702,7 @@ EOT;
 		/**
 		 * Update the user's token and password upon successful login
 		 */
-		function update_user_token($username, $sha1)
+		function update_user_token($username, $sha1, $noMsg)
 		{
 			// update the user's token
 			$token = $this->random_hex_string(32);
@@ -674,7 +713,9 @@ EOT;
 			$newpassword = $this->token_hash_password($username, $sha1, $token);
 			$update = "UPDATE users SET password = '$newpassword' WHERE username = '$username'";
 			$this->database->exec($update);
-			$this->info("updated token and password for $username");
+			if($noMsg == "false"){
+                $this->info("updated token and password for $username");   
+            }
 
 			return $token;
 		}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor