From 881627b60d4f9e7efc1c3e67de137adee06fce8f Mon Sep 17 00:00:00 2001 From: Evgeny Date: Tue, 1 Sep 2020 05:06:26 +0300 Subject: [PATCH 1/4] Update: version --- smmposting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/smmposting.php b/smmposting.php index 5b37db6..6507f3d 100644 --- a/smmposting.php +++ b/smmposting.php @@ -3,12 +3,12 @@ Plugin Name: SMMposting Plugin URI: https://smm-posting.ru Description: Posting in social networks -Version: 1.0.1 +Version: 1.0.2 Author: smartcoder, vladgaus License: GPL2+ */ -define('SMMP_PLUGIN_VERSION', '1.0.1'); +define('SMMP_PLUGIN_VERSION', '1.0.2'); define('SMMP_PLUGIN_FILE', __FILE__); define('SMMP_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('SMMP_PLUGIN_URL', plugin_dir_url(__FILE__)); From 1e7472054707105906306075d129eb8fb6b28fd9 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Sat, 3 Oct 2020 01:23:44 +0300 Subject: [PATCH 2/4] PREPARE: Version 1.0.4 --- controller/SmmpostingController.php | 893 +- language/ru_ru/marketing/smmposting.php | 33 +- lib/cron.php | 131 - lib/smmposting.php | 651 +- lib/wp/Db.php | 30 - lib/{language.php => wp/Language.php} | 27 +- lib/wp/Loader.php | 27 +- lib/wp/Migrations.php | 129 - lib/wp/Pagination.php | 90 + lib/wp/Request.php | 3 - lib/wp/Response.php | 64 + model/SmmpostingModel.php | 637 +- readme.txt | 2 +- smmposting.php | 22 +- view/accounts.php | 228 +- view/assets/css/icons.css | 10518 ---------------- view/assets/css/smmposting.css | 4 +- view/assets/css/smmposting_wordpress.css | 56 + view/assets/js/instagram.js | 199 + view/contact.php | 58 + ...30611c78ef17b5c7abdaa7d.png => sprite.png} | Bin view/menu.php | 9 +- view/post.php | 702 +- view/posts.php | 214 +- view/project.php | 431 +- view/projects.php | 72 +- view/settings.php | 62 - view/welcome.php | 55 +- 28 files changed, 1858 insertions(+), 13489 deletions(-) delete mode 100644 lib/cron.php rename lib/{language.php => wp/Language.php} (72%) delete mode 100644 lib/wp/Migrations.php create mode 100644 lib/wp/Pagination.php create mode 100644 lib/wp/Response.php delete mode 100644 view/assets/css/icons.css create mode 100644 view/assets/js/instagram.js create mode 100644 view/contact.php rename view/image/{sprite.cf7ea511430611c78ef17b5c7abdaa7d.png => sprite.png} (100%) delete mode 100644 view/settings.php diff --git a/controller/SmmpostingController.php b/controller/SmmpostingController.php index 6b25ea8..c6cc170 100644 --- a/controller/SmmpostingController.php +++ b/controller/SmmpostingController.php @@ -4,26 +4,73 @@ class SmmpostingController { private $auth = false; private $smmposting; - public $smmposting_model; - public $request; + private $smmposting_model; + private $request; + private $language; + private $session; + private $response; + private $version = '1.0.4'; + public function __construct() { - // Load Scripts + // Scripts $this->smmposting_scripts(); - // Load Model - $this->setModel(); - // Sanitize Request - $this->setRequest(); - } + // Model + $this->smmposting_model = new SmmpostingModel(); + // Request + $this->request = new SMMP_Request(); + // Language + $this->language = new SMMP_Language(); + // Response + $this->response = new SMMP_Response(); + # CheckInstall API SMM-posting + $this->checkInstallApi(); - private function setModel() + } + public function checkInstallApi() { - $this->smmposting_model = new SmmpostingModel(); + if ($this->request->get['route'] != 'welcome') { + $this->checkApiToken(); + } } - - private function setRequest() + private function checkApiToken($api_token = false) { - $this->request = new SMMP_Request(); + if (!$api_token) $api_token = $this->getApiToken(); + + $this->smmposting = new Smmposting($api_token); + $profile = $this->smmposting->api('profile'); + + $setData = array( + 'SMMposting' => [ + 'config' => ['api_token' => $api_token] + ] + ); + $this->smmposting_model->editSetting('SMMposting', $setData); + + if (isset($profile->error) && $profile->error == "Y") { + $_SESSION['error_warning'] = isset($profile->text) ? $profile->text : $this->language->get('smmposting_error_1'); + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=welcome'); + } else { + if (isset($profile->result->date_off)) { + $now = time(); + $your_date = strtotime($profile->result->date_off); + $date_diff = $your_date - $now; + $date_diff = floor($date_diff / (60 * 60 * 24)); + + if ($date_diff <= 3) { + if (isset($_SESSION['remain_to_pay'])) { + if ($_SESSION['remain_to_pay'] == $date_diff) { + unset($_SESSION['remain_to_pay']); + } else { + $_SESSION['remain_to_pay'] = $date_diff; + } + } + } + } + $this->auth = true; + } + + return true; } private function getApiToken() @@ -33,10 +80,6 @@ private function getApiToken() return isset($config['SMMposting']['config']['api_token']) ? $config['SMMposting']['config']['api_token'] : false; } - public function cron() { - echo "test"; die; - } - public function smmposting_scripts() { // jQuery @@ -48,6 +91,7 @@ public function smmposting_scripts() wp_enqueue_style( 'smmposting', SMMP_PLUGIN_URL . ('/view/assets/css/smmposting.css')); // Smmposting script wp_enqueue_script( 'smmposting', SMMP_PLUGIN_URL .('/view/assets/js/smmposting.js')); + wp_enqueue_script( 'smmposting_instagram', SMMP_PLUGIN_URL .('/view/assets/js/instagram.js')); // Bootstrap wp_enqueue_style( 'bootstrap', SMMP_PLUGIN_URL . ('/view/assets/plugins/bootstrap/css/bootstrap.css')); wp_enqueue_script( 'bootstrap', SMMP_PLUGIN_URL .('/view/assets/plugins/bootstrap/js/bootstrap.js')); @@ -63,55 +107,61 @@ public function smmposting_scripts() public function config() { - $data['version'] = SMMP_PLUGIN_VERSION; $data['route'] = isset($this->request->get['route']) ? $this->request->get['route'] : ''; - switch ($data['route']) { - case 'post': - case 'posts': - $data['heading_title'] = $this->getFromLanguage('text_posts'); + switch ($this->request->get['route']) { + case 'marketing/smmposting/post': + case 'marketing/smmposting/posts': + $heading_title = $this->language->get('text_posts'); break; - case 'product': - case 'products': - $data['heading_title'] = $this->getFromLanguage('text_products'); + case 'marketing/smmposting/product': + case 'marketing/smmposting/products': + $heading_title = $this->language->get('text_products'); break; - case 'accounts': - $data['heading_title'] = $this->getFromLanguage('text_accounts'); + case 'marketing/smmposting/accounts': + $heading_title = $this->language->get('text_accounts'); break; - case 'project': - case 'projects': - $data['heading_title'] = $this->getFromLanguage('text_projects'); + case 'marketing/smmposting/project': + case 'marketing/smmposting/projects': + $heading_title = $this->language->get('text_projects'); break; - case 'settings': - $data['heading_title'] = $this->getFromLanguage('text_settings'); + case 'marketing/smmposting/settings': + $heading_title = $this->language->get('text_settings'); break; default: - $data['heading_title'] = $this->getFromLanguage('text_smmposting'); + $heading_title = $this->language->get('text_smmposting'); break; } - $data['group_links'] = Smmposting::getGroupLinks(); - $data['connect_link'] = Smmposting::connectLink(); - $data['cron_link'] = $data['send_link'] = admin_url('') . 'admin.php?page=smmposting&route=cron&api_token='.$this->getApiToken(); - $data['domain'] = $this->request->server['HTTP_HOST']; - $data['api_token'] = $this->getApiToken(); + $data['heading_title'] = $heading_title; + $data['route'] = isset($this->request->get['route']) ? $this->request->get['route'] : ''; + $data['version'] = $this->version; + $data['domain'] = $_SERVER['HTTP_HOST']; + + # USER CONFIG + $config = $this->smmposting_model->getSetting('SMMposting'); + $data['config'] = isset($config['SMMposting']['config']) ? $config['SMMposting']['config'] : []; + $data['api_token'] = isset($config['SMMposting']['config']['api_token']) ? $config['SMMposting']['config']['api_token'] : null; + + if (isset($this->request->get['error'])) { + $_SESSION['error_warning'] = $this->request->get['error']; + } - // Connect to SmmPosting -// unset($_SESSION['smmposting_profile']); + unset($_SESSION['smmposting_profile']); if (isset($_SESSION['smmposting_profile'])) { $data['smmposting_profile'] = $_SESSION['smmposting_profile']; } else { if ($data['api_token']) { $this->smmposting = new Smmposting($data['api_token']); - $profile = $this->smmposting->profile(); + $profile = $this->smmposting->api('profile'); if (isset($profile->result)) { $data['smmposting_profile'] = $profile->result; $_SESSION['smmposting_profile'] = $profile->result; } - if (isset($profile->error)) { - $data['error_connect'] = $profile->error; + if (isset($profile->error) && $profile->error == "Y" && isset($profile->text)) { + $data['error_connect'] = $profile->text; } } } @@ -150,13 +200,11 @@ public function links() 'add_project_link' => '/wp-admin/admin.php?page=smmposting&route=project', //Settings - 'settings' => '/wp-admin/admin.php?page=smmposting&route=settings', + 'contact_link' => '/wp-admin/admin.php?page=smmposting&route=contact', 'cancel' => '/wp-admin/admin.php?page=smmposting&route=posts', // Actions 'deleteImage' => '/wp-admin/admin.php?page=smmposting&route=deleteImage', - 'action_add_telegram' => '/wp-admin/admin.php?page=smmposting&route=addTelegram', - 'action_add_instagram' => '/wp-admin/admin.php?page=smmposting&route=addInstagram', 'action_edit_project' => '/wp-admin/admin.php?page=smmposting&route=editProject', 'action_add_project' => '/wp-admin/admin.php?page=smmposting&route=addProject', 'action_add_post' => '/wp-admin/admin.php?page=smmposting&route=addPost', @@ -166,448 +214,515 @@ public function links() ); } - public function getFromLanguage($param = '') - { - $SMMP_Language = new SMMP_Language(); - return $SMMP_Language->getFromLanguage($param); - } - public function languages() + public function load_module_data() { - $SMMP_Language = new SMMP_Language(); - return $SMMP_Language->languages(); + return array_merge(array_merge($this->links(),$this->language->all(),$this->config())); } - public function load_module_data() + public function welcome() { - return array_merge(array_merge($this->links(),$this->languages(),$this->config())); + if ($this->request->server['REQUEST_METHOD'] == 'POST') { + if (isset($this->request->post['config']['api_token'])) { + $this->checkApiToken($this->request->post['config']['api_token']); + } + } + + extract($this->load_module_data()); + require_once( SMMP_PLUGIN_DIR . 'view/welcome.php'); } - private function checkApiToken($api_token = false) + public function accounts() { - if (!$api_token) $api_token = $this->getApiToken(); - $this->smmposting = new Smmposting($api_token); - $profile = $this->smmposting->profile(); + if (isset($this->request->get['s'])) { + $_SESSION['success'] = $this->language->get('account_added'); + } - $setData = array( - 'SMMposting' => [ - 'config' => ['api_token' => $api_token] - ] - ); - $this->smmposting_model->editSetting('SMMposting', $setData); + extract($this->load_module_data()); + $page = isset($this->request->get['p']) ? $this->request->get['p'] : 1; + $limit = isset($this->request->get['limit']) ? $this->request->get['limit'] : 10; - if (isset($profile->error)) { - $_SESSION['error_warning'] = isset($profile->error) ? $profile->error : $this->getFromLanguage('smmposting_error_1'); + $connected_accounts = $this->smmposting->api('connected_accounts',['page'=>$page, 'limit'=>$limit]); - echo ''; + $data['count'] = $count = isset($connected_accounts->count) ? $connected_accounts->count : 0; + $connected_accounts = isset($connected_accounts->result) ? $connected_accounts->result : []; + $data['accounts'] = json_decode(json_encode($connected_accounts), true); - die; - } else { - if (isset($profile->result->date_off)) { - $now = time(); - $your_date = strtotime($profile->result->date_off); - $date_diff = $your_date - $now; - $date_diff = floor($date_diff / (60 * 60 * 24)); + // Redirect Link + $data['server_link'] = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=accounts'; + $result_auth_links = $this->smmposting->api('socials', ['redirect_url' => $data['server_link']]); + $data['allowed_socials'] = isset($result_auth_links->result) ? $result_auth_links->result : []; + $data['auth_links'] = $this->smmposting->getAuthLinks(); - if ($date_diff <= 3) { - if (isset($_SESSION['remain_to_pay'])) { - if ($_SESSION['remain_to_pay'] == $date_diff) { - unset($_SESSION['remain_to_pay']); - } else { - $_SESSION['remain_to_pay'] = $date_diff; - } - } - } - } - $this->auth = true; - } + // Pagination + $pagination = new SMMP_Pagination(); + $pagination->total = $count; + $pagination->page = isset($this->request->get['p']) ? $this->request->get['p'] : 1; + $pagination->limit = $limit; + $pagination->url = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=accounts'; + $data['pagination'] = $pagination->render(); - return true; + + $data['results'] = ''; + + extract($data); + require_once( SMMP_PLUGIN_DIR . 'view/accounts.php'); } + public function deleteAccount() { - public function welcome() - { - if ($this->request->server['REQUEST_METHOD'] == 'POST') { - if (isset($this->request->post['config']['api_token'])) { - $this->checkApiToken($this->request->post['config']['api_token']); + if( isset($this->request->post['account_id']) ) { + // Send to SMMposting + $res = $this->smmposting->api('account_delete/'.$this->request->post['account_id'],[],'DELETE'); + // Response + if (isset($res->result->success) && $res->error == "N") { + $_SESSION['success'] = $this->language->get('account_deleted'); + } else { + $_SESSION['error_warning'] = $this->language->get('account_not_deleted'); } } - extract($this->load_module_data()); - require_once( SMMP_PLUGIN_DIR . 'view/welcome.php'); + $this->accounts(); + } - public function accounts() - { + /* + * Posts Page + */ + public function posts(){ - /* - |-------------------------------------------------------------------------- - | Connecting Odnoklassniki - |-------------------------------------------------------------------------- - | - */ + $data = $this->load_module_data(); - if (isset($this->request->get['access_token']) && !isset($this->request->get['user_id']) ) { - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->ok_info($this->request->get['access_token']); + $data['delete_link'] = admin_url().'admin.php?page=smmposting&route=deletePost&id=%s&'; - if (isset($response->error)) { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_3') . $response->error; - } else { - if (isset($response->user->name) && isset($response->user->id)) { + // Send to SMMposting + $page = isset($this->request->get['p']) ? $this->request->get['p'] : 1; + $limit = isset($this->request->get['limit']) ? $this->request->get['limit'] : 10; + $results = $this->smmposting->api('list_posts', ['page'=>$page, 'limit'=>$limit]); - $this->smmposting_model->save_ok($response->user->name, $response->user->id, $this->request->get['access_token']); - } else { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_4'); - } - } + // Response + $count = isset($results->count) ? $results->count : 0; + $results = isset($results->result) ? $results->result : []; + $results = json_decode(json_encode($results), true); + + foreach ($results as $result) { + $data['posts'][] = array( + 'post_id' => $result['id'], + 'project_id' => $result['project_id'], + 'project_name' => $result['project_name'], + 'image' => isset($result['media'][0]) ? $result['media'][0] : null, + 'content' => nl2br(substr(html_entity_decode($result['content']), 0, 250)), + 'status' => $result['status'], + 'vk' => isset($result['socials']) && in_array("vk",$result['socials']), + 'ok' => isset($result['socials']) && in_array("ok",$result['socials']), + 'tg' => isset($result['socials']) && in_array("tg",$result['socials']), + 'ig' => isset($result['socials']) && in_array("ig",$result['socials']), + 'fb' => isset($result['socials']) && in_array("fb",$result['socials']), + 'tb' => isset($result['socials']) && in_array("tb",$result['socials']), + 'tw' => isset($result['socials']) && in_array("tw",$result['socials']), + 'date_public' => date('d.m.y', strtotime($result['date_public'])), + 'time_public' => date('H:i', strtotime($result['time_public'])), + ); } - /* - |-------------------------------------------------------------------------- - | Connecting Vkontakte - |-------------------------------------------------------------------------- - | - */ - if (isset($this->request->get['access_token']) && isset($this->request->get['user_id']) ) { - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->vk_info($this->request->get['access_token'],$this->request->get['user_id']); - if (isset($response->error)) { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_5'). $response->error; - } else { - if (isset($response->name) && isset($this->request->get['user_id'])) { - $this->smmposting_model->save_vk($response->name, $this->request->get['user_id'], $this->request->get['access_token']); + $pagination = new SMMP_Pagination(); + $pagination->total = $count; + $pagination->page = isset($this->request->get['p']) ? $this->request->get['p'] : 1; + $pagination->limit = $limit; + $pagination->url = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=posts'; + $data['pagination'] = $pagination->render(); + $data['results'] = ''; + + extract($data); + require_once( SMMP_PLUGIN_DIR . 'view/posts.php'); + } + + public function post() + { + + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validatePermission()) { + + $request = $this->request->request; + if (isset($request['page'])) { unset($request['page']); } + $_SESSION['old'] = array('post'=>$request); + /* + |-------------------------------------------------------------------------- + | Validate + |-------------------------------------------------------------------------- + | + */ + if (empty($request['content'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_3'); + } + if (isset($request['media']) && count($request['media']) > 5) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_4'); + } + if (!isset($request['media'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_15'); + } + if (!is_numeric($request['project_id'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_5'); + } + if (empty($request['time_public'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_6'); + } + if (empty($request['date_public'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_7'); + } + + if (isset($_SESSION['error_warning'])) { + if (isset($request['id'])) { + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=post&id=' . (int)$request['id']); } else { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_6'); + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=post'); } } - } - /* - |-------------------------------------------------------------------------- - | Connecting Facebook - |-------------------------------------------------------------------------- - | - */ - if (isset($this->request->get['fb_access_token'])) { - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->fb_info($this->request->get['fb_access_token']); - if (isset($response->error)) { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_7'). $response->error; - } else { - if (isset($response->first_name) && isset($response->last_name) && isset($response->id)) { - $name = $response->first_name . ' ' . $response->last_name; - $fb_user_id = $response->id; - $access_token = $this->request->get['fb_access_token']; + ///////////////////////////////////////// - $this->smmposting_model->save_fb($name, $fb_user_id, $access_token); - } else { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_8'); - } + if (isset($request['media'])) { + $request['media'] = json_encode($request['media']); } - } - /* - |-------------------------------------------------------------------------- - | Connecting Twitter - |-------------------------------------------------------------------------- - | - */ - - if (isset($this->request->get['tw_auth'])) { - $oauth_token = $this->request->get['oauth_token']; - $oauth_verifier = $this->request->get['oauth_verifier']; - $oauth_token_secret = $this->request->get['oauth_token_secret']; - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->tw_info($oauth_token,$oauth_verifier); - if (isset($response->error)) { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_9'). $response->error; + if (isset($request['socials'])) { + $request['socials'] = json_encode($request['socials']); + } + if (isset($request['allowed'])) { + unset($request['allowed']); + } + + if (isset($request['id'])) { + // Send to SMMposting + $results = $this->smmposting->api('update_post/'.(int)$request['id'], $request, 'PATCH'); } else { - if (isset($response->screen_name)) { - $name = $response->screen_name; - $this->smmposting_model->save_tw($name, $oauth_token, $oauth_token_secret); - } else { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_10'); - } + // Send to SMMposting + $results = $this->smmposting->api('add_post', $request, 'POST'); } - } - /* - |-------------------------------------------------------------------------- - | Connecting Tumblr - |-------------------------------------------------------------------------- - | - */ - if (isset($this->request->get['tb_auth'])) { - $oauth_token = $this->request->get['oauth_token']; - $oauth_verifier = $this->request->get['oauth_verifier']; - $oauth_token_secret = $this->request->get['oauth_token_secret']; - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->tb_info($oauth_token,$oauth_verifier, $oauth_token_secret); - - if (isset($response->error)) { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_11'). $response->error; + // Response + if (isset($results->result->success) && $results->result->success == "Y") { + unset($_SESSION['old']); + $_SESSION['success'] = $this->language->get('text_success'); + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=posts'); } else { - if (isset($response->user->name)) { - $name = $response->user->name; - $this->smmposting_model->save_tb($name, $oauth_token, $oauth_verifier,$oauth_token_secret); + $_SESSION['error_warning'] = isset($results->result) ? $results->result : $this->language->get('smmposting_error_14'); + if (isset($request['id'])) { + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=post&id=' . (int)$request['id']); } else { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_11'); + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=post'); } } - + $this->posts(); } - /* - * End Tumblr - */ - - extract($this->load_module_data()); + $data = $this->load_module_data(); - $data['accounts'] = $this->smmposting_model->getAccounts(); - $data['auth_links'] = Smmposting::getAuthLinks(); + $data['post'] = []; + if (isset($this->request->get['id'])) { + $data['action'] = admin_url().'admin.php?page=smmposting&route=post&id='.$this->request->get['id']; + // Send to SMMposting Get Post + $results = $this->smmposting->api("get_post/".$this->request->get['id']); + // Response + $results = isset($results->result) ? $results->result : []; + $results = json_decode(json_encode($results), true); + $data['post'] = $results; - // for account redirect uri - $data['server_link'] = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=accounts'; + // Send to SMMposting Get Project + $project_info = $this->smmposting->api("get_project/".$results['project_id']); + // Response + $project_info = isset($project_info->result) ? $project_info->result : []; + $project_info = json_decode(json_encode($project_info), true); - extract($data); - require_once( SMMP_PLUGIN_DIR . 'view/accounts.php'); - } - public function deleteAccount() { + } else { + $data['action'] = admin_url().'admin.php?page=smmposting&route=post'; + $data['post'] = []; + } - if( isset($this->request->get['account_id']) ) { - $res = $this->smmposting_model->deleteAccount($this->request->get['account_id']); - if ($res) { - $_SESSION['success'] = $this->getFromLanguage('account_deleted'); - } + if (!isset($_SESSION['old'])) { + $data['post']['allowed'] = isset($project_info['allowed']) ? $project_info['allowed'] : []; } - $this->accounts(); - } - public function addTelegram() { + // Send to SMMposting + $results = $this->smmposting->api('list_projects', ['limit'=>100]); + // Response + $smm_projects = isset($results->result) ? $results->result : []; + $data['projects'] = json_decode(json_encode($smm_projects), true); - if( isset($this->request->post['telegram_token'])) { - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->tg_info($this->request->post['telegram_token']); + $data['cancel'] = admin_url().'admin.php?page=smmposting&route=post'; - if (isset($response->error)) { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_13'). $response->error; - } else { - if (isset($response->name)) { - $this->smmposting_model->save_tg($response->name,$this->request->post['telegram_token']); - } else { - $_SESSION['error_warning'] = $this->getFromLanguage('smmposting_error_14'); - } - } + $data['post']['date_public'] = isset($data['post']['date_public']) ? $data['post']['date_public'] : date("Y-m-d"); + ## Time + $data['date_today'] = date("Y-m-d"); + $data['date_tomorrow'] = date('Y-m-d', strtotime("+1 day")); + $data['date_after_tomorrow'] = date('Y-m-d', strtotime("+2 day")); + + + // OLD DATA + if (isset($_SESSION['old'])) { + $data = array_replace($data, $_SESSION['old']); + unset($_SESSION['old']); } - $this->accounts(); + // HIDE SOCIALS AFTER OLD DATA + $data['hide_ok'] = (isset($data['post']['allowed']) && !in_array("ok",$data['post']['allowed'])); + $data['hide_vk'] = (isset($data['post']['allowed']) && !in_array("vk",$data['post']['allowed'])); + $data['hide_tg'] = (isset($data['post']['allowed']) && !in_array("tg",$data['post']['allowed'])); + $data['hide_ig'] = (isset($data['post']['allowed']) && !in_array("ig",$data['post']['allowed'])); + $data['hide_fb'] = (isset($data['post']['allowed']) && !in_array("fb",$data['post']['allowed'])); + $data['hide_tw'] = (isset($data['post']['allowed']) && !in_array("tw",$data['post']['allowed'])); + $data['hide_tb'] = (isset($data['post']['allowed']) && !in_array("tb",$data['post']['allowed'])); + + + extract($data); + require_once( SMMP_PLUGIN_DIR . 'view/post.php'); + } - public function addInstagram() { - if( isset($this->request->post['instagram_login']) && isset($this->request->post['instagram_password'])) { - #Response from SMM-posting - $this->smmposting = new Smmposting($this->getApiToken()); - $response = $this->smmposting->ig_info($this->request->post['instagram_login'],$this->request->post['instagram_password']); - if (isset($response->success)) { - $this->smmposting_model->save_ig($this->request->post['instagram_login'], $this->request->post['instagram_password']); + public function deletePost() { + if( isset($this->request->get['id']) && $id=$this->request->get['id'] ){ + // Send to SMMposting + $res = $this->smmposting->api('delete_post/'.$this->request->get['id'],[],'DELETE'); + // Response + if ((isset($res->result->was_deleted) && $res->result->was_deleted == "Y") || (isset($res->result->success) && $res->result->success == "Y")) { + $_SESSION['success'] = $this->language->get('text_success'); } else { - $_SESSION['error_warning'] = isset($response->error) ? $response->error : $this->getFromLanguage('smmposting_error_15'); + $_SESSION['error_warning'] = $this->language->get('error_warning'); } } - $this->accounts(); + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=posts'); } + public function project() + { - /* - * Posts Page - */ - public function posts(){ - $results = $this->smmposting_model->getPosts(); - $posts = []; - foreach ($results as $result) { - $posts[] = array( - 'post_id' => $result['post_id'], - 'project_id' => $result['project_id'], - 'project_name' => $this->smmposting_model->getProjectName($result['project_id']), - 'image' => $this->smmposting_model->getFirstImage($result['post_id']), - 'content' => nl2br(substr(html_entity_decode($result['content']), 0, 250)), - 'status' => $result['status'], - 'vkontakte' => $result['vkontakte'], - 'telegram' => $result['telegram'], - 'instagram' => $result['instagram'], - 'odnoklassniki' => $result['odnoklassniki'], - 'facebook' => $result['facebook'], - 'tg_download' => $result['tg_download'], - 'vk_download' => $result['vk_download'], - 'ok_download' => $result['ok_download'], - 'ig_download' => $result['ig_download'], - 'fb_download' => $result['fb_download'], - 'date_public' => date('d.m.y', strtotime($result['date_public'])), - 'time_public' => date('H:i', strtotime($result['time_public'])), - ); - } + if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validatePermission()) { - extract($this->load_module_data()); - require_once( SMMP_PLUGIN_DIR . 'view/posts.php'); - } + $request = $this->request->request; + if (isset($request['page'])) { unset($request['page']); } + $_SESSION['old'] = array('project'=>$request); - public function post() - { - extract($this->load_module_data()); + /* + |-------------------------------------------------------------------------- + | Validate + |-------------------------------------------------------------------------- + | + */ + if (empty($request['name'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_8'); + } - $data['post'] = isset($this->request->get['id']) ? $this->smmposting_model->getPost( (int)$this->request->get['id'] ) : null; - $data['images'] = isset($this->request->get['id']) ? $this->smmposting_model->getImages($this->request->get['id']) : []; - $data['project_info'] = isset($data['post']['project_id']) ? $this->smmposting_model->getProject($data['post']['project_id']) : null; - $data['show_ok'] = isset($data['project_info']['ok_account_id']) ? $data['project_info']['ok_account_id'] : false; - $data['show_vk'] = isset($data['project_info']['vk_account_id']) ? $data['project_info']['vk_account_id'] : false; - $data['show_tg'] = isset($data['project_info']['tg_account_id']) ? $data['project_info']['tg_account_id'] : false; - $data['show_ig'] = isset($data['project_info']['ig_account_id']) ? $data['project_info']['ig_account_id'] : false; - $data['show_fb'] = isset($data['project_info']['fb_account_id']) ? $data['project_info']['fb_account_id'] : false; - $data['show_tb'] = isset($data['project_info']['tb_account_id']) ? $data['project_info']['tb_account_id'] : false; - $data['show_tw'] = isset($data['project_info']['tw_account_id']) ? $data['project_info']['tw_account_id'] : false; - - $data['projects'] = $this->smmposting_model->getProjects(); - - if (!isset($this->request->get['id'])) { - $data['action'] = $action_add_post; - } else { - $data['action'] = $action_edit_post . '&id=' . $this->request->get['id']; - } + // OK + if ($request['ok_account_id'] && !isset($request['ok_group_id'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_9'); + } - $data['date_today'] = date("Y-m-d"); - $data['date_tomorrow'] = date('Y-m-d', strtotime("+1 day")); - $data['date_after_tommorrow'] = date('Y-m-d', strtotime("+2 day")); - $data['status'] = isset($data['post']['status']) ? $data['post']['status'] : 1; + // VK + if ($request['vk_account_id'] && !isset($request['vk_group_id'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_10'); + } - extract($data); + // TG + if ($request['tg_account_id'] && empty($request['tg_chat_id'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_11'); + } - require_once( SMMP_PLUGIN_DIR . 'view/post.php'); + // FB + if ($request['fb_account_id'] && !isset($request['fb_group_id'])) { + $_SESSION['error_warning'] = $this->language->get('smmposting_error_12'); + } - } - public function addPost(){ + if (isset($_SESSION['error_warning'])) { + if (isset($request['id'])) { + $this->response->redirect(get_site_url() . '/wp-admin/admin.php?page=smmposting&route=project&id='. (int)$request['id']); + } else { + $this->response->redirect(get_site_url() . '/wp-admin/admin.php?page=smmposting&route=project'); + } + } + ///////////////////////////////////////// - if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - $id = $this->smmposting_model->savePost( $this->request->post ); - $_SESSION['success'] = $this->getFromLanguage('text_success'); - } - echo ''; - exit; - } - public function editPost(){ - if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - $this->request->post['id'] = $this->request->get['id']; - $this->smmposting_model->savePost( $this->request->post ); - $_SESSION['success'] = $this->getFromLanguage('text_success'); - } + if (!$request['ok_account_id'] && !isset($request['ok_group_id'])) { + unset($request['ok_account_id']); + } - echo ''; - exit; - } + if (!$request['vk_account_id'] && !isset($request['vk_group_id'])) { + unset($request['vk_account_id']); + } - public function deletePost() { - $post_id = isset($this->request->get['id']) ? $this->request->get['id'] : false; - if ($post_id) { - $this->smmposting_model->deletePost( $post_id ); + if (!$request['tg_account_id'] && isset($request['tg_chat_id'])) { + unset($request['tg_account_id']); + unset($request['tg_chat_id']); + } + + if (!$request['fb_account_id'] && !isset($request['fb_group_id'])) { + unset($request['fb_account_id']); + } + + if (isset($request['ig_account_id']) && !$request['ig_account_id']) { + unset($request['ig_account_id']); + } + + if (isset($request['tb_account_id']) && !$request['tb_account_id']) { + unset($request['tb_account_id']); + } + + if (isset($request['tw_account_id']) && !$request['tw_account_id']) { + unset($request['tw_account_id']); + } + + if (isset($request['id'])) { + // Send to SMMposting + $results = $this->smmposting->api('update_project/'.(int)$request['id'], $request, 'PATCH'); + } else { + // Send to SMMposting + $results = $this->smmposting->api('add_project', $request, 'POST'); + } + + // Response + if (isset($results->result->success) && $results->result->success == "Y") { + unset($_SESSION['old']); + $_SESSION['success'] = $this->language->get('text_success'); + $this->response->redirect(get_site_url() . '/wp-admin/admin.php?page=smmposting&route=projects'); + } else { + + $_SESSION['error_warning'] = isset($results->result) ? $results->result : $this->language->get('smmposting_error_13'); + if (isset($request['id'])) { + $this->response->redirect(get_site_url() . '/wp-admin/admin.php?page=smmposting&route=project&id=' . (int)$request['id']); + } else { + $this->response->redirect(get_site_url() . '/wp-admin/admin.php?page=smmposting&route=project'); + } + + + } + + $this->projects(); } - echo ''; - exit; - } - public function project() - { extract($this->load_module_data()); - if (isset($this->request->get['project_id'])) { - $data['action'] = $action_edit_project . '&project_id='.$this->request->get['project_id']; - $data['project'] = $this->smmposting_model->getProject($this->request->get['project_id']); + if (isset($data)) extract($data); + + if (isset($this->request->get['id'])) { + $data['action'] = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=project&id='. $this->request->get['id']; + // Send to SMMposting Get Post + $results = $this->smmposting->api("get_project/".$this->request->get['id']); + // Response + $results = isset($results->result) ? $results->result : []; + $results = json_decode(json_encode($results), true); + $data['project'] = $results; } else { - $data['action'] = $action_add_project; - $data['project'] = false; + $data['action'] = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=project'; + $data['project'] = []; } + // Send to SMMposting Get Connected Accounts + $connected_accounts = $this->smmposting->api('connected_accounts',['limit'=>100]); + $connected_accounts = isset($connected_accounts->result) ? $connected_accounts->result : []; + $connected_accounts = json_decode(json_encode($connected_accounts), true); + $data['accounts'] = [ - 'odnoklassniki' => $this->smmposting_model->getAccounts('odnoklassniki'), - 'vkontakte' => $this->smmposting_model->getAccounts('vkontakte'), - 'telegram' => $this->smmposting_model->getAccounts('telegram'), - 'instagram' => $this->smmposting_model->getAccounts('instagram'), - 'facebook' => $this->smmposting_model->getAccounts('facebook'), - 'tumblr' => $this->smmposting_model->getAccounts('tumblr'), - 'twitter' => $this->smmposting_model->getAccounts('twitter'), + "ok" => [], "vk" => [], "tg" => [], "ig" => [], "fb" => [], "tw" => [], "tb" => [] ]; - - extract($data); - require_once( SMMP_PLUGIN_DIR . 'view/project.php'); - } - - public function addProject() { - if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - $this->smmposting_model->addProject( $this->request->post ); - $_SESSION['success'] = $this->getFromLanguage('text_success_project'); + foreach ($connected_accounts as $account) + { + switch ($account['social']) { + case "ok": + $data['accounts']["ok"][] = $account; + break; + case "vk": + $data['accounts']["vk"][] = $account; + break; + case "tg": + $data['accounts']["tg"][] = $account; + break; + case "ig": + $data['accounts']["ig"][] = $account; + break; + case "fb": + $data['accounts']["fb"][] = $account; + break; + case "tw": + $data['accounts']["tw"][] = $account; + break; + case "tb": + $data['accounts']["tb"][] = $account; + break; + } } - echo ''; - exit; - } - public function editProject() { - if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - $this->request->post['project_id'] = $this->request->get['project_id']; - $this->smmposting_model->editProject( $this->request->post ); + // OLD DATA + if (isset($data['project']['socials']['ok']['id'])) { + $data['project']['ok_account_id'] = $data['project']['socials']['ok']['id']; + } + if (isset($data['project']['socials']['vk']['id'])) { + $data['project']['vk_account_id'] = $data['project']['socials']['vk']['id']; + } + if (isset($data['project']['socials']['tg']['id'])) { + $data['project']['tg_account_id'] = $data['project']['socials']['tg']['id']; + } + if (isset($data['project']['socials']['fb']['id'])) { + $data['project']['fb_account_id'] = $data['project']['socials']['fb']['id']; } - echo ''; - exit; - } - public function deleteProject() { - $project_id = isset($this->request->get['project_id']) ? $this->request->get['project_id'] : false; - if ($project_id) { - $this->smmposting_model->deleteProject( $project_id ); + if (isset($_SESSION['old'])) { + $data = array_replace($data, $_SESSION['old']); + unset($_SESSION['old']); } - echo ''; - exit; + extract($data); + require_once( SMMP_PLUGIN_DIR . 'view/project.php'); } + + public function projects() { extract($this->load_module_data()); - $smm_projects = $this->smmposting_model->getProjects(); + + $page = isset($this->request->get['p']) ? $this->request->get['p'] : 1; + $limit = isset($this->request->get['limit']) ? $this->request->get['limit'] : 10; + $results = $this->smmposting->api('list_projects', ['page'=>$page, 'limit'=>$limit]); + $count = isset($results->count) ? $results->count : 0; + $smm_projects_results = isset($results->result) ? $results->result : []; + $data['smm_projects'] = json_decode(json_encode($smm_projects_results), true); + + $pagination = new SMMP_Pagination(); + $pagination->total = $count; + $pagination->page = isset($this->request->get['p']) ? $this->request->get['p'] : 1; + $pagination->limit = $limit; + $pagination->url = get_site_url() . '/wp-admin/admin.php?page=smmposting&route=projects'; + $data['pagination'] = $pagination->render(); + $data['results'] = ''; + + extract($data); require_once( SMMP_PLUGIN_DIR . 'view/projects.php'); } - public function settings() + public function deleteProject() { + if (isset($this->request->get['id'])) { + // Send to SMMposting + $res = $this->smmposting->api('delete_project/'.$this->request->get['id'],[],'DELETE'); + // Response + if (isset($res->result->success) && $res->result->success == "Y") { + $_SESSION['success'] = $this->language->get('text_success'); + } else { + $_SESSION['error_warning'] = $this->language->get('error_warning'); + } + } + + $this->response->redirect(admin_url().'admin.php?page=smmposting&route=projects'); + } + public function contact() { extract($this->load_module_data()); - require_once( SMMP_PLUGIN_DIR . 'view/settings.php'); + require_once( SMMP_PLUGIN_DIR . 'view/contact.php'); } - protected function validate() { - return true; - } - private function sanitize($string) - { - return sanitize_text_field($string); + + ## VALIDATION + #################################################################### + protected function validatePermission() { + return 1; } + } diff --git a/language/ru_ru/marketing/smmposting.php b/language/ru_ru/marketing/smmposting.php index 163d43d..ec6f2cb 100644 --- a/language/ru_ru/marketing/smmposting.php +++ b/language/ru_ru/marketing/smmposting.php @@ -58,7 +58,7 @@ 'text_pagination' => "", 'text_enabled' => 'Включен', 'text_disabled' => 'Выключен', - 'text_success' => 'Успешно сохранено', + 'text_success' => 'Успешно', 'error_permission' => 'Нет прав на редактирование модуля', 'error_warning' => 'Внимательно проверьте форму на ошибки!', 'error_permission_project' => 'У Вас нет прав для изменения проекта!', @@ -67,20 +67,23 @@ 'error_time_public' => 'Заполните время публикации', 'smmposting_error_1' => 'Не удалось подключиться к серверу SMM-posting', 'smmposting_error_2' => 'Введите API Token и нажмите подключиться', - 'smmposting_error_3' => 'Ошибка подключения к Одноклассникам: ', - 'smmposting_error_4' => 'Ошибка подключения к Одноклассникам: Не удалось получить имя пользователя', - 'smmposting_error_5' => 'Ошибка подключения Вконтакте: ', - 'smmposting_error_6' => 'Ошибка подключения Вконтакте: Не удалось получить имя пользователя', - 'smmposting_error_7' => 'Ошибка подключения Facebook: ', - 'smmposting_error_8' => 'Ошибка подключения Facebook: Не удалось получить имя пользователя', - 'smmposting_error_9' => 'Ошибка подключения Twitter: ', - 'smmposting_error_10' => 'Ошибка подключения Twitter: Не удалось получить имя пользователя', - 'smmposting_error_11' => 'Ошибка подключения Tumblr: ', - 'smmposting_error_12' => 'Ошибка подключения Tumblr: Не удалось получить имя пользователя', - 'smmposting_error_13' => 'Ошибка подключения к Телеграм: ', - 'smmposting_error_14' => 'Ошибка подключения к Телеграм: Не удалось получить имя бота', - 'smmposting_error_15' => 'Ошибка подключения к Инстаграм: Не удалось залогиниться', + 'smmposting_error_3' => 'Контент не должен быть пустым', + 'smmposting_error_4' => 'Количество медиафайлов не должно быть больше 5', + 'smmposting_error_5' => 'Выберите проект', + 'smmposting_error_6' => 'Не верный формат времени публикации', + 'smmposting_error_7' => 'Не верный формат даты публикации', + 'smmposting_error_8' => 'Поле Название проекта не должно быть пустым', + 'smmposting_error_9' => 'При добавлении аккаунта Одноклассников необходимо указать группу для постинга', + 'smmposting_error_10' => 'При добавлении аккаунта Вконтакте необходимо указать группу для постинга', + 'smmposting_error_11' => 'При добавлении аккаунта Телеграм необходимо указать группу для постинга', + 'smmposting_error_12' => 'При добавлении аккаунта Фейсбук необходимо указать группу для постинга', + 'smmposting_error_13' => 'Произошла ошибка при добавлении проекта', + 'smmposting_error_14' => 'Произошла ошибка при добавлении поста', + 'account_added' => 'Аккаунт успешно добавлен', + 'account_not_deleted' => 'Аккаунт не был удален', 'account_deleted' => 'Аккаунт удален успешно', + 'post_deleted' => 'Пост удален успешно', + 'project_deleted' => 'Проект удален успешно', 'text_ok' => 'Одноклассники', 'text_vk' => 'Вконтакте', 'text_tg' => 'Телеграм', @@ -186,6 +189,8 @@ 'text_warning' => 'Внимание!', 'text_remain_to_pay' => 'До момента оплаты осталось дней:', 'text_pay_now' => 'Оплатить прямо сейчас', + // 2.1 + 'smmposting_error_15' => 'Для публикации необходимо добавить картинки (не более 5 шт)', ]; ?> \ No newline at end of file diff --git a/lib/cron.php b/lib/cron.php deleted file mode 100644 index 1cedf72..0000000 --- a/lib/cron.php +++ /dev/null @@ -1,131 +0,0 @@ - 5.5 - * @author smart-coder.ru - * @copyright Copyright (c) 2020 SMM-posting.ru - * @version 1.0 - */ - -header('Content-type: application/json'); -header('Access-Control-Allow-Origin: *'); - -Class SMMP_Cron { - - protected $config = []; - private $smmposting; - private $smmposting_wordpress; - private $smmposting_model; - - public function __construct() { - - # Smmposting Wordpress - $this->smmposting_wordpress = new SmmpostingWordpress(); - - ## Load Model - $this->setModel(); - - ## Module Settings - $config = $this->smmposting_model->getSetting('SMMposting'); - $this->config = isset($config['SMMposting']['config']) ? $config['SMMposting']['config'] : []; - } - - private function setModel() - { - $this->smmposting_model = new SmmpostingModel(); - } - - - public function start() { - // Validate - if(isset($_GET['api_token']) && isset($this->config['api_token'])) { - if($_GET['api_token'] != $this->config['api_token']){ - $json['error'] = 'Not found or no valid API Token'; - echo json_encode($json, JSON_UNESCAPED_UNICODE); - die; - } - } else { - $json['error'] = 'Not found or no valid API Token'; - echo json_encode($json, JSON_UNESCAPED_UNICODE); - die; - } - - $json = []; - - if (isset($_GET['post_id']) && isset($_GET['social'])) { - // One Post - $data['posts'] = $this->smmposting_wordpress->getPost($_GET['post_id'],$_GET['social']); - } else if (isset($_GET['products']) && $_GET['project'] && $_GET['social']) { - // Products - $data['posts'] = $this->smmposting_wordpress->getProductsAsPosts($_GET['project'], $_GET['products'], $_GET['social']); - } else { - // Posts - $data['posts'] = $this->smmposting_wordpress->getPosts(); - } - - $data['api_token'] = $this->config['api_token']; // Api Token from https://smm-posting.ru/settings - - ## Sending posts - if (count($data['posts']) > 0) { - $json = $this->send($data); - if (isset($response->result)) { - $this->smmposting_wordpress->saveResponse($response->result); - } - echo json_encode($json, JSON_UNESCAPED_UNICODE); - die; - } else { - $json['error'] = 'No posts data or products data to send'; - echo json_encode($json, JSON_UNESCAPED_UNICODE); - die; - } - } - - - /** - * @param string $data['api_token'] - api token from smm-posting.ru/settings - * - * @param array $data['posts'] - array with your publications (posts) - * - * @param int $data['posts'][$key]['odnoklassniki'] - Public in odnoklassniki = 1 - * @param int $data['posts'][$key]['vkontakte'] - Public in Vkontakte = 1 - * @param int $data['posts'][$key]['telegram'] - Public in Telegram = 1 - * @param int $data['posts'][$key]['instagram'] - Public in Instagram = 1 - * @param int $data['posts'][$key]['facebook'] - Public in Facebook = 1 - * @param int $data['posts'][$key]['tumblr'] - Public in Tumblr = 1 - * @param int $data['posts'][$key]['twitter'] - Public in Twitter = 1 - * @param int $data['posts'][$key]['post_id'] - Post ID - * @param string $data['posts'][$key]['content'] - Post Content - * @param array $data['posts'][$key]['images'] - Post Images Links - * @param string $data['posts'][$key]['instagram_login'] - Login Instagram - * @param string $data['posts'][$key]['instagram_password'] - Password Instagram - * @param string $data['posts'][$key]['telegram_token'] - Telegram token from Bot's Father - * @param string $data['posts'][$key]['telegram_chat'] - @yourchat - * @param string $data['posts'][$key]['vk_access_token'] - Vkontakte Access Token - * @param string $data['posts'][$key]['vk_user_id'] - Vkontakte user_id - * @param string $data['posts'][$key]['vk_group_id'] - Vkontakte group_id - * @param string $data['posts'][$key]['ok_access_token'] - Odnoklassniki Access Token - * @param string $data['posts'][$key]['ok_group_id'] - Odnoklassniki group_id - * @param string $data['posts'][$key]['fb_access_token'] - Facebook access_token - * @param string $data['posts'][$key]['fb_user_id'] - Facebook user_id - * @param string $data['posts'][$key]['tw_oauth_token'] - Twitter oauth_token - * @param string $data['posts'][$key]['tw_oauth_token_secret'] - Twitter oauth_verifier - * @param string $data['posts'][$key]['tb_oauth_verifier'] - Tumblr oauth_verifier - * @param string $data['posts'][$key]['tb_oauth_token_secret'] - Tumblr oauth_token_secret - - * - * @return mixed response - */ - private function send($data) { - # Response from smm-posting.ru - $this->smmposting = new Smmposting($this->getApiToken()); - return $this->smmposting->send($data); - } - - private function getApiToken() - { - $config = $this->smmposting_model->getSetting('SMMposting'); - return isset($config['SMMposting']['config']['api_token']) ? $config['SMMposting']['config']['api_token'] : false; - } - - -} \ No newline at end of file diff --git a/lib/smmposting.php b/lib/smmposting.php index 128896d..f2c8a7a 100644 --- a/lib/smmposting.php +++ b/lib/smmposting.php @@ -1,15 +1,15 @@ api_token = $api_token; - $this->api_version = $api_version; + self::$api_version = $api_version; } - /** - * @param $method - * @param array $params - * @return bool|string - */ - public function api($method, $body = array()) { + public function api($api_method, $params = array(), $http_method = "GET") { $args = array( - 'body' => $body, + 'method' => $http_method, + 'body' => $params, 'timeout' => '5', 'redirection' => '5', 'httpversion' => '1.0', @@ -39,159 +35,12 @@ public function api($method, $body = array()) { 'headers' => array(), 'cookies' => array(), ); - - $url = self::$domain."api/v$this->api_version/smmposting/$method?api_token=$this->api_token"; - $response = wp_remote_post( $url, $args ); + $url = self::$domain."api/v".self::$api_version."/smmposting/$api_method?api_token=$this->api_token&".http_build_query($params); + $response = wp_remote_request( $url, $args ); $response = wp_remote_retrieve_body( $response ); return json_decode($response); } - /** - * Get Info about me SMMposting - * @return bool|string - */ - public function profile() - { - return $this->api('profile'); - } - - /** - * Get Profile Info Odnoklassniki - * @param $access_token - * @return bool|string - */ - public function ok_info($access_token) - { - return $this->api('ok_user_info',['access_token'=>$access_token]); - } - - /** - * Get Profile Info Vkontakte - * @param $access_token - * @param $user_id - * @return bool|string - */ - public function vk_info($access_token,$user_id) - { - return $this->api('vk_user_info',['access_token'=>$access_token, 'user_id'=>$user_id]); - } - - - /** - * Get Profile Info Telegram - * @param $telegram_token - * @return bool|string - */ - public function tg_info($telegram_token) - { - return $this->api('tg_user_info', ['telegram_token' => $telegram_token]); - } - - /** - * Get Profile Info Instagram - * @param $instagram_login - * @param $instagram_password - * @return bool|string - */ - public function ig_info($instagram_login,$instagram_password) - { - return $this->api('ig_user_info',['instagram_login'=>$instagram_login, 'instagram_password'=>$instagram_password]); - } - - /** - * * Get Profile Info Facebook - * @param $fb_access_token - * @return bool|string - */ - public function fb_info($fb_access_token) - { - return $this->api('fb_user_info',['fb_access_token'=>$fb_access_token]); - } - - /** - * Get Profile Info Tumblr - * @param $oauth_token - * @param $oauth_verifier - * @param $oauth_token_secret - * @return bool|string - */ - public function tb_info($oauth_token, $oauth_verifier, $oauth_token_secret) - { - return $this->api('tb_user_info',['oauth_token'=>$oauth_token,'oauth_verifier'=>$oauth_verifier,'oauth_token_secret'=>$oauth_token_secret]); - } - - /** - * Get Profile Info Twitter - * @param $oauth_token - * @param $oauth_verifier - * @return bool|string - */ - public function tw_info($oauth_token, $oauth_verifier) - { - return $this->api('tw_user_info',['oauth_token'=>$oauth_token,'oauth_verifier'=>$oauth_verifier,]); - } - - /** - * Get Profile Groups Odnoklassniki - * @return bool|string - */ - public function ok_groups() - { - return $this->api('ok_groups'); - } - - /** - * Get Profile Groups Vkontakte - * @return bool|string - */ - public function vk_groups() - { - return $this->api('vk_groups'); - } - - /** - * Get Profile Groups Facebook - * @return bool|string - */ - public function fb_groups() - { - return $this->api('fb_groups'); - } - - - /** - * @param string $data['api_key'] - секретный ключ, выданный в настройках на сайте smm-posting.ru/settings - * @param array $data['posts'] - массив с публикациями и с проектами - * @param int $data['posts'][0]['post_id'] - ID вашего поста - * @param string $data['posts'][0]['content'] - Содержание поста - * @param array $data['posts'][0]['images'] - Картинки поста - * @param string $data['posts'][0]['instagram_login'] - Логин Instagram - * @param string $data['posts'][0]['instagram_password'] - Пароль Instagram - * @param string $data['posts'][0]['telegram_token'] - Token, полученный у Bot's Father - * @param string $data['posts'][0]['telegram_chat'] - @yourchat - * @param string $data['posts'][0]['vk_access_token'] - VK Access Token - * @param string $data['posts'][0]['vk_user_id'] - VK user_id - * @param string $data['posts'][0]['vk_group_id'] - VK group_id - * @param string $data['posts'][0]['ok_access_token'] - OK Access Token - * @param string $data['posts'][0]['ok_group_id'] - OK group_id - * - * @return mixed response - */ - public function send($data) - { - return $this->api('send',$data); - - } - - /** - * Connect link to SMMposting - * @return string - */ - public static function connectLink() - { - return self::$domain . 'api/v1/smmposting/profile'; - } - /** * Auth links to socials * @return array @@ -199,480 +48,14 @@ public static function connectLink() public static function getAuthLinks() { return [ - 'ok_auth_link' => self::$domain . 'api/v1/smmposting/ok_auth', // Odnoklassniki - 'vk_auth_link' => self::$domain . 'api/v1/smmposting/vk_auth', // Vkontakte - 'tg_auth_link' => self::$domain . 'api/v1/smmposting/tg_auth', // Telegram - 'fb_auth_link' => self::$domain . 'api/v1/smmposting/fb_auth', // Facebook - 'tb_auth_link' => self::$domain . 'api/v1/smmposting/tb_auth', // Tumblr - 'tw_auth_link' => self::$domain . 'api/v1/smmposting/tw_auth', // Twitter - ]; - } - - /** - * Groups Info links to socials - * @return array - */ - public static function getGroupLinks() - { - return [ - 'ok_groups' => self::$domain . 'api/v1/smmposting/ok_groups', // Odnoklassniki - 'vk_groups' => self::$domain . 'api/v1/smmposting/vk_groups', // Vkontakte - 'fb_groups' => self::$domain . 'api/v1/smmposting/fb_groups', // Facebook + 'ok_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/ok_auth', // Odnoklassniki + 'vk_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/vk_auth', // Vkontakte + 'tg_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/tg_auth', // Telegram + 'fb_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/fb_auth', // Facebook + 'tb_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/tb_auth', // Tumblr + 'tw_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/tw_auth', // Twitter + 'ig_auth_link' => self::$domain . 'api/v'.self::$api_version.'/smmposting/ig_auth', // Instagram ]; } - - -} -class SmmpostingWordpress -{ - private $db; - private $config; - private $wpdb; - - /** - * SmmpostingWordpress constructor. - */ - public function __construct() - { - $this->setDb(); - } - - public function setDb() { - $this->db = new SMMP_DB(); - global $wpdb; - $this->wpdb = $wpdb; - } - - - /** - * @param $post_id - * @param bool $social - * @return bool - */ - public function getPost($post_id, $social = false) - { - switch ($social){ - case 'vkontakte': - $sql = "SELECT p1.post_id, p1.content, p1.vkontakte, p2.vk_group_id,"; - $sql .= "(SELECT vk_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.vk_account_id) as vk_access_token, - (SELECT vk_user_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.vk_account_id) as vk_user_id"; - break; - case 'odnoklassniki': - $sql = "SELECT p1.post_id, p1.content, p1.odnoklassniki, p2.ok_group_id,"; - $sql .= "(SELECT ok_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ok_account_id) as ok_access_token"; - break; - case 'telegram': - $sql = "SELECT p1.post_id, p1.content, p1.telegram, p2.telegram_chat_id,"; - $sql .= "(SELECT telegram_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tg_account_id) as telegram_bot_id, - (SELECT telegram_chat_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tg_account_id) as telegram_chat_id"; - break; - case 'instagram': - $sql = "SELECT p1.post_id, p1.content, p1.instagram,"; - $sql .= "(SELECT instagram_login FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ig_account_id) as instagram_login, - (SELECT instagram_password FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ig_account_id) as instagram_password"; - break; - case 'facebook': - $sql = "SELECT p1.post_id, p1.content, p1.facebook, p2.fb_group_id,"; - $sql .= "(SELECT fb_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.fb_account_id) as fb_access_token, - (SELECT fb_user_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.fb_account_id) as fb_user_id"; - break; - case 'twitter': - $sql = "SELECT p1.post_id, p1.content, p1.twitter,"; - $sql .= "(SELECT tw_oauth_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tw_account_id) as tw_oauth_token, - (SELECT tw_oauth_token_secret FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tw_account_id) as tw_oauth_token_secret, - (SELECT account_name FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tb_account_id) as account_name"; - break; - case 'tumblr': - $sql = "SELECT p1.post_id, p1.content, p1.tumblr,"; - $sql .= "(SELECT tb_oauth_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tb_account_id) as tb_oauth_token, - (SELECT tb_oauth_token_secret FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tb_account_id) as tb_oauth_token_secret, - (SELECT account_name FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tb_account_id) as account_name"; - break; - default: - return false; - break; - } - - - $sql .= ", (SELECT GROUP_CONCAT(image) FROM ".$this->wpdb->base_prefix."smmposting_image WHERE post_id = p1.post_id) as cloud_links"; - - $sql .= " FROM ".$this->wpdb->base_prefix."smmposting_post p1 - LEFT JOIN ".$this->wpdb->base_prefix."smmposting_projects p2 ON(p1.project_id=p2.project_id) - WHERE p1.post_id = '".(int)$post_id ."' - ORDER BY p1.date_public DESC LIMIT 1"; - - $query = $this->db->query($sql); - return $query->rows; - } - - /** - * @return mixed - */ - public function getPosts() - { - - $sql = "SELECT p1.post_id, p1.project_id, p1.content, p1.vkontakte, p1.date_public,p1.time_public, - - p2.telegram_chat_id, p2.vk_group_id, p2.ok_group_id, - - (SELECT instagram_login FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ig_account_id) as instagram_login, - (SELECT instagram_password FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ig_account_id) as instagram_password, - (SELECT telegram_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tg_account_id) as telegram_bot_id, - (SELECT telegram_chat_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tg_account_id) as telegram_chat_id, - (SELECT vk_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.vk_account_id) as vk_access_token, - (SELECT vk_user_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.vk_account_id) as vk_user_id, - (SELECT ok_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ok_account_id) as ok_access_token, - - (SELECT GROUP_CONCAT(image) FROM ".$this->wpdb->base_prefix."smmposting_image WHERE post_id = p1.post_id) as cloud_links - - FROM ". $this->wpdb->base_prefix ."smmposting_post p1 - LEFT JOIN ". $this->wpdb->base_prefix ."smmposting_projects p2 ON(p1.project_id=p2.project_id) - WHERE p1.status = 0 - AND p2.status = 1 - AND DATE(p1.date_public) = CURRENT_DATE - AND TIME(p1.time_public) < CURRENT_TIME - ORDER BY p1.date_public DESC"; - - - $query = $this->db->query($sql); - return $query->rows; - } - - /** - * @param $project_id - * @param array $products - * @param $social - * @return array|bool|string - */ - public function getProductsAsPosts($project_id, $products = [], $social) { - $products = implode(',', $products); - $sql = "SELECT p1.*,p3.*,"; - - switch ($social){ - case 'vkontakte': - $sql .= "p2.vk_group_id,"; - $sql .= "(SELECT vk_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.vk_account_id) as vk_access_token, - (SELECT vk_user_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.vk_account_id) as vk_user_id,"; - break; - case 'odnoklassniki': - $sql .= "p2.ok_group_id,"; - $sql .= "(SELECT ok_access_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ok_account_id) as ok_access_token,"; - break; - case 'telegram': - $sql .= "p2.telegram_chat_id,"; - $sql .= "(SELECT telegram_token FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tg_account_id) as telegram_bot_id, - (SELECT telegram_chat_id FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.tg_account_id) as telegram_chat_id,"; - break; - case 'instagram': - $sql .= "(SELECT instagram_login FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ig_account_id) as instagram_login, - (SELECT instagram_password FROM ".$this->wpdb->base_prefix."smmposting_accounts WHERE account_id = p2.ig_account_id) as instagram_password,"; - break; - default: - return false; - break; - } - - $sql .= "(SELECT GROUP_CONCAT('".HTTP_SERVER."image/', image) FROM ".$this->wpdb->base_prefix."product_image WHERE product_id = p1.product_id) as cloud_links"; - - $sql .= " FROM ".$this->wpdb->base_prefix."product p1 - LEFT JOIN ".$this->wpdb->base_prefix."smmposting_projects p2 ON(p2.project_id ='".$project_id."') - LEFT JOIN ".$this->wpdb->base_prefix."product_description p3 ON(p1.product_id = p3.product_id) - WHERE p1.product_id IN(". $products. ")"; - /*$sql .= " AND p3.language_id = 1 ";*/ - - $query = $this->db->query($sql); - $products_data = $query->rows; - - - $products = array(); - foreach ($products_data as $key => $product) { - - $product['price'] = round($product['price'],0); - $product_link = ''.$this->url->link('product/product', '&product_id=' . $product['product_id']).""; - - $product['content'] = isset($this->config->get('SMMposting')['config']['product_template']) ? $this->config->get('SMMposting')['config']['product_template'] : ''; - $product['content'] = str_replace(['{price}','{name}','{model}','{sku}','{description}','{link}'], [$product['price'],$product['name'],$product['model'],$product['sku'],$product['description'],$product_link], $product['content']); - - // Для товаров - $products[$key]['name'] = $product['name']; - $products[$key]['price'] = $product['price']; - - // Контент - $products[$key]['content'] = $product['content']; - $products[$key]['cloud_links'] = $product['cloud_links']; - $products[$key]['post_id'] = $product['product_id']; - - // Пароли и токены - if ($social == 'instagram') { - $products[$key]['instagram'] = 1; - $products[$key]['instagram_login'] = $product['instagram_login']; - $products[$key]['instagram_password'] = $product['instagram_password']; - } - - if ($social == 'telegram') { - $products[$key]['telegram'] = 1; - $products[$key]['telegram_bot_id'] = $product['telegram_bot_id']; - $products[$key]['telegram_chat_id'] = $product['telegram_chat_id']; - } - - if ($social == 'vkontakte') { - $products[$key]['vkontakte'] = 1; - $products[$key]['vk_access_token'] = $product['vk_access_token']; - $products[$key]['vk_user_id'] = $product['vk_user_id']; - $products[$key]['vk_group_id'] = $product['vk_group_id']; - } - - if ($social == 'odnoklassniki') { - $products[$key]['odnoklassniki'] = 1; - $products[$key]['ok_group_id'] = $product['ok_group_id']; - $products[$key]['ok_access_token'] = $product['ok_access_token']; - } - - } - - return $products; - } - - /** - * @param $response - */ - public function saveResponse($response) - { - - foreach ($response as $key => $post) { - - /* - |-------------------------------------------------------------------------- - | Writing down errors - |-------------------------------------------------------------------------- - | - */ - if (isset($post->odnoklassniki->error)) { - $this->errorSocial($key, 'odnoklassniki', $post->odnoklassniki->error); - } - if (isset($post->vkontakte->error)) { - $this->errorSocial($key, 'vkontakte', $post->vkontakte->error); - } - if (isset($post->telegram->error)) { - $this->errorSocial($key, 'telegram', $post->telegram->error); - } - if (isset($post->instagram->error)) { - $this->errorSocial($key, 'instagram', $post->instagram->error); - } - if (isset($post->facebook->error)) { - $this->errorSocial($key, 'facebook', $post->facebook->error); - } - if (isset($post->tumblr->error)) { - $this->errorSocial($key, 'tumblr', $post->tumblr->error); - } - if (isset($post->twitter->error)) { - $this->errorSocial($key, 'twitter', $post->twitter->error); - } - - /* - |-------------------------------------------------------------------------- - | We save successful results - |-------------------------------------------------------------------------- - | - */ - if (isset($post->odnoklassniki->success)) { - $this->successSocial($key, 'odnoklassniki', $post->odnoklassniki->success); - } - if (isset($post->vkontakte->success)) { - $this->successSocial($key, 'vkontakte', $post->vkontakte->success); - } - if (isset($post->telegram->success)) { - $this->successSocial($key, 'telegram', $post->telegram->success); - } - if (isset($post->instagram->success)) { - $this->successSocial($key, 'instagram', $post->instagram->success); - } - if (isset($post->facebook->success)) { - $this->successSocial($key, 'facebook', $post->facebook->success); - } - if (isset($post->tumblr->success)) { - $this->successSocial($key, 'tumblr', $post->tumblr->success); - } - if (isset($post->twitter->success)) { - $this->successSocial($key, 'twitter', $post->twitter->success); - } - - /* - |-------------------------------------------------------------------------- - | We update the publication status if it is published on all socials - |-------------------------------------------------------------------------- - | - */ - - $this->updateStatus($key); - } - - } - - /** - * @param $post_id - */ - public function updateStatus($post_id) - { - - $errors = 0; - $need_to_download_post = 0; - $downloaded_post = 0; - - /* - |---------------------------------------------------------------------------------- - | We count the number of publications specified by the user and the number of published - |---------------------------------------------------------------------------------- - | - */ - - $query = $this->db->query("SELECT DISTINCT * FROM " . $this->wpdb->base_prefix . "smmposting_post WHERE post_id = '".(int)$post_id."' "); - $post_info = $query->row; - - - if (!empty($post_info)) { - $downloaded_post = 0; - $downloaded_post += (int)$post_info['ok_download']; - $downloaded_post += (int)$post_info['vk_download']; - $downloaded_post += (int)$post_info['tg_download']; - $downloaded_post += (int)$post_info['ig_download']; - $downloaded_post += (int)$post_info['fb_download']; - $downloaded_post += (int)$post_info['tb_download']; - $downloaded_post += (int)$post_info['tw_download']; - - $need_to_download_post = 0; - $need_to_download_post += (int)$post_info['odnoklassniki']; - $need_to_download_post += (int)$post_info['vkontakte']; - $need_to_download_post += (int)$post_info['telegram']; - $need_to_download_post += (int)$post_info['instagram']; - $need_to_download_post += (int)$post_info['facebook']; - $need_to_download_post += (int)$post_info['tumblr']; - $need_to_download_post += (int)$post_info['twitter']; - - if ($post_info['ok_error']) $errors++; - if ($post_info['vk_error']) $errors++; - if ($post_info['tg_error']) $errors++; - if ($post_info['ig_error']) $errors++; - if ($post_info['fb_error']) $errors++; - if ($post_info['tb_error']) $errors++; - if ($post_info['tw_error']) $errors++; - } - - /* - |---------------------------------------------------------------------------------- - | Updating status 1 - completed, status 2 - publication error - |---------------------------------------------------------------------------------- - | - */ - - if ($need_to_download_post == $downloaded_post && $need_to_download_post != 0) { - if ($errors > 0) { - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET status = 2 WHERE post_id = '".(int)$post_id."' "); - } else { - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET status = 1 WHERE post_id = '".(int)$post_id."' "); - } - } - } - - /* - * Function puts a successful post to social network - * Saves the link to the successful publication in the success field - * At the next attempt to publish this post in the social network will not be loaded - * - * @param $post_id - * @param $social_type - * @param $success - */ - public function successSocial($post_id, $social_type, $success) - { - switch($social_type){ - case 'odnoklassniki': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ok_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ok_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ok_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'vkontakte': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET vk_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET vk_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET vk_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'telegram': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tg_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tg_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tg_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'instagram': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ig_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ig_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ig_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'facebook': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET fb_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET fb_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET fb_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'tumblr': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tb_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tb_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tb_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'twitter': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tw_download = 1 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tw_error = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tw_success = '".$this->db->escape($success)."' WHERE post_id = '".(int)$post_id."' "); - break; - default: - break; - } - - - } - - /* - * Function puts post error for social network - * Stores the cause of the error in the error field - */ - public function errorSocial($post_id, $social_type, $error) - { - switch($social_type){ - case 'odnoklassniki': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ok_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ok_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ok_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'vkontakte': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET vk_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET vk_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET vk_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'telegram': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tg_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tg_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tg_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'instagram': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ig_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ig_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET ig_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'facebook': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET fb_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET fb_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET fb_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'tumblr': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tb_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tb_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tb_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - case 'twitter': - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tw_download = 2 WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tw_success = '".$this->db->escape(false)."' WHERE post_id = '".(int)$post_id."' "); - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_post SET tw_error = '".$this->db->escape($error)."' WHERE post_id = '".(int)$post_id."' "); - break; - default: - break; - } - } } \ No newline at end of file diff --git a/lib/wp/Db.php b/lib/wp/Db.php index 49f25f6..c885f29 100644 --- a/lib/wp/Db.php +++ b/lib/wp/Db.php @@ -6,36 +6,6 @@ class SMMP_DB { private $lastVersion = '1.0.0'; - public function install() { - if (get_option('smmp_plugin_version')) { - $this->lastVersion = get_option('smmp_plugin_version'); - } - - $SMMP_Migrations = new SMMP_Migrations(); - - if (version_compare($this->lastVersion, '1.0.0', '==')) { - $this->uninstall(); - $SMMP_Migrations->SMMP_migration_1(); - $SMMP_Migrations->SMMP_migration_2(); - } - - if (version_compare($this->lastVersion, '1.0.1', '==')) { - //$SMMP_Migrations->SMMP_migration_3(); - } - - update_option('smmp_plugin_version', SMMP_PLUGIN_VERSION); - } - public function uninstall() { - update_option('smmp_plugin_version', 0); - - global $wpdb; - $wpdb->query('DROP TABLE IF EXISTS '.$wpdb->prefix.'smmposting_accounts'); - $wpdb->query('DROP TABLE IF EXISTS '.$wpdb->prefix.'smmposting_image'); - $wpdb->query('DROP TABLE IF EXISTS '.$wpdb->prefix.'smmposting_post'); - $wpdb->query('DROP TABLE IF EXISTS '.$wpdb->prefix.'smmposting_projects'); - - } - public function query($sql){ global $wpdb; $result = $wpdb->get_results( $sql, ARRAY_A ); diff --git a/lib/language.php b/lib/wp/Language.php similarity index 72% rename from lib/language.php rename to lib/wp/Language.php index c88332e..51f4ad6 100644 --- a/lib/language.php +++ b/lib/wp/Language.php @@ -1,14 +1,11 @@ selectLanguage(); - } - public function selectLanguage() { + public function __construct($directory = '') { $locale = get_locale(); $locale = strtolower($locale); $language_path = SMMP_PLUGIN_DIR . '/language/'; @@ -17,11 +14,16 @@ public function selectLanguage() { $this->locale = $locale; } } - public function getFromLanguage($param = '') - { + + public function get($param) { include(SMMP_PLUGIN_DIR . '/language/'.$this->locale.'/marketing/smmposting.php'); return isset($_[$param]) ? $_[$param] : ''; } + + public function all() { + return $this->languages(); + } + public function languages() { $locale = get_locale(); @@ -30,4 +32,9 @@ public function languages() include(SMMP_PLUGIN_DIR. '/language/'.$this->locale.'/marketing/smmposting.php'); return isset($_) ? $_ : []; } + + + + public function load($filename, $key = '') { + } } \ No newline at end of file diff --git a/lib/wp/Loader.php b/lib/wp/Loader.php index 1565afa..02422fc 100644 --- a/lib/wp/Loader.php +++ b/lib/wp/Loader.php @@ -14,7 +14,6 @@ public function load() { private function call_public_hooks() { - add_action('init', array($this, 'cron'), 1); } public function call_global_hooks() { @@ -44,32 +43,32 @@ private function call_admin_hooks() add_submenu_page( 'smmposting', - $SMMP_Language->getFromLanguage('text_accounts'), - $SMMP_Language->getFromLanguage('text_accounts'), + $SMMP_Language->get('text_accounts'), + $SMMP_Language->get('text_accounts'), 'manage_options', 'smmposting&route=accounts', 'accounts' ); add_submenu_page('smmposting', - $SMMP_Language->getFromLanguage('text_projects'), - $SMMP_Language->getFromLanguage('text_projects'), + $SMMP_Language->get('text_projects'), + $SMMP_Language->get('text_projects'), 'manage_options', 'smmposting&route=projects', 'projects' ); add_submenu_page('smmposting', - $SMMP_Language->getFromLanguage('text_posts'), - $SMMP_Language->getFromLanguage('text_posts'), + $SMMP_Language->get('text_posts'), + $SMMP_Language->get('text_posts'), 'manage_options', 'smmposting&route=posts', 'posts' ); add_submenu_page('smmposting', - $SMMP_Language->getFromLanguage('text_settings'), - $SMMP_Language->getFromLanguage('text_settings'), + $SMMP_Language->get('text_settings'), + $SMMP_Language->get('text_settings'), 'manage_options', 'smmposting&route=settings', 'posts' @@ -120,20 +119,10 @@ public function createMenu() } } - public function SMMP_accounts() - { - echo 111; - } public function activatePlugin() { - - $db = new SMMP_DB(); - $db->install(); $this->initCaps(); } public function deactivatePlugin() { - - $db = new SMMP_DB(); - $db->uninstall(); } public function initCaps() { diff --git a/lib/wp/Migrations.php b/lib/wp/Migrations.php deleted file mode 100644 index 234a44e..0000000 --- a/lib/wp/Migrations.php +++ /dev/null @@ -1,129 +0,0 @@ -get_charset_collate(); - - // Install table smmposting_accounts - $table_name = $wpdb->prefix . 'smmposting_accounts'; - $sql = "CREATE TABLE IF NOT EXISTS $table_name ( - `account_id` int(11) NOT NULL AUTO_INCREMENT, - `user_id` varchar(64) NOT NULL, - `account_name` varchar(255) NOT NULL, - `social` varchar(255) NOT NULL, - `instagram_login` varchar(255) NOT NULL, - `instagram_password` varchar(255) NOT NULL, - `telegram_token` varchar(255) NOT NULL, - `vk_user_id` varchar(255) NOT NULL, - `vk_access_token` varchar(255) NOT NULL, - `ok_user_id` varchar(255) NOT NULL, - `ok_access_token` varchar(255) NOT NULL, - `fb_access_token` varchar(255) NOT NULL, - `fb_user_id` varchar(255) NOT NULL, - `tw_oauth_token` varchar(255) NOT NULL, - `tw_oauth_verifier` varchar(255) NOT NULL, - `tb_oauth_token` varchar(255) NOT NULL, - `tb_oauth_verifier` varchar(255) NOT NULL, - `tb_oauth_token_secret` varchar(255) NOT NULL, - `status` tinyint(1) NOT NULL, - `date_added` datetime NOT NULL, - PRIMARY KEY (`account_id`) - ) $charset_collate"; - - dbDelta( $sql ); - - // Install table smmposting_image - $table_name = $wpdb->prefix . 'smmposting_image'; - $sql = "CREATE TABLE IF NOT EXISTS $table_name ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `post_id` int(11) NOT NULL, - `image` varchar(255) NOT NULL, - `filename` varchar(255) NOT NULL, - PRIMARY KEY (`id`) - ) $charset_collate"; - - dbDelta( $sql ); - - // Install table smmposting_post - $table_name = $wpdb->prefix . 'smmposting_post'; - $sql = "CREATE TABLE IF NOT EXISTS $table_name ( - `post_id` int(11) NOT NULL AUTO_INCREMENT, - `project_id` int(11) NOT NULL, - `content` text COLLATE utf8mb4_unicode_ci NOT NULL, - `status` tinyint(1) NOT NULL, - `odnoklassniki` int(11) NOT NULL, - `vkontakte` int(11) NOT NULL, - `telegram` int(11) NOT NULL, - `instagram` int(11) NOT NULL, - `facebook` int(11) NOT NULL, - `tumblr` int(11) NOT NULL, - `twitter` int(11) NOT NULL, - `vk_download` int(11) NOT NULL, - `ok_download` int(11) NOT NULL, - `tg_download` int(11) NOT NULL, - `ig_download` int(11) NOT NULL, - `fb_download` int(11) NOT NULL, - `tb_download` int(11) NOT NULL, - `tw_download` int(11) NOT NULL, - `vk_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `ok_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `tg_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `ig_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `fb_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `tb_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `tw_success` text COLLATE utf8mb4_unicode_ci NOT NULL, - `ok_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `vk_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `tg_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `ig_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `fb_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `tb_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `tw_error` text COLLATE utf8mb4_unicode_ci NOT NULL, - `ig_like` int(11) NOT NULL, - `ig_comment` text NOT NULL, - `vk_from_group` int(11) NOT NULL, - `vk_comment` text NOT NULL, - `date_public` date NOT NULL, - `time_public` time NOT NULL, - PRIMARY KEY (`post_id`) - ) $charset_collate"; - - dbDelta( $sql ); - - // Install table smmposting_projects - $table_name = $wpdb->prefix . 'smmposting_projects'; - $sql = "CREATE TABLE IF NOT EXISTS $table_name ( - `project_id` int(11) NOT NULL AUTO_INCREMENT, - `user_id` varchar(64) NOT NULL, - `project_name` varchar(255) NOT NULL, - `project_description` varchar(255) NOT NULL, - `ok_account_id` int(11) DEFAULT NULL, - `vk_account_id` int(11) DEFAULT NULL, - `tg_account_id` int(11) DEFAULT NULL, - `ig_account_id` int(11) DEFAULT NULL, - `fb_account_id` int(11) DEFAULT NULL, - `tb_account_id` int(11) DEFAULT NULL, - `tw_account_id` int(11) DEFAULT NULL, - `telegram_chat_id` varchar(255) NOT NULL, - `vk_group_id` varchar(255) NOT NULL, - `ok_group_id` varchar(255) NOT NULL, - `fb_group_id` varchar(255) NOT NULL, - `status` tinyint(1) NOT NULL, - `date_added` datetime NOT NULL, - PRIMARY KEY (`project_id`) - ) $charset_collate"; - - dbDelta( $sql ); - } - - - public function SMMP_migration_2() { - global $wpdb; - $wpdb->query("ALTER TABLE {$wpdb->prefix}smmposting_accounts CHANGE tw_oauth_verifier tw_oauth_token_secret VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL;"); - } -} \ No newline at end of file diff --git a/lib/wp/Pagination.php b/lib/wp/Pagination.php new file mode 100644 index 0000000..2fbed60 --- /dev/null +++ b/lib/wp/Pagination.php @@ -0,0 +1,90 @@ +total; + + if ($this->page < 1) { + $page = 1; + } else { + $page = $this->page; + } + + if (!(int)$this->limit) { + $limit = 10; + } else { + $limit = $this->limit; + } + + $num_links = $this->num_links; + $num_pages = ceil($total / $limit); + + $this->url = str_replace('%7Bpage%7D', '{page}', $this->url); + + $output = ''; + + if ($num_pages > 1) { + return $output; + } else { + return ''; + } + } +} diff --git a/lib/wp/Request.php b/lib/wp/Request.php index 90197b7..c9e920c 100644 --- a/lib/wp/Request.php +++ b/lib/wp/Request.php @@ -1,7 +1,4 @@ headers[] = $header; + } + public function redirect($url, $status = 302) { + echo ''; + exit; + } + public function setCompression($level) { + $this->level = $level; + } + public function getOutput() { + return $this->output; + } + public function setOutput($output) { + $this->output = $output; + } + private function compress($data, $level = 0) { + if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false)) { + $encoding = 'gzip'; + } + + if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false)) { + $encoding = 'x-gzip'; + } + + if (!isset($encoding) || ($level < -1 || $level > 9)) { + return $data; + } + + if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) { + return $data; + } + + if (headers_sent()) { + return $data; + } + + if (connection_status()) { + return $data; + } + + $this->addHeader('Content-Encoding: ' . $encoding); + + return gzencode($data, (int)$level); + } + public function output() { + if ($this->output) { + $output = $this->level ? $this->compress($this->output, $this->level) : $this->output; + + if (!headers_sent()) { + foreach ($this->headers as $header) { + header($header, true); + } + } + + echo $output; + } + } +} diff --git a/model/SmmpostingModel.php b/model/SmmpostingModel.php index ace345c..36694a0 100644 --- a/model/SmmpostingModel.php +++ b/model/SmmpostingModel.php @@ -1,651 +1,16 @@ setDb(); - } - public function setDb() { $this->db = new SMMP_DB(); global $wpdb; $this->wpdb = $wpdb; } - public function getFromLanguage($param = '') - { - $SMMP_Language = new SMMP_Language(); - return $SMMP_Language->getFromLanguage($param); - } - public function languages() - { - $SMMP_Language = new SMMP_Language(); - return $SMMP_Language->languages(); - } - - - ## BEGIN PROJECTS - #################################################################### - public function addProject($data){ - $this->db->query("INSERT "."INTO " . $this->wpdb->base_prefix . "smmposting_projects SET - project_name = '" . $this->db->escape($data['project_name']) . "', - status = '" . $this->db->escape($data['status']) . "', - ok_account_id = '" . (int)(isset($data['ok_account_id']) ? $data['ok_account_id'] : null) . "', - vk_account_id = '" . (int)(isset($data['vk_account_id']) ? $data['vk_account_id'] : null) . "', - tg_account_id = '" . (int)(isset($data['tg_account_id']) ? $data['tg_account_id'] : null) . "', - ig_account_id = '" . (int)(isset($data['ig_account_id']) ? $data['ig_account_id'] : null) . "', - fb_account_id = '" . (int)(isset($data['fb_account_id']) ? $data['fb_account_id'] : null) . "', - tb_account_id = '" . (int)(isset($data['tb_account_id']) ? $data['tb_account_id'] : null) . "', - tw_account_id = '" . (int)(isset($data['tw_account_id']) ? $data['tw_account_id'] : null) . "', - ok_group_id = '" . $this->db->escape((isset($data['ok_group_id']) ? $data['ok_group_id'] : null)) . "', - vk_group_id = '" . $this->db->escape((isset($data['vk_group_id']) ? $data['vk_group_id'] : null)) . "', - fb_group_id = '" . $this->db->escape((isset($data['fb_group_id']) ? $data['fb_group_id'] : null)) . "', - telegram_chat_id = '" . $this->db->escape((isset($data['telegram_chat_id']) ? $data['telegram_chat_id'] : null)) . "', - date_added = NOW()"); - - $project_id = $this->db->getLastId(); - - if ($data['project_name'] == '') { - $data['project_name'] = $this->getFromLanguage('text_project').' #'.$project_id; - $data['project_id'] = $project_id; - $this->editProject($data); - } - - } - public function editProject($data) { - - if ($data['project_name'] == '') { - $data['project_name'] = $this->getFromLanguage('text_project').' #'.$data['project_id']; - } - - $this->db->query("UPDATE " . $this->wpdb->base_prefix . "smmposting_projects SET - project_name = '" . $this->db->escape($data['project_name']) . "', - status = '" . $this->db->escape($data['status']) . "', - ok_account_id = '" . (int)(isset($data['ok_account_id']) ? $data['ok_account_id'] : null) . "', - vk_account_id = '" . (int)(isset($data['vk_account_id']) ? $data['vk_account_id'] : null) . "', - tg_account_id = '" . (int)(isset($data['tg_account_id']) ? $data['tg_account_id'] : null) . "', - ig_account_id = '" . (int)(isset($data['ig_account_id']) ? $data['ig_account_id'] : null) . "', - fb_account_id = '" . (int)(isset($data['fb_account_id']) ? $data['fb_account_id'] : null) . "', - tb_account_id = '" . (int)(isset($data['tb_account_id']) ? $data['tb_account_id'] : null) . "', - tw_account_id = '" . (int)(isset($data['tw_account_id']) ? $data['tw_account_id'] : null) . "', - ok_group_id = '" . $this->db->escape((isset($data['ok_group_id']) ? $data['ok_group_id'] : null)) . "', - vk_group_id = '" . $this->db->escape((isset($data['vk_group_id']) ? $data['vk_group_id'] : null)) . "', - fb_group_id = '" . $this->db->escape((isset($data['fb_group_id']) ? $data['fb_group_id'] : null)) . "', - telegram_chat_id = '" . $this->db->escape((isset($data['telegram_chat_id']) ? $data['telegram_chat_id'] : null)) . "' - WHERE project_id = '" . $this->db->escape($data['project_id']) . "'"); - } - public function deleteProject($project_id) { - return $this->db->query("DELETE FROM " . $this->wpdb->base_prefix . "smmposting_projects WHERE project_id = '" . (int)$project_id . "' "); - } - public function getProject($project_id) { - $query = $this->db->query("SELECT DISTINCT * FROM " . $this->wpdb->base_prefix . "smmposting_projects WHERE project_id = '" . (int)$project_id . "'"); - - return $query->row; - } - public function getProjects() { - $sql = "SELECT * FROM `" . $this->wpdb->base_prefix . "smmposting_projects` ORDER BY project_id"; - - $query = $this->db->query($sql); - - return $query->rows; - } - public function getTotalProjects() { - $sql = "SELECT COUNT(*) AS project_id FROM `" . $this->wpdb->base_prefix . "smmposting_projects` "; - - $query = $this->db->query($sql); - - return $query->row['project_id']; - } - #################################################################### - ## END PROJECTS - - - - ## BEGIN POSTS - #################################################################### - public function getPosts( $data = [] ){ - - $query = 'SELECT * FROM '.$this->wpdb->base_prefix.'smmposting_post'; - $query .= ' WHERE post_id > 0'; - - if( isset($data['filter_status']) ){ - $query .= ' AND status='.$data['filter_status']; - } - - if( isset($data['filter_today']) ){ - $today = date('Y-m-d'); - $query .= " AND DATE(date_public) = DATE('". $this->db->escape($today) ."') " ; - } - - if( isset($data['filter_tomorrow']) ){ - $tomorrow = date('Y-m-d', strtotime("+1 day")); - $query .= " AND DATE(date_public) = DATE('". $this->db->escape($tomorrow) ."') " ; - } - - if( isset($data['filter_aftertomorrow']) ){ - $aftertomorrow = date('Y-m-d', strtotime("+2 day")); - $query .= " AND DATE(date_public) = DATE('". $this->db->escape($aftertomorrow) ."') " ; - } - - if( isset($data['filter_project']) ){ - $query .= " AND project_id = '" . (int)$data['filter_project']."'"; - } - - - $query .= " ORDER BY post_id DESC"; - - if (isset($data['start']) || isset($data['limit'])) { - if ($data['start'] < 0) { - $data['start'] = 0; - } - - if ($data['limit'] < 1) { - $data['limit'] = 20; - } - - $query .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; - } - - - - - $query = $this->db->query( $query ); - $posts = $query->rows; - return $posts; - } - public function getPost( $post_id ){ - $query = 'SELECT DISTINCT * FROM '.$this->wpdb->base_prefix.'smmposting_post WHERE post_id = '.(int)$post_id; - $query = $this->db->query( $query ); - return $query->row; - } - public function deletePost($post_id) { - - return $this->db->query("DELETE FROM " . $this->wpdb->base_prefix . "smmposting_post WHERE post_id = '" . (int)$post_id . "' "); - } - public function getImages( $post_id ) { - $sql = "SELECT * FROM `" . $this->wpdb->base_prefix . "smmposting_image` WHERE post_id = ".(int)$post_id." ORDER BY id ASC "; - - $query = $this->db->query($sql); - - return $query->rows; - } - public function getFirstImage($post_id) - { - $images = self::getImages($post_id); - - if (isset($images[0]['image'])) { - $image = $images[0]['image']; - } else { - $image = null; - } - - return $image; - } - public function getProjectName($project_id) - { - $project = self::getProject($project_id); - - if (!empty($project)) { - $name = $project['project_name']; - } else { - $name = $this->getFromLanguage('text_project').' #'.$project_id; - } - - return $name; - } - public function savePost( $post_data ){ - - $data = $post_data['smmposting_post']; - $images = isset($post_data['images']) ? $post_data['images'] : array(); - - if (isset($post_data['id'])) { - $data['post_id'] = $post_data['id']; - - $sql = " UPDATE ". $this->wpdb->base_prefix . "smmposting_post SET "; - $tmp = array(); - foreach( $data as $key => $value ){ - if( $key != "post_id" ){ - $tmp[] = "`".$key."`='".$this->db->escape($value)."'"; - } - } - $sql .= implode( " , ", $tmp ); - $sql .= " WHERE post_id=".$data['post_id']; - $this->db->query( $sql ); - } else { - $sql = "INSERT INTO ".$this->wpdb->base_prefix . "smmposting_post ( `"; - $tmp = array(); - $vals = array(); - foreach( $data as $key => $value ){ - $tmp[] = $key; - $vals[]=$this->db->escape($value); - } - - $sql .= implode("` , `",$tmp)."`) VALUES ('".implode("','",$vals)."') "; - - $this->db->query( $sql ); - $data['post_id'] = $this->db->getLastId(); - } - - $this->saveImages($images, $data['post_id']); - return $data['post_id']; - } - public function saveImages( $images_data, $post_id ){ - - $sql = "DELETE FROM " . $this->wpdb->base_prefix . "smmposting_image WHERE post_id = '" . (int)$post_id . "' "; - $query = $this->db->query( $sql ); - - if (!empty($images_data)) { - foreach ($images_data as $key => $image) { - $sql = "INSERT INTO " . $this->wpdb->base_prefix . "smmposting_image SET image = '" . $this->db->escape($image) . "', post_id = '" . (int)$post_id . "' "; - $query = $this->db->query( $sql ); - } - } - - - } - public function getpostProducts($post_id = 0){ - $product_related_data = array(); - - $query = $this->db->query("SELECT * FROM " . $this->wpdb->base_prefix . "smmposting_product WHERE post_id = '" . (int)$post_id . "'"); - - foreach ($query->rows as $result) { - $product_related_data[] = $result['product_id']; - } - - return $product_related_data; - } - public function delete( $id ){ - - if( $id ) { - $sql = " DELETE FROM ".$this->wpdb->base_prefix."smmposting_post WHERE post_id=".(int)$id; - $res = $this->db->query( $sql ); - return $res; - } - } - public function getTotalPosts($data = array()) { - $sql = "SELECT COUNT(*) AS post_id FROM `" . $this->wpdb->base_prefix . "smmposting_post` WHERE status=1"; - - $query = $this->db->query($sql); - - return $query->row['post_id']; - } - public function getTotalPostsForPagination($data = array(), $filter=array()) { - $query = "SELECT COUNT(*) AS post_id FROM `" . $this->wpdb->base_prefix . "smmposting_post` WHERE post_id > 0 "; - - if( isset($data['filter_status']) ){ - $query .= ' AND status='.$data['filter_status']; - } - - if( isset($data['filter_today']) ){ - $today = date('Y-m-d'); - $query .= " AND DATE(date_public) = DATE('". $this->db->escape($today) ."') " ; - } - - if( isset($data['filter_tomorrow']) ){ - $tomorrow = date('Y-m-d', strtotime("+1 day")); - $query .= " AND DATE(date_public) = DATE('". $this->db->escape($tomorrow) ."') " ; - } - - if( isset($data['filter_aftertomorrow']) ){ - $aftertomorrow = date('Y-m-d', strtotime("+2 day")); - $query .= " AND DATE(date_public) = DATE('". $this->db->escape($aftertomorrow) ."') " ; - } - - if( isset($data['filter_project']) ){ - $query .= " AND project_id = '" . (int)$data['filter_project']."'"; - } - - $query = $this->db->query($query); - - return $query->row['post_id']; - } - #################################################################### - ## END POSTS - - - ## BEGIN PRODUCTS - #################################################################### - public function getProducts($data = array()) { - $sql = "SELECT * FROM " . $this->wpdb->base_prefix . "product p LEFT JOIN " . $this->wpdb->base_prefix . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'"; - - if (!empty($data['filter_name'])) { - $sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; - } - - if (!empty($data['filter_model'])) { - $sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'"; - } - - if (isset($data['filter_price']) && !is_null($data['filter_price'])) { - $sql .= " AND p.price LIKE '" . $this->db->escape($data['filter_price']) . "%'"; - } - - if (isset($data['filter_quantity']) && !is_null($data['filter_quantity'])) { - $sql .= " AND p.quantity = '" . (int)$data['filter_quantity'] . "'"; - } - - if (isset($data['filter_status']) && !is_null($data['filter_status'])) { - $sql .= " AND p.status = '" . (int)$data['filter_status'] . "'"; - } - - if (isset($data['filter_image']) && !is_null($data['filter_image'])) { - if ($data['filter_image'] == 1) { - $sql .= " AND (p.image IS NOT NULL AND p.image <> '' AND p.image <> 'no_image.png')"; - } else { - $sql .= " AND (p.image IS NULL OR p.image = '' OR p.image = 'no_image.png')"; - } - } - - $sql .= " GROUP BY p.product_id"; - - $sort_data = array( - 'pd.name', - 'p.model', - 'p.price', - 'p.quantity', - 'p.status', - 'p.sort_order' - ); - - if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { - $sql .= " ORDER BY " . $data['sort']; - } else { - $sql .= " ORDER BY pd.name"; - } - - if (isset($data['order']) && ($data['order'] == 'DESC')) { - $sql .= " DESC"; - } else { - $sql .= " ASC"; - } - - if (isset($data['start']) || isset($data['limit'])) { - if ($data['start'] < 0) { - $data['start'] = 0; - } - - if ($data['limit'] < 1) { - $data['limit'] = 20; - } - - $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; - } - - $query = $this->db->query($sql); - - return $query->rows; - } - #################################################################### - ## END PRODUCTS - - - ## BEGIN ACCOUNTS - #################################################################### - public function getAccount($account_id) { - $query = $this->db->query("SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE account_id = '".(int)$account_id."' "); - return $query->row; - } - public function deleteAccount($account_id) { - $query = $this->db->query("DELETE FROM " . $this->wpdb->base_prefix . "smmposting_accounts WHERE account_id = '" . (int)$account_id . "' "); - return $query; - } - public function getAccounts($social=false) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts "; - - if ($social) { - $sql .= "WHERE social = '".$this->db->escape($social)."'"; - } - - $sql .= " ORDER BY account_id DESC"; - - $query = $this->db->query($sql); - - return $query->rows; - } - public function save_ok($ok_name,$ok_user_id,$access_token) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE ok_user_id = " . $this->db->escape($ok_user_id); - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - status = '" . 1 . "', - account_name = '" . $this->db->escape($ok_name) . "', - ok_access_token = '" . $this->db->escape($access_token) . "', - ok_user_id = '" . $this->db->escape($ok_user_id) . "', - social = 'odnoklassniki', - date_added = NOW() - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$ok_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_ok') . " " . $this->getFromLanguage('text_added'); - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($ok_name) . "', - status = '" . (int)1 . "', - ok_access_token = '" . $this->db->escape($access_token) . "' - WHERE - ok_user_id = '" . $this->db->escape($ok_user_id) . "' - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$ok_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_ok') . " " . $this->getFromLanguage('text_updated'); - } - } - public function save_vk($vk_name,$vk_user_id, $access_token) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE vk_user_id = '" . $this->db->escape($vk_user_id) . "'"; - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - status = '" . (int)1 . "', - account_name = '" . $this->db->escape($vk_name) . "', - vk_access_token = '" . $this->db->escape($access_token) . "', - vk_user_id = '" . $this->db->escape($vk_user_id) . "', - social = 'vkontakte', - date_added = NOW() - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$vk_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_vk') . " " . $this->getFromLanguage('text_added'); - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($vk_name) . "', - status = '" . (int)1 . "', - vk_access_token = '" . $this->db->escape($access_token) . "' - WHERE - vk_user_id = '" . $this->db->escape($vk_user_id) . "' - "; - $query = $this->db->query($sql); - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$vk_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_vk') . " " . $this->getFromLanguage('text_updated'); - } - } - public function save_tg($tg_name, $access_token) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE account_name = '" . $this->db->escape($tg_name) . "' AND social = 'telegram' "; - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($tg_name) . "', - telegram_token = '" . $this->db->escape($access_token) . "', - social = 'telegram', - status = 1, - date_added = NOW() - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$tg_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_tg') . " " . $this->getFromLanguage('text_added'); - - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($tg_name) . "', - telegram_token = '" . $this->db->escape($access_token) . "', - status = 1 - WHERE - account_name = '" . $this->db->escape($tg_name) . "' - "; - $query = $this->db->query($sql); - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$tg_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_tg') . " " . $this->getFromLanguage('text_updated'); - } - } - public function save_ig($login, $password) - { - if ($login == '') { - $_SESSION['error_warning'] = 'Необходимо заполнить логин'; - return false; - } - if ($password == '') { - $_SESSION['error_warning'] = 'Необходимо заполнить пароль'; - return false; - } - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE instagram_login = '" . $this->db->escape($login) . "'"; - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($login) . "', - instagram_login = '" . $this->db->escape($login) . "', - instagram_password = '" . $this->db->escape($password) . "', - social = 'instagram', - status = '" . (int)1 . "', - date_added = NOW() - "; - $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$login . " " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_ig') . " " . $this->getFromLanguage('text_added'); - - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($login) . "', - instagram_login = '" . $this->db->escape($login) . "', - instagram_password = '" . $this->db->escape($password) . "', - status = 1 - WHERE - instagram_login = '" . $this->db->escape($login) . "'"; - $this->db->query($sql); - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$login . " " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_ig') . " " . $this->getFromLanguage('text_updated'); - } - } - public function save_fb($fb_name,$fb_user_id, $access_token) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE fb_user_id = '" . $this->db->escape($fb_user_id) . "'"; - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - status = '" . (int)1 . "', - account_name = '" . $this->db->escape($fb_name) . "', - fb_access_token = '" . $this->db->escape($access_token) . "', - fb_user_id = '" . $this->db->escape($fb_user_id) . "', - social = 'facebook', - date_added = NOW() - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$fb_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_fb') . " " . $this->getFromLanguage('text_added'); - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($fb_name) . "', - status = '" . (int)1 . "', - fb_access_token = '" . $this->db->escape($access_token) . "' - WHERE - fb_user_id = '" . $this->db->escape($fb_user_id) . "' - "; - $query = $this->db->query($sql); - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$fb_name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_fb') . " " . $this->getFromLanguage('text_updated'); - } - } - public function save_tw($name, $oauth_token, $oauth_verifier) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE account_name = '" . $this->db->escape($name) . "' AND social='twitter'" ; - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - status = '" . (int)1 . "', - account_name = '" . $this->db->escape($name) . "', - tw_oauth_token = '" . $this->db->escape($oauth_token) . "', - tw_oauth_token_secret = '" . $this->db->escape($oauth_verifier) . "', - social = 'twitter', - date_added = NOW() - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_tw') . " " . $this->getFromLanguage('text_added'); - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($name) . "', - status = '" . (int)1 . "', - tw_oauth_token = '" . $this->db->escape($oauth_token) . "', - tw_oauth_token_secret = '" . $this->db->escape($oauth_verifier) . "' - WHERE - account_name = '" . $this->db->escape($name) . "' - AND - social = 'twitter' - "; - $query = $this->db->query($sql); - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_tw') . " " . $this->getFromLanguage('text_updated'); - } - } - public function save_tb($name, $oauth_token, $oauth_verifier, $oauth_token_secret) - { - $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."smmposting_accounts WHERE account_name = '" . $this->db->escape($name) . "' AND social='tumblr'" ; - $query = $this->db->query($sql); - - if (empty($query->rows)) { - $sql = "INSERT INTO ". $this->wpdb->base_prefix ."smmposting_accounts - SET - status = '" . (int)1 . "', - account_name = '" . $this->db->escape($name) . "', - tb_oauth_token = '" . $this->db->escape($oauth_token) . "', - tb_oauth_verifier = '" . $this->db->escape($oauth_verifier) . "', - tb_oauth_token_secret = '" . $this->db->escape($oauth_token_secret) . "', - social = 'tumblr', - date_added = NOW() - "; - $query = $this->db->query($sql); - - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_tb') . " " . $this->getFromLanguage('text_added'); - } else { - $sql = "UPDATE ". $this->wpdb->base_prefix ."smmposting_accounts - SET - account_name = '" . $this->db->escape($name) . "', - status = '" . (int)1 . "', - tb_oauth_token = '" . $this->db->escape($oauth_token) . "', - tb_oauth_verifier = '" . $this->db->escape($oauth_verifier) . "', - tb_oauth_token_secret = '" . $this->db->escape($oauth_token_secret) . "' - WHERE - account_name = '" . $this->db->escape($name) . "' - AND - social = 'tumblr' - "; - $query = $this->db->query($sql); - $_SESSION['success'] = $this->getFromLanguage('text_account') . " " .$name ." " . $this->getFromLanguage('text_in_social_network') . " " . $this->getFromLanguage('text_tb') . " " . $this->getFromLanguage('text_updated'); - } - } - #################################################################### - ## END ACCOUNTS - public function getSetting($option_name) { $sql = "SELECT * FROM ". $this->wpdb->base_prefix ."options WHERE option_name = '" . $this->db->escape($option_name) . "'"; $query = $this->db->query($sql); diff --git a/readme.txt b/readme.txt index 4327484..8fd3720 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Requires PHP: 5.5.3 Tags: auto post, auto publish, social media scheduling, social media calendar, social media automation, social media share, auto-publish, scheduling, social media post, social url share, social network share, share tweet, share links, share this, sharethis, social tools, admin, api, auto share to, autopost, auto-Posting, auto-schedule, auto-schedule social media posts, automatic social sharing plugin, blog marketing, blog2social, blogger, buffer, crossposting, cross-promotion, cross-promoting, bloglovin, bloglovin auto post, facebook, facebook auto post, facebook pages, google auto post, instagram, instagram auto post, jetpack, jetpack sharing, linkedin, linkedin auto post, medium, medium auto post, multiposting, pinterest, re-post, scheduling plugin, social media, social media auto publish, social media button, social media manager, social media plugin, social media publishing, social media scheduling tool, social media sharing, social media tool, social network auto publish, social network icon, social network widget, socialmedia, timing, torial, torial auto post, tumblr, twitter, twitter auto post, xing, xing auto post, xing groups, xing gruppen, xing personal profiles, xing company profiles, xing business pages, xing pages, xing seiten, auto post scheduler, repost, social media management, facebook fan page auto post, facebook profile auto post, social auto post, social autoposting, flickr, flickr auto posting, linkedin, linkedin auto posting, linkedin profile, facebook group, facebook gruppen, reddit, reddit auto posting, reddit auto post, social media calendar, editorial calendar, calendar plugin, Social Media Automatisierung, Social Media Management, Kalender, Planungs Kalender, Social Media Kalender, Content Marketing, Revive, Revive posts, Revive old posts, old posts, Reshare, Re-Share, automatically re-post, automatically reshare, auto repost, auto republish, recycle posts, bulk schedule, Google My Business, Google posts, imgur, vk, vkontakte, Vkontakte.ru, vk.com Requires at least: 4.7.0 Tested up to: 5.5 -Stable tag: 1.0 +Stable tag: trunk License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.ru.html diff --git a/smmposting.php b/smmposting.php index 6507f3d..40e508e 100644 --- a/smmposting.php +++ b/smmposting.php @@ -3,26 +3,26 @@ Plugin Name: SMMposting Plugin URI: https://smm-posting.ru Description: Posting in social networks -Version: 1.0.2 +Version: 1.0.4 Author: smartcoder, vladgaus License: GPL2+ */ -define('SMMP_PLUGIN_VERSION', '1.0.2'); +define('SMMP_PLUGIN_VERSION', '1.0.3'); define('SMMP_PLUGIN_FILE', __FILE__); define('SMMP_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('SMMP_PLUGIN_URL', plugin_dir_url(__FILE__)); //SMMP_PLUGIN_LOADER -require_once(SMMP_PLUGIN_DIR . 'lib/language.php'); +require_once(SMMP_PLUGIN_DIR . 'lib/wp/Language.php'); require_once(SMMP_PLUGIN_DIR . 'lib/wp/Loader.php'); -require_once(SMMP_PLUGIN_DIR . 'lib/wp/Migrations.php'); require_once(SMMP_PLUGIN_DIR . 'lib/wp/Db.php'); require_once(SMMP_PLUGIN_DIR . 'lib/wp/System.php'); require_once(SMMP_PLUGIN_DIR . 'lib/wp/Request.php'); +require_once(SMMP_PLUGIN_DIR . 'lib/wp/Pagination.php'); +require_once(SMMP_PLUGIN_DIR . 'lib/wp/Response.php'); require_once(SMMP_PLUGIN_DIR . 'lib/smmposting.php'); -require_once(SMMP_PLUGIN_DIR . 'lib/cron.php'); require_once(SMMP_PLUGIN_DIR . 'controller/SmmpostingController.php'); require_once(SMMP_PLUGIN_DIR . 'model/SmmpostingModel.php'); @@ -30,24 +30,12 @@ $SMMP_load = new SMMP_Loader(); register_uninstall_hook(SMMP_PLUGIN_FILE, 'SMMP_uninstallPlugin'); register_activation_hook(SMMP_PLUGIN_FILE, array($SMMP_load, 'activatePlugin')); -register_deactivation_hook(SMMP_PLUGIN_FILE, array($SMMP_load, 'deactivatePlugin')); - -function SMMP_uninstallPlugin() { - $db = new SMMP_DB(); - $db->uninstall(); -} $SMMP_Check = new SMMP_System(); if ($SMMP_Check->check() === true) { add_action('init', array($SMMP_load, 'load')); } -$SMMP_Cron = new SMMP_Cron(); -if (isset($_GET['route']) && $_GET['route'] == 'cron' && isset($_GET['page']) && $_GET['page'] == 'smmposting') { - add_action('init', array($SMMP_Cron, 'start')); -} - - /* |-------------------------------------------------------------------------- | Register Session diff --git a/view/accounts.php b/view/accounts.php index e8875b2..70af187 100644 --- a/view/accounts.php +++ b/view/accounts.php @@ -7,12 +7,12 @@
-
+
-
+
@@ -22,47 +22,62 @@
-
-
+ +
+
-
- + + + + + +
-
-
- + + + + +
-
-
+
+ + +
@@ -72,57 +87,62 @@
-
-
+ +
-
+
-
+ +
-
-
- + + + + +
-
-
- + + + +
-
-
- + + + + @@ -136,83 +156,79 @@
-

+

()

-
- - - - - - - - - - - -
+
- - -
- - - -
- -
+ + + + + + + - -
+ +
-
+ +
+ + +
+ +
+
+
+
-
- - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/view/assets/css/icons.css b/view/assets/css/icons.css deleted file mode 100644 index 9ad4142..0000000 --- a/view/assets/css/icons.css +++ /dev/null @@ -1,10518 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.4.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-feed:before, -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-intersex:before, -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-genderless:before { - content: "\f22d"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} -.fa-yc:before, -.fa-y-combinator:before { - content: "\f23b"; -} -.fa-optin-monster:before { - content: "\f23c"; -} -.fa-opencart:before { - content: "\f23d"; -} -.fa-expeditedssl:before { - content: "\f23e"; -} -.fa-battery-4:before, -.fa-battery-full:before { - content: "\f240"; -} -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241"; -} -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242"; -} -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243"; -} -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244"; -} -.fa-mouse-pointer:before { - content: "\f245"; -} -.fa-i-cursor:before { - content: "\f246"; -} -.fa-object-group:before { - content: "\f247"; -} -.fa-object-ungroup:before { - content: "\f248"; -} -.fa-sticky-note:before { - content: "\f249"; -} -.fa-sticky-note-o:before { - content: "\f24a"; -} -.fa-cc-jcb:before { - content: "\f24b"; -} -.fa-cc-diners-club:before { - content: "\f24c"; -} -.fa-clone:before { - content: "\f24d"; -} -.fa-balance-scale:before { - content: "\f24e"; -} -.fa-hourglass-o:before { - content: "\f250"; -} -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251"; -} -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252"; -} -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253"; -} -.fa-hourglass:before { - content: "\f254"; -} -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255"; -} -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\f256"; -} -.fa-hand-scissors-o:before { - content: "\f257"; -} -.fa-hand-lizard-o:before { - content: "\f258"; -} -.fa-hand-spock-o:before { - content: "\f259"; -} -.fa-hand-pointer-o:before { - content: "\f25a"; -} -.fa-hand-peace-o:before { - content: "\f25b"; -} -.fa-trademark:before { - content: "\f25c"; -} -.fa-registered:before { - content: "\f25d"; -} -.fa-creative-commons:before { - content: "\f25e"; -} -.fa-gg:before { - content: "\f260"; -} -.fa-gg-circle:before { - content: "\f261"; -} -.fa-tripadvisor:before { - content: "\f262"; -} -.fa-odnoklassniki:before { - content: "\f263"; -} -.fa-odnoklassniki-square:before { - content: "\f264"; -} -.fa-get-pocket:before { - content: "\f265"; -} -.fa-wikipedia-w:before { - content: "\f266"; -} -.fa-safari:before { - content: "\f267"; -} -.fa-chrome:before { - content: "\f268"; -} -.fa-firefox:before { - content: "\f269"; -} -.fa-opera:before { - content: "\f26a"; -} -.fa-internet-explorer:before { - content: "\f26b"; -} -.fa-tv:before, -.fa-television:before { - content: "\f26c"; -} -.fa-contao:before { - content: "\f26d"; -} -.fa-500px:before { - content: "\f26e"; -} -.fa-amazon:before { - content: "\f270"; -} -.fa-calendar-plus-o:before { - content: "\f271"; -} -.fa-calendar-minus-o:before { - content: "\f272"; -} -.fa-calendar-times-o:before { - content: "\f273"; -} -.fa-calendar-check-o:before { - content: "\f274"; -} -.fa-industry:before { - content: "\f275"; -} -.fa-map-pin:before { - content: "\f276"; -} -.fa-map-signs:before { - content: "\f277"; -} -.fa-map-o:before { - content: "\f278"; -} -.fa-map:before { - content: "\f279"; -} -.fa-commenting:before { - content: "\f27a"; -} -.fa-commenting-o:before { - content: "\f27b"; -} -.fa-houzz:before { - content: "\f27c"; -} -.fa-vimeo:before { - content: "\f27d"; -} -.fa-black-tie:before { - content: "\f27e"; -} -.fa-fonticons:before { - content: "\f280"; -} -@font-face { - font-family: 'themify'; - src: url('../fonts/themify.eot?-fvbane'); - src: url('../fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'), url('../fonts/themify.woff?-fvbane') format('woff'), url('../fonts/themify.ttf?-fvbane') format('truetype'), url('../fonts/themify.svg?-fvbane#themify') format('svg'); - font-weight: normal; - font-style: normal; -} -[class^="ti-"], -[class*=" ti-"] { - font-family: 'themify'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.ti-wand:before { - content: "\e600"; -} -.ti-volume:before { - content: "\e601"; -} -.ti-user:before { - content: "\e602"; -} -.ti-unlock:before { - content: "\e603"; -} -.ti-unlink:before { - content: "\e604"; -} -.ti-trash:before { - content: "\e605"; -} -.ti-thought:before { - content: "\e606"; -} -.ti-target:before { - content: "\e607"; -} -.ti-tag:before { - content: "\e608"; -} -.ti-tablet:before { - content: "\e609"; -} -.ti-star:before { - content: "\e60a"; -} -.ti-spray:before { - content: "\e60b"; -} -.ti-signal:before { - content: "\e60c"; -} -.ti-shopping-cart:before { - content: "\e60d"; -} -.ti-shopping-cart-full:before { - content: "\e60e"; -} -.ti-settings:before { - content: "\e60f"; -} -.ti-search:before { - content: "\e610"; -} -.ti-zoom-in:before { - content: "\e611"; -} -.ti-zoom-out:before { - content: "\e612"; -} -.ti-cut:before { - content: "\e613"; -} -.ti-ruler:before { - content: "\e614"; -} -.ti-ruler-pencil:before { - content: "\e615"; -} -.ti-ruler-alt:before { - content: "\e616"; -} -.ti-bookmark:before { - content: "\e617"; -} -.ti-bookmark-alt:before { - content: "\e618"; -} -.ti-reload:before { - content: "\e619"; -} -.ti-plus:before { - content: "\e61a"; -} -.ti-pin:before { - content: "\e61b"; -} -.ti-pencil:before { - content: "\e61c"; -} -.ti-pencil-alt:before { - content: "\e61d"; -} -.ti-paint-roller:before { - content: "\e61e"; -} -.ti-paint-bucket:before { - content: "\e61f"; -} -.ti-na:before { - content: "\e620"; -} -.ti-mobile:before { - content: "\e621"; -} -.ti-minus:before { - content: "\e622"; -} -.ti-medall:before { - content: "\e623"; -} -.ti-medall-alt:before { - content: "\e624"; -} -.ti-marker:before { - content: "\e625"; -} -.ti-marker-alt:before { - content: "\e626"; -} -.ti-arrow-up:before { - content: "\e627"; -} -.ti-arrow-right:before { - content: "\e628"; -} -.ti-arrow-left:before { - content: "\e629"; -} -.ti-arrow-down:before { - content: "\e62a"; -} -.ti-lock:before { - content: "\e62b"; -} -.ti-location-arrow:before { - content: "\e62c"; -} -.ti-link:before { - content: "\e62d"; -} -.ti-layout:before { - content: "\e62e"; -} -.ti-layers:before { - content: "\e62f"; -} -.ti-layers-alt:before { - content: "\e630"; -} -.ti-key:before { - content: "\e631"; -} -.ti-import:before { - content: "\e632"; -} -.ti-image:before { - content: "\e633"; -} -.ti-heart:before { - content: "\e634"; -} -.ti-heart-broken:before { - content: "\e635"; -} -.ti-hand-stop:before { - content: "\e636"; -} -.ti-hand-open:before { - content: "\e637"; -} -.ti-hand-drag:before { - content: "\e638"; -} -.ti-folder:before { - content: "\e639"; -} -.ti-flag:before { - content: "\e63a"; -} -.ti-flag-alt:before { - content: "\e63b"; -} -.ti-flag-alt-2:before { - content: "\e63c"; -} -.ti-eye:before { - content: "\e63d"; -} -.ti-export:before { - content: "\e63e"; -} -.ti-exchange-vertical:before { - content: "\e63f"; -} -.ti-desktop:before { - content: "\e640"; -} -.ti-cup:before { - content: "\e641"; -} -.ti-crown:before { - content: "\e642"; -} -.ti-comments:before { - content: "\e643"; -} -.ti-comment:before { - content: "\e644"; -} -.ti-comment-alt:before { - content: "\e645"; -} -.ti-close:before { - content: "\e646"; -} -.ti-clip:before { - content: "\e647"; -} -.ti-angle-up:before { - content: "\e648"; -} -.ti-angle-right:before { - content: "\e649"; -} -.ti-angle-left:before { - content: "\e64a"; -} -.ti-angle-down:before { - content: "\e64b"; -} -.ti-check:before { - content: "\e64c"; -} -.ti-check-box:before { - content: "\e64d"; -} -.ti-camera:before { - content: "\e64e"; -} -.ti-announcement:before { - content: "\e64f"; -} -.ti-brush:before { - content: "\e650"; -} -.ti-briefcase:before { - content: "\e651"; -} -.ti-bolt:before { - content: "\e652"; -} -.ti-bolt-alt:before { - content: "\e653"; -} -.ti-blackboard:before { - content: "\e654"; -} -.ti-bag:before { - content: "\e655"; -} -.ti-move:before { - content: "\e656"; -} -.ti-arrows-vertical:before { - content: "\e657"; -} -.ti-arrows-horizontal:before { - content: "\e658"; -} -.ti-fullscreen:before { - content: "\e659"; -} -.ti-arrow-top-right:before { - content: "\e65a"; -} -.ti-arrow-top-left:before { - content: "\e65b"; -} -.ti-arrow-circle-up:before { - content: "\e65c"; -} -.ti-arrow-circle-right:before { - content: "\e65d"; -} -.ti-arrow-circle-left:before { - content: "\e65e"; -} -.ti-arrow-circle-down:before { - content: "\e65f"; -} -.ti-angle-double-up:before { - content: "\e660"; -} -.ti-angle-double-right:before { - content: "\e661"; -} -.ti-angle-double-left:before { - content: "\e662"; -} -.ti-angle-double-down:before { - content: "\e663"; -} -.ti-zip:before { - content: "\e664"; -} -.ti-world:before { - content: "\e665"; -} -.ti-wheelchair:before { - content: "\e666"; -} -.ti-view-list:before { - content: "\e667"; -} -.ti-view-list-alt:before { - content: "\e668"; -} -.ti-view-grid:before { - content: "\e669"; -} -.ti-uppercase:before { - content: "\e66a"; -} -.ti-upload:before { - content: "\e66b"; -} -.ti-underline:before { - content: "\e66c"; -} -.ti-truck:before { - content: "\e66d"; -} -.ti-timer:before { - content: "\e66e"; -} -.ti-ticket:before { - content: "\e66f"; -} -.ti-thumb-up:before { - content: "\e670"; -} -.ti-thumb-down:before { - content: "\e671"; -} -.ti-text:before { - content: "\e672"; -} -.ti-stats-up:before { - content: "\e673"; -} -.ti-stats-down:before { - content: "\e674"; -} -.ti-split-v:before { - content: "\e675"; -} -.ti-split-h:before { - content: "\e676"; -} -.ti-smallcap:before { - content: "\e677"; -} -.ti-shine:before { - content: "\e678"; -} -.ti-shift-right:before { - content: "\e679"; -} -.ti-shift-left:before { - content: "\e67a"; -} -.ti-shield:before { - content: "\e67b"; -} -.ti-notepad:before { - content: "\e67c"; -} -.ti-server:before { - content: "\e67d"; -} -.ti-quote-right:before { - content: "\e67e"; -} -.ti-quote-left:before { - content: "\e67f"; -} -.ti-pulse:before { - content: "\e680"; -} -.ti-printer:before { - content: "\e681"; -} -.ti-power-off:before { - content: "\e682"; -} -.ti-plug:before { - content: "\e683"; -} -.ti-pie-chart:before { - content: "\e684"; -} -.ti-paragraph:before { - content: "\e685"; -} -.ti-panel:before { - content: "\e686"; -} -.ti-package:before { - content: "\e687"; -} -.ti-music:before { - content: "\e688"; -} -.ti-music-alt:before { - content: "\e689"; -} -.ti-mouse:before { - content: "\e68a"; -} -.ti-mouse-alt:before { - content: "\e68b"; -} -.ti-money:before { - content: "\e68c"; -} -.ti-microphone:before { - content: "\e68d"; -} -.ti-menu:before { - content: "\e68e"; -} -.ti-menu-alt:before { - content: "\e68f"; -} -.ti-map:before { - content: "\e690"; -} -.ti-map-alt:before { - content: "\e691"; -} -.ti-loop:before { - content: "\e692"; -} -.ti-location-pin:before { - content: "\e693"; -} -.ti-list:before { - content: "\e694"; -} -.ti-light-bulb:before { - content: "\e695"; -} -.ti-Italic:before { - content: "\e696"; -} -.ti-info:before { - content: "\e697"; -} -.ti-infinite:before { - content: "\e698"; -} -.ti-id-badge:before { - content: "\e699"; -} -.ti-hummer:before { - content: "\e69a"; -} -.ti-home:before { - content: "\e69b"; -} -.ti-help:before { - content: "\e69c"; -} -.ti-headphone:before { - content: "\e69d"; -} -.ti-harddrives:before { - content: "\e69e"; -} -.ti-harddrive:before { - content: "\e69f"; -} -.ti-gift:before { - content: "\e6a0"; -} -.ti-game:before { - content: "\e6a1"; -} -.ti-filter:before { - content: "\e6a2"; -} -.ti-files:before { - content: "\e6a3"; -} -.ti-file:before { - content: "\e6a4"; -} -.ti-eraser:before { - content: "\e6a5"; -} -.ti-envelope:before { - content: "\e6a6"; -} -.ti-download:before { - content: "\e6a7"; -} -.ti-direction:before { - content: "\e6a8"; -} -.ti-direction-alt:before { - content: "\e6a9"; -} -.ti-dashboard:before { - content: "\e6aa"; -} -.ti-control-stop:before { - content: "\e6ab"; -} -.ti-control-shuffle:before { - content: "\e6ac"; -} -.ti-control-play:before { - content: "\e6ad"; -} -.ti-control-pause:before { - content: "\e6ae"; -} -.ti-control-forward:before { - content: "\e6af"; -} -.ti-control-backward:before { - content: "\e6b0"; -} -.ti-cloud:before { - content: "\e6b1"; -} -.ti-cloud-up:before { - content: "\e6b2"; -} -.ti-cloud-down:before { - content: "\e6b3"; -} -.ti-clipboard:before { - content: "\e6b4"; -} -.ti-car:before { - content: "\e6b5"; -} -.ti-calendar:before { - content: "\e6b6"; -} -.ti-book:before { - content: "\e6b7"; -} -.ti-bell:before { - content: "\e6b8"; -} -.ti-basketball:before { - content: "\e6b9"; -} -.ti-bar-chart:before { - content: "\e6ba"; -} -.ti-bar-chart-alt:before { - content: "\e6bb"; -} -.ti-back-right:before { - content: "\e6bc"; -} -.ti-back-left:before { - content: "\e6bd"; -} -.ti-arrows-corner:before { - content: "\e6be"; -} -.ti-archive:before { - content: "\e6bf"; -} -.ti-anchor:before { - content: "\e6c0"; -} -.ti-align-right:before { - content: "\e6c1"; -} -.ti-align-left:before { - content: "\e6c2"; -} -.ti-align-justify:before { - content: "\e6c3"; -} -.ti-align-center:before { - content: "\e6c4"; -} -.ti-alert:before { - content: "\e6c5"; -} -.ti-alarm-clock:before { - content: "\e6c6"; -} -.ti-agenda:before { - content: "\e6c7"; -} -.ti-write:before { - content: "\e6c8"; -} -.ti-window:before { - content: "\e6c9"; -} -.ti-widgetized:before { - content: "\e6ca"; -} -.ti-widget:before { - content: "\e6cb"; -} -.ti-widget-alt:before { - content: "\e6cc"; -} -.ti-wallet:before { - content: "\e6cd"; -} -.ti-video-clapper:before { - content: "\e6ce"; -} -.ti-video-camera:before { - content: "\e6cf"; -} -.ti-vector:before { - content: "\e6d0"; -} -.ti-themify-logo:before { - content: "\e6d1"; -} -.ti-themify-favicon:before { - content: "\e6d2"; -} -.ti-themify-favicon-alt:before { - content: "\e6d3"; -} -.ti-support:before { - content: "\e6d4"; -} -.ti-stamp:before { - content: "\e6d5"; -} -.ti-split-v-alt:before { - content: "\e6d6"; -} -.ti-slice:before { - content: "\e6d7"; -} -.ti-shortcode:before { - content: "\e6d8"; -} -.ti-shift-right-alt:before { - content: "\e6d9"; -} -.ti-shift-left-alt:before { - content: "\e6da"; -} -.ti-ruler-alt-2:before { - content: "\e6db"; -} -.ti-receipt:before { - content: "\e6dc"; -} -.ti-pin2:before { - content: "\e6dd"; -} -.ti-pin-alt:before { - content: "\e6de"; -} -.ti-pencil-alt2:before { - content: "\e6df"; -} -.ti-palette:before { - content: "\e6e0"; -} -.ti-more:before { - content: "\e6e1"; -} -.ti-more-alt:before { - content: "\e6e2"; -} -.ti-microphone-alt:before { - content: "\e6e3"; -} -.ti-magnet:before { - content: "\e6e4"; -} -.ti-line-double:before { - content: "\e6e5"; -} -.ti-line-dotted:before { - content: "\e6e6"; -} -.ti-line-dashed:before { - content: "\e6e7"; -} -.ti-layout-width-full:before { - content: "\e6e8"; -} -.ti-layout-width-default:before { - content: "\e6e9"; -} -.ti-layout-width-default-alt:before { - content: "\e6ea"; -} -.ti-layout-tab:before { - content: "\e6eb"; -} -.ti-layout-tab-window:before { - content: "\e6ec"; -} -.ti-layout-tab-v:before { - content: "\e6ed"; -} -.ti-layout-tab-min:before { - content: "\e6ee"; -} -.ti-layout-slider:before { - content: "\e6ef"; -} -.ti-layout-slider-alt:before { - content: "\e6f0"; -} -.ti-layout-sidebar-right:before { - content: "\e6f1"; -} -.ti-layout-sidebar-none:before { - content: "\e6f2"; -} -.ti-layout-sidebar-left:before { - content: "\e6f3"; -} -.ti-layout-placeholder:before { - content: "\e6f4"; -} -.ti-layout-menu:before { - content: "\e6f5"; -} -.ti-layout-menu-v:before { - content: "\e6f6"; -} -.ti-layout-menu-separated:before { - content: "\e6f7"; -} -.ti-layout-menu-full:before { - content: "\e6f8"; -} -.ti-layout-media-right-alt:before { - content: "\e6f9"; -} -.ti-layout-media-right:before { - content: "\e6fa"; -} -.ti-layout-media-overlay:before { - content: "\e6fb"; -} -.ti-layout-media-overlay-alt:before { - content: "\e6fc"; -} -.ti-layout-media-overlay-alt-2:before { - content: "\e6fd"; -} -.ti-layout-media-left-alt:before { - content: "\e6fe"; -} -.ti-layout-media-left:before { - content: "\e6ff"; -} -.ti-layout-media-center-alt:before { - content: "\e700"; -} -.ti-layout-media-center:before { - content: "\e701"; -} -.ti-layout-list-thumb:before { - content: "\e702"; -} -.ti-layout-list-thumb-alt:before { - content: "\e703"; -} -.ti-layout-list-post:before { - content: "\e704"; -} -.ti-layout-list-large-image:before { - content: "\e705"; -} -.ti-layout-line-solid:before { - content: "\e706"; -} -.ti-layout-grid4:before { - content: "\e707"; -} -.ti-layout-grid3:before { - content: "\e708"; -} -.ti-layout-grid2:before { - content: "\e709"; -} -.ti-layout-grid2-thumb:before { - content: "\e70a"; -} -.ti-layout-cta-right:before { - content: "\e70b"; -} -.ti-layout-cta-left:before { - content: "\e70c"; -} -.ti-layout-cta-center:before { - content: "\e70d"; -} -.ti-layout-cta-btn-right:before { - content: "\e70e"; -} -.ti-layout-cta-btn-left:before { - content: "\e70f"; -} -.ti-layout-column4:before { - content: "\e710"; -} -.ti-layout-column3:before { - content: "\e711"; -} -.ti-layout-column2:before { - content: "\e712"; -} -.ti-layout-accordion-separated:before { - content: "\e713"; -} -.ti-layout-accordion-merged:before { - content: "\e714"; -} -.ti-layout-accordion-list:before { - content: "\e715"; -} -.ti-ink-pen:before { - content: "\e716"; -} -.ti-info-alt:before { - content: "\e717"; -} -.ti-help-alt:before { - content: "\e718"; -} -.ti-headphone-alt:before { - content: "\e719"; -} -.ti-hand-point-up:before { - content: "\e71a"; -} -.ti-hand-point-right:before { - content: "\e71b"; -} -.ti-hand-point-left:before { - content: "\e71c"; -} -.ti-hand-point-down:before { - content: "\e71d"; -} -.ti-gallery:before { - content: "\e71e"; -} -.ti-face-smile:before { - content: "\e71f"; -} -.ti-face-sad:before { - content: "\e720"; -} -.ti-credit-card:before { - content: "\e721"; -} -.ti-control-skip-forward:before { - content: "\e722"; -} -.ti-control-skip-backward:before { - content: "\e723"; -} -.ti-control-record:before { - content: "\e724"; -} -.ti-control-eject:before { - content: "\e725"; -} -.ti-comments-smiley:before { - content: "\e726"; -} -.ti-brush-alt:before { - content: "\e727"; -} -.ti-youtube:before { - content: "\e728"; -} -.ti-vimeo:before { - content: "\e729"; -} -.ti-twitter:before { - content: "\e72a"; -} -.ti-time:before { - content: "\e72b"; -} -.ti-tumblr:before { - content: "\e72c"; -} -.ti-skype:before { - content: "\e72d"; -} -.ti-share:before { - content: "\e72e"; -} -.ti-share-alt:before { - content: "\e72f"; -} -.ti-rocket:before { - content: "\e730"; -} -.ti-pinterest:before { - content: "\e731"; -} -.ti-new-window:before { - content: "\e732"; -} -.ti-microsoft:before { - content: "\e733"; -} -.ti-list-ol:before { - content: "\e734"; -} -.ti-linkedin:before { - content: "\e735"; -} -.ti-layout-sidebar-2:before { - content: "\e736"; -} -.ti-layout-grid4-alt:before { - content: "\e737"; -} -.ti-layout-grid3-alt:before { - content: "\e738"; -} -.ti-layout-grid2-alt:before { - content: "\e739"; -} -.ti-layout-column4-alt:before { - content: "\e73a"; -} -.ti-layout-column3-alt:before { - content: "\e73b"; -} -.ti-layout-column2-alt:before { - content: "\e73c"; -} -.ti-instagram:before { - content: "\e73d"; -} -.ti-google:before { - content: "\e73e"; -} -.ti-github:before { - content: "\e73f"; -} -.ti-flickr:before { - content: "\e740"; -} -.ti-facebook:before { - content: "\e741"; -} -.ti-dropbox:before { - content: "\e742"; -} -.ti-dribbble:before { - content: "\e743"; -} -.ti-apple:before { - content: "\e744"; -} -.ti-android:before { - content: "\e745"; -} -.ti-save:before { - content: "\e746"; -} -.ti-save-alt:before { - content: "\e747"; -} -.ti-yahoo:before { - content: "\e748"; -} -.ti-wordpress:before { - content: "\e749"; -} -.ti-vimeo-alt:before { - content: "\e74a"; -} -.ti-twitter-alt:before { - content: "\e74b"; -} -.ti-tumblr-alt:before { - content: "\e74c"; -} -.ti-trello:before { - content: "\e74d"; -} -.ti-stack-overflow:before { - content: "\e74e"; -} -.ti-soundcloud:before { - content: "\e74f"; -} -.ti-sharethis:before { - content: "\e750"; -} -.ti-sharethis-alt:before { - content: "\e751"; -} -.ti-reddit:before { - content: "\e752"; -} -.ti-pinterest-alt:before { - content: "\e753"; -} -.ti-microsoft-alt:before { - content: "\e754"; -} -.ti-linux:before { - content: "\e755"; -} -.ti-jsfiddle:before { - content: "\e756"; -} -.ti-joomla:before { - content: "\e757"; -} -.ti-html5:before { - content: "\e758"; -} -.ti-flickr-alt:before { - content: "\e759"; -} -.ti-email:before { - content: "\e75a"; -} -.ti-drupal:before { - content: "\e75b"; -} -.ti-dropbox-alt:before { - content: "\e75c"; -} -.ti-css3:before { - content: "\e75d"; -} -.ti-rss:before { - content: "\e75e"; -} -.ti-rss-alt:before { - content: "\e75f"; -} -/*! - * Material Design Iconic Font 1.0.1 by Sergey Kupletsky (@zavoloklom) - http://zavoloklom.github.io/material-design-iconic-font/ - * License - https://github.com/zavoloklom/material-design-iconic-font/blob/gh-pages/License.md (Attribution-ShareAlike 4.0 International license) - */ -@font-face { - font-family: 'Material Design Iconic Font'; - src: url('../fonts/Material-Design-Iconic-Font.eot?v=1.0.1'); - src: url('../fonts/Material-Design-Iconic-Font.eot?#iefix&v=1.0.1') format('embedded-opentype'), url('../fonts/Material-Design-Iconic-Font.woff?v=1.0.1') format('woff'), url('../fonts/Material-Design-Iconic-Font.ttf?v=1.0.1') format('truetype'), url('../fonts/Material-Design-Iconic-Font.svg?v=1.0.1#Material-Design-Iconic-Font') format('svg'); - font-weight: normal; - font-style: normal; -} -[class^="md-"], -[class*=" md-"] { - display: inline-block; - font: normal normal normal 14px/1 'Material Design Iconic Font'; - font-size: inherit; - speak: none; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.md { - line-height: inherit; - vertical-align: bottom; -} -.md-lg { - font-size: 1.5em; - line-height: .5em; - vertical-align: -35%; -} -.md-2x { - font-size: 2em; -} -.md-3x { - font-size: 3em; -} -.md-4x { - font-size: 4em; -} -.md-5x { - font-size: 5em; -} -.md-border { - padding: .2em .25em .15em; - border: solid 0.08em grey; - border-radius: .1em; -} -.md-border-circle { - padding: .2em .25em .15em; - border: solid 0.08em grey; - border-radius: 50%; -} -[class^="md-"].pull-left, -[class*=" md-"].pull-left { - float: left; - margin-right: .3em; -} -[class^="md-"].pull-right, -[class*=" md-"].pull-right { - float: right; - margin-left: .3em; -} -.md-spin { - -webkit-animation: md-spin 1.5s infinite linear; - animation: md-spin 1.5s infinite linear; -} -.md-spin-reverse { - -webkit-animation: md-spin-reverse 1.5s infinite linear; - animation: md-spin-reverse 1.5s infinite linear; -} -@-webkit-keyframes md-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes md-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@-webkit-keyframes md-spin-reverse { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(-359deg); - transform: rotate(-359deg); - } -} -@keyframes md-spin-reverse { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(-359deg); - transform: rotate(-359deg); - } -} -.md-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.md-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.md-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.md-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.md-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .md-rotate-90, -:root .md-rotate-180, -:root .md-rotate-270, -:root .md-flip-horizontal, -:root .md-flip-vertical { - filter: none; -} -/* Material Design Iconic Font uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -/* If you do not want use all icons you can disable icon set here */ -.md-3d-rotation:before { - content: "\f000"; -} -.md-accessibility:before { - content: "\f001"; -} -.md-account-balance:before { - content: "\f002"; -} -.md-account-balance-wallet:before { - content: "\f003"; -} -.md-account-box:before { - content: "\f004"; -} -.md-account-child:before { - content: "\f005"; -} -.md-account-circle:before { - content: "\f006"; -} -.md-add-shopping-cart:before { - content: "\f007"; -} -.md-alarm:before { - content: "\f008"; -} -.md-alarm-add:before { - content: "\f009"; -} -.md-alarm-off:before { - content: "\f00a"; -} -.md-alarm-on:before { - content: "\f00b"; -} -.md-android:before { - content: "\f00c"; -} -.md-announcement:before { - content: "\f00d"; -} -.md-aspect-ratio:before { - content: "\f00e"; -} -.md-assessment:before { - content: "\f00f"; -} -.md-assignment:before { - content: "\f010"; -} -.md-assignment-ind:before { - content: "\f011"; -} -.md-assignment-late:before { - content: "\f012"; -} -.md-assignment-return:before { - content: "\f013"; -} -.md-assignment-returned:before { - content: "\f014"; -} -.md-assignment-turned-in:before { - content: "\f015"; -} -.md-autorenew:before { - content: "\f016"; -} -.md-backup:before { - content: "\f017"; -} -.md-book:before { - content: "\f018"; -} -.md-bookmark:before { - content: "\f019"; -} -.md-bookmark-outline:before { - content: "\f01a"; -} -.md-bug-report:before { - content: "\f01b"; -} -.md-cached:before { - content: "\f01c"; -} -.md-class:before { - content: "\f01d"; -} -.md-credit-card:before { - content: "\f01e"; -} -.md-dashboard:before { - content: "\f01f"; -} -.md-delete:before { - content: "\f020"; -} -.md-description:before { - content: "\f021"; -} -.md-dns:before { - content: "\f022"; -} -.md-done:before { - content: "\f023"; -} -.md-done-all:before { - content: "\f024"; -} -.md-event:before { - content: "\f025"; -} -.md-exit-to-app:before { - content: "\f026"; -} -.md-explore:before { - content: "\f027"; -} -.md-extension:before { - content: "\f028"; -} -.md-face-unlock:before { - content: "\f029"; -} -.md-favorite:before { - content: "\f02a"; -} -.md-favorite-outline:before { - content: "\f02b"; -} -.md-find-in-page:before { - content: "\f02c"; -} -.md-find-replace:before { - content: "\f02d"; -} -.md-flip-to-back:before { - content: "\f02e"; -} -.md-flip-to-front:before { - content: "\f02f"; -} -.md-get-app:before { - content: "\f030"; -} -.md-grade:before { - content: "\f031"; -} -.md-group-work:before { - content: "\f032"; -} -.md-help:before { - content: "\f033"; -} -.md-highlight-remove:before { - content: "\f034"; -} -.md-history:before { - content: "\f035"; -} -.md-home:before { - content: "\f036"; -} -.md-https:before { - content: "\f037"; -} -.md-info:before { - content: "\f038"; -} -.md-info-outline:before { - content: "\f039"; -} -.md-input:before { - content: "\f03a"; -} -.md-invert-colors:before { - content: "\f03b"; -} -.md-label:before { - content: "\f03c"; -} -.md-label-outline:before { - content: "\f03d"; -} -.md-language:before { - content: "\f03e"; -} -.md-launch:before { - content: "\f03f"; -} -.md-list:before { - content: "\f040"; -} -.md-lock:before { - content: "\f041"; -} -.md-lock-open:before { - content: "\f042"; -} -.md-lock-outline:before { - content: "\f043"; -} -.md-loyalty:before { - content: "\f044"; -} -.md-markunread-mailbox:before { - content: "\f045"; -} -.md-note-add:before { - content: "\f046"; -} -.md-open-in-browser:before { - content: "\f047"; -} -.md-open-in-new:before { - content: "\f048"; -} -.md-open-with:before { - content: "\f049"; -} -.md-pageview:before { - content: "\f04a"; -} -.md-payment:before { - content: "\f04b"; -} -.md-perm-camera-mic:before { - content: "\f04c"; -} -.md-perm-contact-cal:before { - content: "\f04d"; -} -.md-perm-data-setting:before { - content: "\f04e"; -} -.md-perm-device-info:before { - content: "\f04f"; -} -.md-perm-identity:before { - content: "\f050"; -} -.md-perm-media:before { - content: "\f051"; -} -.md-perm-phone-msg:before { - content: "\f052"; -} -.md-perm-scan-wifi:before { - content: "\f053"; -} -.md-picture-in-picture:before { - content: "\f054"; -} -.md-polymer:before { - content: "\f055"; -} -.md-print:before { - content: "\f056"; -} -.md-query-builder:before { - content: "\f057"; -} -.md-question-answer:before { - content: "\f058"; -} -.md-receipt:before { - content: "\f059"; -} -.md-redeem:before { - content: "\f05a"; -} -.md-report-problem:before { - content: "\f05b"; -} -.md-restore:before { - content: "\f05c"; -} -.md-room:before { - content: "\f05d"; -} -.md-schedule:before { - content: "\f05e"; -} -.md-search:before { - content: "\f05f"; -} -.md-settings:before { - content: "\f060"; -} -.md-settings-applications:before { - content: "\f061"; -} -.md-settings-backup-restore:before { - content: "\f062"; -} -.md-settings-bluetooth:before { - content: "\f063"; -} -.md-settings-cell:before { - content: "\f064"; -} -.md-settings-display:before { - content: "\f065"; -} -.md-settings-ethernet:before { - content: "\f066"; -} -.md-settings-input-antenna:before { - content: "\f067"; -} -.md-settings-input-component:before { - content: "\f068"; -} -.md-settings-input-composite:before { - content: "\f069"; -} -.md-settings-input-hdmi:before { - content: "\f06a"; -} -.md-settings-input-svideo:before { - content: "\f06b"; -} -.md-settings-overscan:before { - content: "\f06c"; -} -.md-settings-phone:before { - content: "\f06d"; -} -.md-settings-power:before { - content: "\f06e"; -} -.md-settings-remote:before { - content: "\f06f"; -} -.md-settings-voice:before { - content: "\f070"; -} -.md-shop:before { - content: "\f071"; -} -.md-shopping-basket:before { - content: "\f072"; -} -.md-shopping-cart:before { - content: "\f073"; -} -.md-shop-two:before { - content: "\f074"; -} -.md-speaker-notes:before { - content: "\f075"; -} -.md-spellcheck:before { - content: "\f076"; -} -.md-star-rate:before { - content: "\f077"; -} -.md-stars:before { - content: "\f078"; -} -.md-store:before { - content: "\f079"; -} -.md-subject:before { - content: "\f07a"; -} -.md-swap-horiz:before { - content: "\f07b"; -} -.md-swap-vert:before { - content: "\f07c"; -} -.md-swap-vert-circle:before { - content: "\f07d"; -} -.md-system-update-tv:before { - content: "\f07e"; -} -.md-tab:before { - content: "\f07f"; -} -.md-tab-unselected:before { - content: "\f080"; -} -.md-theaters:before { - content: "\f081"; -} -.md-thumb-down:before { - content: "\f082"; -} -.md-thumbs-up-down:before { - content: "\f083"; -} -.md-thumb-up:before { - content: "\f084"; -} -.md-toc:before { - content: "\f085"; -} -.md-today:before { - content: "\f086"; -} -.md-track-changes:before { - content: "\f087"; -} -.md-translate:before { - content: "\f088"; -} -.md-trending-down:before { - content: "\f089"; -} -.md-trending-neutral:before { - content: "\f08a"; -} -.md-trending-up:before { - content: "\f08b"; -} -.md-turned-in:before { - content: "\f08c"; -} -.md-turned-in-not:before { - content: "\f08d"; -} -.md-verified-user:before { - content: "\f08e"; -} -.md-view-agenda:before { - content: "\f08f"; -} -.md-view-array:before { - content: "\f090"; -} -.md-view-carousel:before { - content: "\f091"; -} -.md-view-column:before { - content: "\f092"; -} -.md-view-day:before { - content: "\f093"; -} -.md-view-headline:before { - content: "\f094"; -} -.md-view-list:before { - content: "\f095"; -} -.md-view-module:before { - content: "\f096"; -} -.md-view-quilt:before { - content: "\f097"; -} -.md-view-stream:before { - content: "\f098"; -} -.md-view-week:before { - content: "\f099"; -} -.md-visibility:before { - content: "\f09a"; -} -.md-visibility-off:before { - content: "\f09b"; -} -.md-wallet-giftcard:before { - content: "\f09c"; -} -.md-wallet-membership:before { - content: "\f09d"; -} -.md-wallet-travel:before { - content: "\f09e"; -} -.md-work:before { - content: "\f09f"; -} -.md-error:before { - content: "\f0a0"; -} -.md-warning:before { - content: "\f0a1"; -} -.md-album:before { - content: "\f0a2"; -} -.md-av-timer:before { - content: "\f0a3"; -} -.md-closed-caption:before { - content: "\f0a4"; -} -.md-equalizer:before { - content: "\f0a5"; -} -.md-explicit:before { - content: "\f0a6"; -} -.md-fast-forward:before { - content: "\f0a7"; -} -.md-fast-rewind:before { - content: "\f0a8"; -} -.md-games:before { - content: "\f0a9"; -} -.md-hearing:before { - content: "\f0aa"; -} -.md-high-quality:before { - content: "\f0ab"; -} -.md-loop:before { - content: "\f0ac"; -} -.md-mic:before { - content: "\f0ad"; -} -.md-mic-none:before { - content: "\f0ae"; -} -.md-mic-off:before { - content: "\f0af"; -} -.md-movie:before { - content: "\f0b0"; -} -.md-my-library-add:before { - content: "\f0b1"; -} -.md-my-library-books:before { - content: "\f0b2"; -} -.md-my-library-music:before { - content: "\f0b3"; -} -.md-new-releases:before { - content: "\f0b4"; -} -.md-not-interested:before { - content: "\f0b5"; -} -.md-pause:before { - content: "\f0b6"; -} -.md-pause-circle-fill:before { - content: "\f0b7"; -} -.md-pause-circle-outline:before { - content: "\f0b8"; -} -.md-play-arrow:before { - content: "\f0b9"; -} -.md-play-circle-fill:before { - content: "\f0ba"; -} -.md-play-circle-outline:before { - content: "\f0bb"; -} -.md-playlist-add:before { - content: "\f0bc"; -} -.md-play-shopping-bag:before { - content: "\f0bd"; -} -.md-queue:before { - content: "\f0be"; -} -.md-queue-music:before { - content: "\f0bf"; -} -.md-radio:before { - content: "\f0c0"; -} -.md-recent-actors:before { - content: "\f0c1"; -} -.md-repeat:before { - content: "\f0c2"; -} -.md-repeat-one:before { - content: "\f0c3"; -} -.md-replay:before { - content: "\f0c4"; -} -.md-shuffle:before { - content: "\f0c5"; -} -.md-skip-next:before { - content: "\f0c6"; -} -.md-skip-previous:before { - content: "\f0c7"; -} -.md-snooze:before { - content: "\f0c8"; -} -.md-stop:before { - content: "\f0c9"; -} -.md-subtitles:before { - content: "\f0ca"; -} -.md-surround-sound:before { - content: "\f0cb"; -} -.md-videocam:before { - content: "\f0cc"; -} -.md-videocam-off:before { - content: "\f0cd"; -} -.md-video-collection:before { - content: "\f0ce"; -} -.md-volume-down:before { - content: "\f0cf"; -} -.md-volume-mute:before { - content: "\f0d0"; -} -.md-volume-off:before { - content: "\f0d1"; -} -.md-volume-up:before { - content: "\f0d2"; -} -.md-web:before { - content: "\f0d3"; -} -.md-business:before { - content: "\f0d4"; -} -.md-call:before { - content: "\f0d5"; -} -.md-call-end:before { - content: "\f0d6"; -} -.md-call-made:before { - content: "\f0d7"; -} -.md-call-merge:before { - content: "\f0d8"; -} -.md-call-missed:before { - content: "\f0d9"; -} -.md-call-received:before { - content: "\f0da"; -} -.md-call-split:before { - content: "\f0db"; -} -.md-chat:before { - content: "\f0dc"; -} -.md-clear-all:before { - content: "\f0dd"; -} -.md-comment:before { - content: "\f0de"; -} -.md-contacts:before { - content: "\f0df"; -} -.md-dialer-sip:before { - content: "\f0e0"; -} -.md-dialpad:before { - content: "\f0e1"; -} -.md-dnd-on:before { - content: "\f0e2"; -} -.md-email:before { - content: "\f0e3"; -} -.md-forum:before { - content: "\f0e4"; -} -.md-import-export:before { - content: "\f0e5"; -} -.md-invert-colors-off:before { - content: "\f0e6"; -} -.md-invert-colors-on:before { - content: "\f0e7"; -} -.md-live-help:before { - content: "\f0e8"; -} -.md-location-off:before { - content: "\f0e9"; -} -.md-location-on:before { - content: "\f0ea"; -} -.md-message:before { - content: "\f0eb"; -} -.md-messenger:before { - content: "\f0ec"; -} -.md-no-sim:before { - content: "\f0ed"; -} -.md-phone:before { - content: "\f0ee"; -} -.md-portable-wifi-off:before { - content: "\f0ef"; -} -.md-quick-contacts-dialer:before { - content: "\f0f0"; -} -.md-quick-contacts-mail:before { - content: "\f0f1"; -} -.md-ring-volume:before { - content: "\f0f2"; -} -.md-stay-current-landscape:before { - content: "\f0f3"; -} -.md-stay-current-portrait:before { - content: "\f0f4"; -} -.md-stay-primary-landscape:before { - content: "\f0f5"; -} -.md-stay-primary-portrait:before { - content: "\f0f6"; -} -.md-swap-calls:before { - content: "\f0f7"; -} -.md-textsms:before { - content: "\f0f8"; -} -.md-voicemail:before { - content: "\f0f9"; -} -.md-vpn-key:before { - content: "\f0fa"; -} -.md-add:before { - content: "\f0fb"; -} -.md-add-box:before { - content: "\f0fc"; -} -.md-add-circle:before { - content: "\f0fd"; -} -.md-add-circle-outline:before { - content: "\f0fe"; -} -.md-archive:before { - content: "\f0ff"; -} -.md-backspace:before { - content: "\f100"; -} -.md-block:before { - content: "\f101"; -} -.md-clear:before { - content: "\f102"; -} -.md-content-copy:before { - content: "\f103"; -} -.md-content-cut:before { - content: "\f104"; -} -.md-content-paste:before { - content: "\f105"; -} -.md-create:before { - content: "\f106"; -} -.md-drafts:before { - content: "\f107"; -} -.md-filter-list:before { - content: "\f108"; -} -.md-flag:before { - content: "\f109"; -} -.md-forward:before { - content: "\f10a"; -} -.md-gesture:before { - content: "\f10b"; -} -.md-inbox:before { - content: "\f10c"; -} -.md-link:before { - content: "\f10d"; -} -.md-mail:before { - content: "\f10e"; -} -.md-markunread:before { - content: "\f10f"; -} -.md-redo:before { - content: "\f110"; -} -.md-remove:before { - content: "\f111"; -} -.md-remove-circle:before { - content: "\f112"; -} -.md-remove-circle-outline:before { - content: "\f113"; -} -.md-reply:before { - content: "\f114"; -} -.md-reply-all:before { - content: "\f115"; -} -.md-report:before { - content: "\f116"; -} -.md-save:before { - content: "\f117"; -} -.md-select-all:before { - content: "\f118"; -} -.md-send:before { - content: "\f119"; -} -.md-sort:before { - content: "\f11a"; -} -.md-text-format:before { - content: "\f11b"; -} -.md-undo:before { - content: "\f11c"; -} -.md-access-alarm:before { - content: "\f11d"; -} -.md-access-alarms:before { - content: "\f11e"; -} -.md-access-time:before { - content: "\f11f"; -} -.md-add-alarm:before { - content: "\f120"; -} -.md-airplanemode-off:before { - content: "\f121"; -} -.md-airplanemode-on:before { - content: "\f122"; -} -.md-battery-20:before { - content: "\f123"; -} -.md-battery-30:before { - content: "\f124"; -} -.md-battery-50:before { - content: "\f125"; -} -.md-battery-60:before { - content: "\f126"; -} -.md-battery-80:before { - content: "\f127"; -} -.md-battery-90:before { - content: "\f128"; -} -.md-battery-alert:before { - content: "\f129"; -} -.md-battery-charging-20:before { - content: "\f12a"; -} -.md-battery-charging-30:before { - content: "\f12b"; -} -.md-battery-charging-50:before { - content: "\f12c"; -} -.md-battery-charging-60:before { - content: "\f12d"; -} -.md-battery-charging-80:before { - content: "\f12e"; -} -.md-battery-charging-90:before { - content: "\f12f"; -} -.md-battery-charging-full:before { - content: "\f130"; -} -.md-battery-full:before { - content: "\f131"; -} -.md-battery-std:before { - content: "\f132"; -} -.md-battery-unknown:before { - content: "\f133"; -} -.md-bluetooth:before { - content: "\f134"; -} -.md-bluetooth-connected:before { - content: "\f135"; -} -.md-bluetooth-disabled:before { - content: "\f136"; -} -.md-bluetooth-searching:before { - content: "\f137"; -} -.md-brightness-auto:before { - content: "\f138"; -} -.md-brightness-high:before { - content: "\f139"; -} -.md-brightness-low:before { - content: "\f13a"; -} -.md-brightness-medium:before { - content: "\f13b"; -} -.md-data-usage:before { - content: "\f13c"; -} -.md-developer-mode:before { - content: "\f13d"; -} -.md-devices:before { - content: "\f13e"; -} -.md-dvr:before { - content: "\f13f"; -} -.md-gps-fixed:before { - content: "\f140"; -} -.md-gps-not-fixed:before { - content: "\f141"; -} -.md-gps-off:before { - content: "\f142"; -} -.md-location-disabled:before { - content: "\f143"; -} -.md-location-searching:before { - content: "\f144"; -} -.md-multitrack-audio:before { - content: "\f145"; -} -.md-network-cell:before { - content: "\f146"; -} -.md-network-wifi:before { - content: "\f147"; -} -.md-nfc:before { - content: "\f148"; -} -.md-now-wallpaper:before { - content: "\f149"; -} -.md-now-widgets:before { - content: "\f14a"; -} -.md-screen-lock-landscape:before { - content: "\f14b"; -} -.md-screen-lock-portrait:before { - content: "\f14c"; -} -.md-screen-lock-rotation:before { - content: "\f14d"; -} -.md-screen-rotation:before { - content: "\f14e"; -} -.md-sd-storage:before { - content: "\f14f"; -} -.md-settings-system-daydream:before { - content: "\f150"; -} -.md-signal-cellular-0-bar:before { - content: "\f151"; -} -.md-signal-cellular-1-bar:before { - content: "\f152"; -} -.md-signal-cellular-2-bar:before { - content: "\f153"; -} -.md-signal-cellular-3-bar:before { - content: "\f154"; -} -.md-signal-cellular-4-bar:before { - content: "\f155"; -} -.md-signal-cellular-connected-no-internet-0-bar:before { - content: "\f156"; -} -.md-signal-cellular-connected-no-internet-1-bar:before { - content: "\f157"; -} -.md-signal-cellular-connected-no-internet-2-bar:before { - content: "\f158"; -} -.md-signal-cellular-connected-no-internet-3-bar:before { - content: "\f159"; -} -.md-signal-cellular-connected-no-internet-4-bar:before { - content: "\f15a"; -} -.md-signal-cellular-no-sim:before { - content: "\f15b"; -} -.md-signal-cellular-null:before { - content: "\f15c"; -} -.md-signal-cellular-off:before { - content: "\f15d"; -} -.md-signal-wifi-0-bar:before { - content: "\f15e"; -} -.md-signal-wifi-1-bar:before { - content: "\f15f"; -} -.md-signal-wifi-2-bar:before { - content: "\f160"; -} -.md-signal-wifi-3-bar:before { - content: "\f161"; -} -.md-signal-wifi-4-bar:before { - content: "\f162"; -} -.md-signal-wifi-off:before { - content: "\f163"; -} -.md-storage:before { - content: "\f164"; -} -.md-usb:before { - content: "\f165"; -} -.md-wifi-lock:before { - content: "\f166"; -} -.md-wifi-tethering:before { - content: "\f167"; -} -.md-attach-file:before { - content: "\f168"; -} -.md-attach-money:before { - content: "\f169"; -} -.md-border-all:before { - content: "\f16a"; -} -.md-border-bottom:before { - content: "\f16b"; -} -.md-border-clear:before { - content: "\f16c"; -} -.md-border-color:before { - content: "\f16d"; -} -.md-border-horizontal:before { - content: "\f16e"; -} -.md-border-inner:before { - content: "\f16f"; -} -.md-border-left:before { - content: "\f170"; -} -.md-border-outer:before { - content: "\f171"; -} -.md-border-right:before { - content: "\f172"; -} -.md-border-style:before { - content: "\f173"; -} -.md-border-top:before { - content: "\f174"; -} -.md-border-vertical:before { - content: "\f175"; -} -.md-format-align-center:before { - content: "\f176"; -} -.md-format-align-justify:before { - content: "\f177"; -} -.md-format-align-left:before { - content: "\f178"; -} -.md-format-align-right:before { - content: "\f179"; -} -.md-format-bold:before { - content: "\f17a"; -} -.md-format-clear:before { - content: "\f17b"; -} -.md-format-color-fill:before { - content: "\f17c"; -} -.md-format-color-reset:before { - content: "\f17d"; -} -.md-format-color-text:before { - content: "\f17e"; -} -.md-format-indent-decrease:before { - content: "\f17f"; -} -.md-format-indent-increase:before { - content: "\f180"; -} -.md-format-italic:before { - content: "\f181"; -} -.md-format-line-spacing:before { - content: "\f182"; -} -.md-format-list-bulleted:before { - content: "\f183"; -} -.md-format-list-numbered:before { - content: "\f184"; -} -.md-format-paint:before { - content: "\f185"; -} -.md-format-quote:before { - content: "\f186"; -} -.md-format-size:before { - content: "\f187"; -} -.md-format-strikethrough:before { - content: "\f188"; -} -.md-format-textdirection-l-to-r:before { - content: "\f189"; -} -.md-format-textdirection-r-to-l:before { - content: "\f18a"; -} -.md-format-underline:before { - content: "\f18b"; -} -.md-functions:before { - content: "\f18c"; -} -.md-insert-chart:before { - content: "\f18d"; -} -.md-insert-comment:before { - content: "\f18e"; -} -.md-insert-drive-file:before { - content: "\f18f"; -} -.md-insert-emoticon:before { - content: "\f190"; -} -.md-insert-invitation:before { - content: "\f191"; -} -.md-insert-link:before { - content: "\f192"; -} -.md-insert-photo:before { - content: "\f193"; -} -.md-merge-type:before { - content: "\f194"; -} -.md-mode-comment:before { - content: "\f195"; -} -.md-mode-edit:before { - content: "\f196"; -} -.md-publish:before { - content: "\f197"; -} -.md-vertical-align-bottom:before { - content: "\f198"; -} -.md-vertical-align-center:before { - content: "\f199"; -} -.md-vertical-align-top:before { - content: "\f19a"; -} -.md-wrap-text:before { - content: "\f19b"; -} -.md-attachment:before { - content: "\f19c"; -} -.md-cloud:before { - content: "\f19d"; -} -.md-cloud-circle:before { - content: "\f19e"; -} -.md-cloud-done:before { - content: "\f19f"; -} -.md-cloud-download:before { - content: "\f1a0"; -} -.md-cloud-off:before { - content: "\f1a1"; -} -.md-cloud-queue:before { - content: "\f1a2"; -} -.md-cloud-upload:before { - content: "\f1a3"; -} -.md-file-download:before { - content: "\f1a4"; -} -.md-file-upload:before { - content: "\f1a5"; -} -.md-folder:before { - content: "\f1a6"; -} -.md-folder-open:before { - content: "\f1a7"; -} -.md-folder-shared:before { - content: "\f1a8"; -} -.md-cast:before { - content: "\f1a9"; -} -.md-cast-connected:before { - content: "\f1aa"; -} -.md-computer:before { - content: "\f1ab"; -} -.md-desktop-mac:before { - content: "\f1ac"; -} -.md-desktop-windows:before { - content: "\f1ad"; -} -.md-dock:before { - content: "\f1ae"; -} -.md-gamepad:before { - content: "\f1af"; -} -.md-headset:before { - content: "\f1b0"; -} -.md-headset-mic:before { - content: "\f1b1"; -} -.md-keyboard:before { - content: "\f1b2"; -} -.md-keyboard-alt:before { - content: "\f1b3"; -} -.md-keyboard-arrow-down:before { - content: "\f1b4"; -} -.md-keyboard-arrow-left:before { - content: "\f1b5"; -} -.md-keyboard-arrow-right:before { - content: "\f1b6"; -} -.md-keyboard-arrow-up:before { - content: "\f1b7"; -} -.md-keyboard-backspace:before { - content: "\f1b8"; -} -.md-keyboard-capslock:before { - content: "\f1b9"; -} -.md-keyboard-control:before { - content: "\f1ba"; -} -.md-keyboard-hide:before { - content: "\f1bb"; -} -.md-keyboard-return:before { - content: "\f1bc"; -} -.md-keyboard-tab:before { - content: "\f1bd"; -} -.md-keyboard-voice:before { - content: "\f1be"; -} -.md-laptop:before { - content: "\f1bf"; -} -.md-laptop-chromebook:before { - content: "\f1c0"; -} -.md-laptop-mac:before { - content: "\f1c1"; -} -.md-laptop-windows:before { - content: "\f1c2"; -} -.md-memory:before { - content: "\f1c3"; -} -.md-mouse:before { - content: "\f1c4"; -} -.md-phone-android:before { - content: "\f1c5"; -} -.md-phone-iphone:before { - content: "\f1c6"; -} -.md-phonelink:before { - content: "\f1c7"; -} -.md-phonelink-off:before { - content: "\f1c8"; -} -.md-security:before { - content: "\f1c9"; -} -.md-sim-card:before { - content: "\f1ca"; -} -.md-smartphone:before { - content: "\f1cb"; -} -.md-speaker:before { - content: "\f1cc"; -} -.md-tablet:before { - content: "\f1cd"; -} -.md-tablet-android:before { - content: "\f1ce"; -} -.md-tablet-mac:before { - content: "\f1cf"; -} -.md-tv:before { - content: "\f1d0"; -} -.md-watch:before { - content: "\f1d1"; -} -.md-add-to-photos:before { - content: "\f1d2"; -} -.md-adjust:before { - content: "\f1d3"; -} -.md-assistant-photo:before { - content: "\f1d4"; -} -.md-audiotrack:before { - content: "\f1d5"; -} -.md-blur-circular:before { - content: "\f1d6"; -} -.md-blur-linear:before { - content: "\f1d7"; -} -.md-blur-off:before { - content: "\f1d8"; -} -.md-blur-on:before { - content: "\f1d9"; -} -.md-brightness-1:before { - content: "\f1da"; -} -.md-brightness-2:before { - content: "\f1db"; -} -.md-brightness-3:before { - content: "\f1dc"; -} -.md-brightness-4:before { - content: "\f1dd"; -} -.md-brightness-5:before { - content: "\f1de"; -} -.md-brightness-6:before { - content: "\f1df"; -} -.md-brightness-7:before { - content: "\f1e0"; -} -.md-brush:before { - content: "\f1e1"; -} -.md-camera:before { - content: "\f1e2"; -} -.md-camera-alt:before { - content: "\f1e3"; -} -.md-camera-front:before { - content: "\f1e4"; -} -.md-camera-rear:before { - content: "\f1e5"; -} -.md-camera-roll:before { - content: "\f1e6"; -} -.md-center-focus-strong:before { - content: "\f1e7"; -} -.md-center-focus-weak:before { - content: "\f1e8"; -} -.md-collections:before { - content: "\f1e9"; -} -.md-colorize:before { - content: "\f1ea"; -} -.md-color-lens:before { - content: "\f1eb"; -} -.md-compare:before { - content: "\f1ec"; -} -.md-control-point:before { - content: "\f1ed"; -} -.md-control-point-duplicate:before { - content: "\f1ee"; -} -.md-crop:before { - content: "\f1ef"; -} -.md-crop-3-2:before { - content: "\f1f0"; -} -.md-crop-5-4:before { - content: "\f1f1"; -} -.md-crop-7-5:before { - content: "\f1f2"; -} -.md-crop-16-9:before { - content: "\f1f3"; -} -.md-crop-din:before { - content: "\f1f4"; -} -.md-crop-free:before { - content: "\f1f5"; -} -.md-crop-landscape:before { - content: "\f1f6"; -} -.md-crop-original:before { - content: "\f1f7"; -} -.md-crop-portrait:before { - content: "\f1f8"; -} -.md-crop-square:before { - content: "\f1f9"; -} -.md-dehaze:before { - content: "\f1fa"; -} -.md-details:before { - content: "\f1fb"; -} -.md-edit:before { - content: "\f1fc"; -} -.md-exposure:before { - content: "\f1fd"; -} -.md-exposure-minus-1:before { - content: "\f1fe"; -} -.md-exposure-minus-2:before { - content: "\f1ff"; -} -.md-exposure-zero:before { - content: "\f200"; -} -.md-exposure-plus-1:before { - content: "\f201"; -} -.md-exposure-plus-2:before { - content: "\f202"; -} -.md-filter:before { - content: "\f203"; -} -.md-filter-1:before { - content: "\f204"; -} -.md-filter-2:before { - content: "\f205"; -} -.md-filter-3:before { - content: "\f206"; -} -.md-filter-4:before { - content: "\f207"; -} -.md-filter-5:before { - content: "\f208"; -} -.md-filter-6:before { - content: "\f209"; -} -.md-filter-7:before { - content: "\f20a"; -} -.md-filter-8:before { - content: "\f20b"; -} -.md-filter-9:before { - content: "\f20c"; -} -.md-filter-9-plus:before { - content: "\f20d"; -} -.md-filter-b-and-w:before { - content: "\f20e"; -} -.md-filter-center-focus:before { - content: "\f20f"; -} -.md-filter-drama:before { - content: "\f210"; -} -.md-filter-frames:before { - content: "\f211"; -} -.md-filter-hdr:before { - content: "\f212"; -} -.md-filter-none:before { - content: "\f213"; -} -.md-filter-tilt-shift:before { - content: "\f214"; -} -.md-filter-vintage:before { - content: "\f215"; -} -.md-flare:before { - content: "\f216"; -} -.md-flash-auto:before { - content: "\f217"; -} -.md-flash-off:before { - content: "\f218"; -} -.md-flash-on:before { - content: "\f219"; -} -.md-flip:before { - content: "\f21a"; -} -.md-gradient:before { - content: "\f21b"; -} -.md-grain:before { - content: "\f21c"; -} -.md-grid-off:before { - content: "\f21d"; -} -.md-grid-on:before { - content: "\f21e"; -} -.md-hdr-off:before { - content: "\f21f"; -} -.md-hdr-on:before { - content: "\f220"; -} -.md-hdr-strong:before { - content: "\f221"; -} -.md-hdr-weak:before { - content: "\f222"; -} -.md-healing:before { - content: "\f223"; -} -.md-image:before { - content: "\f224"; -} -.md-image-aspect-ratio:before { - content: "\f225"; -} -.md-iso:before { - content: "\f226"; -} -.md-landscape:before { - content: "\f227"; -} -.md-leak-add:before { - content: "\f228"; -} -.md-leak-remove:before { - content: "\f229"; -} -.md-lens:before { - content: "\f22a"; -} -.md-looks:before { - content: "\f22b"; -} -.md-looks-1:before { - content: "\f22c"; -} -.md-looks-2:before { - content: "\f22d"; -} -.md-looks-3:before { - content: "\f22e"; -} -.md-looks-4:before { - content: "\f22f"; -} -.md-looks-5:before { - content: "\f230"; -} -.md-looks-6:before { - content: "\f231"; -} -.md-loupe:before { - content: "\f232"; -} -.md-movie-creation:before { - content: "\f233"; -} -.md-nature:before { - content: "\f234"; -} -.md-nature-people:before { - content: "\f235"; -} -.md-navigate-before:before { - content: "\f236"; -} -.md-navigate-next:before { - content: "\f237"; -} -.md-palette:before { - content: "\f238"; -} -.md-panorama:before { - content: "\f239"; -} -.md-panorama-fisheye:before { - content: "\f23a"; -} -.md-panorama-horizontal:before { - content: "\f23b"; -} -.md-panorama-vertical:before { - content: "\f23c"; -} -.md-panorama-wide-angle:before { - content: "\f23d"; -} -.md-photo:before { - content: "\f23e"; -} -.md-photo-album:before { - content: "\f23f"; -} -.md-photo-camera:before { - content: "\f240"; -} -.md-photo-library:before { - content: "\f241"; -} -.md-portrait:before { - content: "\f242"; -} -.md-remove-red-eye:before { - content: "\f243"; -} -.md-rotate-left:before { - content: "\f244"; -} -.md-rotate-right:before { - content: "\f245"; -} -.md-slideshow:before { - content: "\f246"; -} -.md-straighten:before { - content: "\f247"; -} -.md-style:before { - content: "\f248"; -} -.md-switch-camera:before { - content: "\f249"; -} -.md-switch-video:before { - content: "\f24a"; -} -.md-tag-faces:before { - content: "\f24b"; -} -.md-texture:before { - content: "\f24c"; -} -.md-timelapse:before { - content: "\f24d"; -} -.md-timer:before { - content: "\f24e"; -} -.md-timer-3:before { - content: "\f24f"; -} -.md-timer-10:before { - content: "\f250"; -} -.md-timer-auto:before { - content: "\f251"; -} -.md-timer-off:before { - content: "\f252"; -} -.md-tonality:before { - content: "\f253"; -} -.md-transform:before { - content: "\f254"; -} -.md-tune:before { - content: "\f255"; -} -.md-wb-auto:before { - content: "\f256"; -} -.md-wb-cloudy:before { - content: "\f257"; -} -.md-wb-incandescent:before { - content: "\f258"; -} -.md-wb-irradescent:before { - content: "\f259"; -} -.md-wb-sunny:before { - content: "\f25a"; -} -.md-beenhere:before { - content: "\f25b"; -} -.md-directions:before { - content: "\f25c"; -} -.md-directions-bike:before { - content: "\f25d"; -} -.md-directions-bus:before { - content: "\f25e"; -} -.md-directions-car:before { - content: "\f25f"; -} -.md-directions-ferry:before { - content: "\f260"; -} -.md-directions-subway:before { - content: "\f261"; -} -.md-directions-train:before { - content: "\f262"; -} -.md-directions-transit:before { - content: "\f263"; -} -.md-directions-walk:before { - content: "\f264"; -} -.md-flight:before { - content: "\f265"; -} -.md-hotel:before { - content: "\f266"; -} -.md-layers:before { - content: "\f267"; -} -.md-layers-clear:before { - content: "\f268"; -} -.md-local-airport:before { - content: "\f269"; -} -.md-local-atm:before { - content: "\f26a"; -} -.md-local-attraction:before { - content: "\f26b"; -} -.md-local-bar:before { - content: "\f26c"; -} -.md-local-cafe:before { - content: "\f26d"; -} -.md-local-car-wash:before { - content: "\f26e"; -} -.md-local-convenience-store:before { - content: "\f26f"; -} -.md-local-drink:before { - content: "\f270"; -} -.md-local-florist:before { - content: "\f271"; -} -.md-local-gas-station:before { - content: "\f272"; -} -.md-local-grocery-store:before { - content: "\f273"; -} -.md-local-hospital:before { - content: "\f274"; -} -.md-local-hotel:before { - content: "\f275"; -} -.md-local-laundry-service:before { - content: "\f276"; -} -.md-local-library:before { - content: "\f277"; -} -.md-local-mall:before { - content: "\f278"; -} -.md-local-movies:before { - content: "\f279"; -} -.md-local-offer:before { - content: "\f27a"; -} -.md-local-parking:before { - content: "\f27b"; -} -.md-local-pharmacy:before { - content: "\f27c"; -} -.md-local-phone:before { - content: "\f27d"; -} -.md-local-pizza:before { - content: "\f27e"; -} -.md-local-play:before { - content: "\f27f"; -} -.md-local-post-office:before { - content: "\f280"; -} -.md-local-print-shop:before { - content: "\f281"; -} -.md-local-restaurant:before { - content: "\f282"; -} -.md-local-see:before { - content: "\f283"; -} -.md-local-shipping:before { - content: "\f284"; -} -.md-local-taxi:before { - content: "\f285"; -} -.md-location-history:before { - content: "\f286"; -} -.md-map:before { - content: "\f287"; -} -.md-my-location:before { - content: "\f288"; -} -.md-navigation:before { - content: "\f289"; -} -.md-pin-drop:before { - content: "\f28a"; -} -.md-place:before { - content: "\f28b"; -} -.md-rate-review:before { - content: "\f28c"; -} -.md-restaurant-menu:before { - content: "\f28d"; -} -.md-satellite:before { - content: "\f28e"; -} -.md-store-mall-directory:before { - content: "\f28f"; -} -.md-terrain:before { - content: "\f290"; -} -.md-traffic:before { - content: "\f291"; -} -.md-apps:before { - content: "\f292"; -} -.md-cancel:before { - content: "\f293"; -} -.md-arrow-drop-down-circle:before { - content: "\f294"; -} -.md-arrow-drop-down:before { - content: "\f295"; -} -.md-arrow-drop-up:before { - content: "\f296"; -} -.md-arrow-back:before { - content: "\f297"; -} -.md-arrow-forward:before { - content: "\f298"; -} -.md-check:before { - content: "\f299"; -} -.md-close:before { - content: "\f29a"; -} -.md-chevron-left:before { - content: "\f29b"; -} -.md-chevron-right:before { - content: "\f29c"; -} -.md-expand-less:before { - content: "\f29d"; -} -.md-expand-more:before { - content: "\f29e"; -} -.md-fullscreen:before { - content: "\f29f"; -} -.md-fullscreen-exit:before { - content: "\f2a0"; -} -.md-menu:before { - content: "\f2a1"; -} -.md-more-horiz:before { - content: "\f2a2"; -} -.md-more-vert:before { - content: "\f2a3"; -} -.md-refresh:before { - content: "\f2a4"; -} -.md-unfold-less:before { - content: "\f2a5"; -} -.md-unfold-more:before { - content: "\f2a6"; -} -.md-adb:before { - content: "\f2a7"; -} -.md-bluetooth-audio:before { - content: "\f2a8"; -} -.md-disc-full:before { - content: "\f2a9"; -} -.md-dnd-forwardslash:before { - content: "\f2aa"; -} -.md-do-not-disturb:before { - content: "\f2ab"; -} -.md-drive-eta:before { - content: "\f2ac"; -} -.md-event-available:before { - content: "\f2ad"; -} -.md-event-busy:before { - content: "\f2ae"; -} -.md-event-note:before { - content: "\f2af"; -} -.md-folder-special:before { - content: "\f2b0"; -} -.md-mms:before { - content: "\f2b1"; -} -.md-more:before { - content: "\f2b2"; -} -.md-network-locked:before { - content: "\f2b3"; -} -.md-phone-bluetooth-speaker:before { - content: "\f2b4"; -} -.md-phone-forwarded:before { - content: "\f2b5"; -} -.md-phone-in-talk:before { - content: "\f2b6"; -} -.md-phone-locked:before { - content: "\f2b7"; -} -.md-phone-missed:before { - content: "\f2b8"; -} -.md-phone-paused:before { - content: "\f2b9"; -} -.md-play-download:before { - content: "\f2ba"; -} -.md-play-install:before { - content: "\f2bb"; -} -.md-sd-card:before { - content: "\f2bc"; -} -.md-sim-card-alert:before { - content: "\f2bd"; -} -.md-sms:before { - content: "\f2be"; -} -.md-sms-failed:before { - content: "\f2bf"; -} -.md-sync:before { - content: "\f2c0"; -} -.md-sync-disabled:before { - content: "\f2c1"; -} -.md-sync-problem:before { - content: "\f2c2"; -} -.md-system-update:before { - content: "\f2c3"; -} -.md-tap-and-play:before { - content: "\f2c4"; -} -.md-time-to-leave:before { - content: "\f2c5"; -} -.md-vibration:before { - content: "\f2c6"; -} -.md-voice-chat:before { - content: "\f2c7"; -} -.md-vpn-lock:before { - content: "\f2c8"; -} -.md-cake:before { - content: "\f2c9"; -} -.md-domain:before { - content: "\f2ca"; -} -.md-location-city:before { - content: "\f2cb"; -} -.md-mood:before { - content: "\f2cc"; -} -.md-notifications-none:before { - content: "\f2cd"; -} -.md-notifications:before { - content: "\f2ce"; -} -.md-notifications-off:before { - content: "\f2cf"; -} -.md-notifications-on:before { - content: "\f2d0"; -} -.md-notifications-paused:before { - content: "\f2d1"; -} -.md-pages:before { - content: "\f2d2"; -} -.md-party-mode:before { - content: "\f2d3"; -} -.md-group:before { - content: "\f2d4"; -} -.md-group-add:before { - content: "\f2d5"; -} -.md-people:before { - content: "\f2d6"; -} -.md-people-outline:before { - content: "\f2d7"; -} -.md-person:before { - content: "\f2d8"; -} -.md-person-add:before { - content: "\f2d9"; -} -.md-person-outline:before { - content: "\f2da"; -} -.md-plus-one:before { - content: "\f2db"; -} -.md-poll:before { - content: "\f2dc"; -} -.md-public:before { - content: "\f2dd"; -} -.md-school:before { - content: "\f2de"; -} -.md-share:before { - content: "\f2df"; -} -.md-whatshot:before { - content: "\f2e0"; -} -.md-check-box:before { - content: "\f2e1"; -} -.md-check-box-outline-blank:before { - content: "\f2e2"; -} -.md-radio-button-off:before { - content: "\f2e3"; -} -.md-radio-button-on:before { - content: "\f2e4"; -} -.md-star:before { - content: "\f2e5"; -} -.md-star-half:before { - content: "\f2e6"; -} -.md-star-outline:before { - content: "\f2e7"; -} -@font-face { - font-family: 'simple-line-icons'; - src: url('../fonts/Simple-Line-Icons.eot?-i3a2kk'); - src: url('../fonts/Simple-Line-Icons.eot?#iefix-i3a2kk') format('embedded-opentype'), url('../fonts/Simple-Line-Icons.ttf?-i3a2kk') format('truetype'), url('../fonts/Simple-Line-Icons.woff2?-i3a2kk') format('woff2'), url('../fonts/Simple-Line-Icons.woff?-i3a2kk') format('woff'), url('../fonts/Simple-Line-Icons.svg?-i3a2kk#simple-line-icons') format('svg'); - font-weight: normal; - font-style: normal; -} -/* - Use the following CSS code if you want to have a class per icon. - Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: -*/ -.icon-user, -.icon-people, -.icon-user-female, -.icon-user-follow, -.icon-user-following, -.icon-user-unfollow, -.icon-login, -.icon-logout, -.icon-emotsmile, -.icon-phone, -.icon-call-end, -.icon-call-in, -.icon-call-out, -.icon-map, -.icon-location-pin, -.icon-direction, -.icon-directions, -.icon-compass, -.icon-layers, -.icon-menu, -.icon-list, -.icon-options-vertical, -.icon-options, -.icon-arrow-down, -.icon-arrow-left, -.icon-arrow-right, -.icon-arrow-up, -.icon-arrow-up-circle, -.icon-arrow-left-circle, -.icon-arrow-right-circle, -.icon-arrow-down-circle, -.icon-check, -.icon-clock, -.icon-plus, -.icon-close, -.icon-trophy, -.icon-screen-smartphone, -.icon-screen-desktop, -.icon-plane, -.icon-notebook, -.icon-mustache, -.icon-mouse, -.icon-magnet, -.icon-energy, -.icon-disc, -.icon-cursor, -.icon-cursor-move, -.icon-crop, -.icon-chemistry, -.icon-speedometer, -.icon-shield, -.icon-screen-tablet, -.icon-magic-wand, -.icon-hourglass, -.icon-graduation, -.icon-ghost, -.icon-game-controller, -.icon-fire, -.icon-eyeglass, -.icon-envelope-open, -.icon-envelope-letter, -.icon-bell, -.icon-badge, -.icon-anchor, -.icon-wallet, -.icon-vector, -.icon-speech, -.icon-puzzle, -.icon-printer, -.icon-present, -.icon-playlist, -.icon-pin, -.icon-picture, -.icon-handbag, -.icon-globe-alt, -.icon-globe, -.icon-folder-alt, -.icon-folder, -.icon-film, -.icon-feed, -.icon-drop, -.icon-drawar, -.icon-docs, -.icon-doc, -.icon-diamond, -.icon-cup, -.icon-calculator, -.icon-bubbles, -.icon-briefcase, -.icon-book-open, -.icon-basket-loaded, -.icon-basket, -.icon-bag, -.icon-action-undo, -.icon-action-redo, -.icon-wrench, -.icon-umbrella, -.icon-trash, -.icon-tag, -.icon-support, -.icon-frame, -.icon-size-fullscreen, -.icon-size-actual, -.icon-shuffle, -.icon-share-alt, -.icon-share, -.icon-rocket, -.icon-question, -.icon-pie-chart, -.icon-pencil, -.icon-note, -.icon-loop, -.icon-home, -.icon-grid, -.icon-graph, -.icon-microphone, -.icon-music-tone-alt, -.icon-music-tone, -.icon-earphones-alt, -.icon-earphones, -.icon-equalizer, -.icon-like, -.icon-dislike, -.icon-control-start, -.icon-control-rewind, -.icon-control-play, -.icon-control-pause, -.icon-control-forward, -.icon-control-end, -.icon-volume-1, -.icon-volume-2, -.icon-volume-off, -.icon-calender, -.icon-bulb, -.icon-chart, -.icon-ban, -.icon-bubble, -.icon-camrecorder, -.icon-camera, -.icon-cloud-download, -.icon-cloud-upload, -.icon-envelope, -.icon-eye, -.icon-flag, -.icon-heart, -.icon-info, -.icon-key, -.icon-link, -.icon-lock, -.icon-lock-open, -.icon-magnifier, -.icon-magnifier-add, -.icon-magnifier-remove, -.icon-paper-clip, -.icon-paper-plane, -.icon-power, -.icon-refresh, -.icon-reload, -.icon-settings, -.icon-star, -.icon-symble-female, -.icon-symbol-male, -.icon-target, -.icon-credit-card, -.icon-paypal, -.icon-social-tumblr, -.icon-social-twitter, -.icon-social-facebook, -.icon-social-instagram, -.icon-social-linkedin, -.icon-social-pintarest, -.icon-social-github, -.icon-social-gplus, -.icon-social-reddit, -.icon-social-skype, -.icon-social-dribbble, -.icon-social-behance, -.icon-social-foursqare, -.icon-social-soundcloud, -.icon-social-spotify, -.icon-social-stumbleupon, -.icon-social-youtube, -.icon-social-dropbox { - font-family: 'simple-line-icons'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.icon-user:before { - content: "\e005"; -} -.icon-people:before { - content: "\e001"; -} -.icon-user-female:before { - content: "\e000"; -} -.icon-user-follow:before { - content: "\e002"; -} -.icon-user-following:before { - content: "\e003"; -} -.icon-user-unfollow:before { - content: "\e004"; -} -.icon-login:before { - content: "\e066"; -} -.icon-logout:before { - content: "\e065"; -} -.icon-emotsmile:before { - content: "\e021"; -} -.icon-phone:before { - content: "\e600"; -} -.icon-call-end:before { - content: "\e048"; -} -.icon-call-in:before { - content: "\e047"; -} -.icon-call-out:before { - content: "\e046"; -} -.icon-map:before { - content: "\e033"; -} -.icon-location-pin:before { - content: "\e096"; -} -.icon-direction:before { - content: "\e042"; -} -.icon-directions:before { - content: "\e041"; -} -.icon-compass:before { - content: "\e045"; -} -.icon-layers:before { - content: "\e034"; -} -.icon-menu:before { - content: "\e601"; -} -.icon-list:before { - content: "\e067"; -} -.icon-options-vertical:before { - content: "\e602"; -} -.icon-options:before { - content: "\e603"; -} -.icon-arrow-down:before { - content: "\e604"; -} -.icon-arrow-left:before { - content: "\e605"; -} -.icon-arrow-right:before { - content: "\e606"; -} -.icon-arrow-up:before { - content: "\e607"; -} -.icon-arrow-up-circle:before { - content: "\e078"; -} -.icon-arrow-left-circle:before { - content: "\e07a"; -} -.icon-arrow-right-circle:before { - content: "\e079"; -} -.icon-arrow-down-circle:before { - content: "\e07b"; -} -.icon-check:before { - content: "\e080"; -} -.icon-clock:before { - content: "\e081"; -} -.icon-plus:before { - content: "\e095"; -} -.icon-close:before { - content: "\e082"; -} -.icon-trophy:before { - content: "\e006"; -} -.icon-screen-smartphone:before { - content: "\e010"; -} -.icon-screen-desktop:before { - content: "\e011"; -} -.icon-plane:before { - content: "\e012"; -} -.icon-notebook:before { - content: "\e013"; -} -.icon-mustache:before { - content: "\e014"; -} -.icon-mouse:before { - content: "\e015"; -} -.icon-magnet:before { - content: "\e016"; -} -.icon-energy:before { - content: "\e020"; -} -.icon-disc:before { - content: "\e022"; -} -.icon-cursor:before { - content: "\e06e"; -} -.icon-cursor-move:before { - content: "\e023"; -} -.icon-crop:before { - content: "\e024"; -} -.icon-chemistry:before { - content: "\e026"; -} -.icon-speedometer:before { - content: "\e007"; -} -.icon-shield:before { - content: "\e00e"; -} -.icon-screen-tablet:before { - content: "\e00f"; -} -.icon-magic-wand:before { - content: "\e017"; -} -.icon-hourglass:before { - content: "\e018"; -} -.icon-graduation:before { - content: "\e019"; -} -.icon-ghost:before { - content: "\e01a"; -} -.icon-game-controller:before { - content: "\e01b"; -} -.icon-fire:before { - content: "\e01c"; -} -.icon-eyeglass:before { - content: "\e01d"; -} -.icon-envelope-open:before { - content: "\e01e"; -} -.icon-envelope-letter:before { - content: "\e01f"; -} -.icon-bell:before { - content: "\e027"; -} -.icon-badge:before { - content: "\e028"; -} -.icon-anchor:before { - content: "\e029"; -} -.icon-wallet:before { - content: "\e02a"; -} -.icon-vector:before { - content: "\e02b"; -} -.icon-speech:before { - content: "\e02c"; -} -.icon-puzzle:before { - content: "\e02d"; -} -.icon-printer:before { - content: "\e02e"; -} -.icon-present:before { - content: "\e02f"; -} -.icon-playlist:before { - content: "\e030"; -} -.icon-pin:before { - content: "\e031"; -} -.icon-picture:before { - content: "\e032"; -} -.icon-handbag:before { - content: "\e035"; -} -.icon-globe-alt:before { - content: "\e036"; -} -.icon-globe:before { - content: "\e037"; -} -.icon-folder-alt:before { - content: "\e039"; -} -.icon-folder:before { - content: "\e089"; -} -.icon-film:before { - content: "\e03a"; -} -.icon-feed:before { - content: "\e03b"; -} -.icon-drop:before { - content: "\e03e"; -} -.icon-drawar:before { - content: "\e03f"; -} -.icon-docs:before { - content: "\e040"; -} -.icon-doc:before { - content: "\e085"; -} -.icon-diamond:before { - content: "\e043"; -} -.icon-cup:before { - content: "\e044"; -} -.icon-calculator:before { - content: "\e049"; -} -.icon-bubbles:before { - content: "\e04a"; -} -.icon-briefcase:before { - content: "\e04b"; -} -.icon-book-open:before { - content: "\e04c"; -} -.icon-basket-loaded:before { - content: "\e04d"; -} -.icon-basket:before { - content: "\e04e"; -} -.icon-bag:before { - content: "\e04f"; -} -.icon-action-undo:before { - content: "\e050"; -} -.icon-action-redo:before { - content: "\e051"; -} -.icon-wrench:before { - content: "\e052"; -} -.icon-umbrella:before { - content: "\e053"; -} -.icon-trash:before { - content: "\e054"; -} -.icon-tag:before { - content: "\e055"; -} -.icon-support:before { - content: "\e056"; -} -.icon-frame:before { - content: "\e038"; -} -.icon-size-fullscreen:before { - content: "\e057"; -} -.icon-size-actual:before { - content: "\e058"; -} -.icon-shuffle:before { - content: "\e059"; -} -.icon-share-alt:before { - content: "\e05a"; -} -.icon-share:before { - content: "\e05b"; -} -.icon-rocket:before { - content: "\e05c"; -} -.icon-question:before { - content: "\e05d"; -} -.icon-pie-chart:before { - content: "\e05e"; -} -.icon-pencil:before { - content: "\e05f"; -} -.icon-note:before { - content: "\e060"; -} -.icon-loop:before { - content: "\e064"; -} -.icon-home:before { - content: "\e069"; -} -.icon-grid:before { - content: "\e06a"; -} -.icon-graph:before { - content: "\e06b"; -} -.icon-microphone:before { - content: "\e063"; -} -.icon-music-tone-alt:before { - content: "\e061"; -} -.icon-music-tone:before { - content: "\e062"; -} -.icon-earphones-alt:before { - content: "\e03c"; -} -.icon-earphones:before { - content: "\e03d"; -} -.icon-equalizer:before { - content: "\e06c"; -} -.icon-like:before { - content: "\e068"; -} -.icon-dislike:before { - content: "\e06d"; -} -.icon-control-start:before { - content: "\e06f"; -} -.icon-control-rewind:before { - content: "\e070"; -} -.icon-control-play:before { - content: "\e071"; -} -.icon-control-pause:before { - content: "\e072"; -} -.icon-control-forward:before { - content: "\e073"; -} -.icon-control-end:before { - content: "\e074"; -} -.icon-volume-1:before { - content: "\e09f"; -} -.icon-volume-2:before { - content: "\e0a0"; -} -.icon-volume-off:before { - content: "\e0a1"; -} -.icon-calender:before { - content: "\e075"; -} -.icon-bulb:before { - content: "\e076"; -} -.icon-chart:before { - content: "\e077"; -} -.icon-ban:before { - content: "\e07c"; -} -.icon-bubble:before { - content: "\e07d"; -} -.icon-camrecorder:before { - content: "\e07e"; -} -.icon-camera:before { - content: "\e07f"; -} -.icon-cloud-download:before { - content: "\e083"; -} -.icon-cloud-upload:before { - content: "\e084"; -} -.icon-envelope:before { - content: "\e086"; -} -.icon-eye:before { - content: "\e087"; -} -.icon-flag:before { - content: "\e088"; -} -.icon-heart:before { - content: "\e08a"; -} -.icon-info:before { - content: "\e08b"; -} -.icon-key:before { - content: "\e08c"; -} -.icon-link:before { - content: "\e08d"; -} -.icon-lock:before { - content: "\e08e"; -} -.icon-lock-open:before { - content: "\e08f"; -} -.icon-magnifier:before { - content: "\e090"; -} -.icon-magnifier-add:before { - content: "\e091"; -} -.icon-magnifier-remove:before { - content: "\e092"; -} -.icon-paper-clip:before { - content: "\e093"; -} -.icon-paper-plane:before { - content: "\e094"; -} -.icon-power:before { - content: "\e097"; -} -.icon-refresh:before { - content: "\e098"; -} -.icon-reload:before { - content: "\e099"; -} -.icon-settings:before { - content: "\e09a"; -} -.icon-star:before { - content: "\e09b"; -} -.icon-symble-female:before { - content: "\e09c"; -} -.icon-symbol-male:before { - content: "\e09d"; -} -.icon-target:before { - content: "\e09e"; -} -.icon-credit-card:before { - content: "\e025"; -} -.icon-paypal:before { - content: "\e608"; -} -.icon-social-tumblr:before { - content: "\e00a"; -} -.icon-social-twitter:before { - content: "\e009"; -} -.icon-social-facebook:before { - content: "\e00b"; -} -.icon-social-instagram:before { - content: "\e609"; -} -.icon-social-linkedin:before { - content: "\e60a"; -} -.icon-social-pintarest:before { - content: "\e60b"; -} -.icon-social-github:before { - content: "\e60c"; -} -.icon-social-gplus:before { - content: "\e60d"; -} -.icon-social-reddit:before { - content: "\e60e"; -} -.icon-social-skype:before { - content: "\e60f"; -} -.icon-social-dribbble:before { - content: "\e00d"; -} -.icon-social-behance:before { - content: "\e610"; -} -.icon-social-foursqare:before { - content: "\e611"; -} -.icon-social-soundcloud:before { - content: "\e612"; -} -.icon-social-spotify:before { - content: "\e613"; -} -.icon-social-stumbleupon:before { - content: "\e614"; -} -.icon-social-youtube:before { - content: "\e008"; -} -.icon-social-dropbox:before { - content: "\e00c"; -} -/*! -Ionicons, v1.5.0 -Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ -https://twitter.com/benjsperry https://twitter.com/ionicframework -MIT License: https://github.com/driftyco/ionicons -*/ -@font-face { - font-family: "Ionicons"; - src: url("../fonts/ionicons.eot?v=1.5.0"); - src: url("../fonts/ionicons.eot?v=1.5.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=1.5.0") format("truetype"), url("../fonts/ionicons.woff?v=1.5.0") format("woff"), url("../fonts/ionicons.svg?v=1.5.0#Ionicons") format("svg"); - font-weight: normal; - font-style: normal; -} -.ion, -.ion-loading-a, -.ion-loading-b, -.ion-loading-c, -.ion-loading-d, -.ion-looping, -.ion-refreshing, -.ion-ios7-reloading, -.ionicons, -.ion-alert, -.ion-alert-circled, -.ion-android-add, -.ion-android-add-contact, -.ion-android-alarm, -.ion-android-archive, -.ion-android-arrow-back, -.ion-android-arrow-down-left, -.ion-android-arrow-down-right, -.ion-android-arrow-forward, -.ion-android-arrow-up-left, -.ion-android-arrow-up-right, -.ion-android-battery, -.ion-android-book, -.ion-android-calendar, -.ion-android-call, -.ion-android-camera, -.ion-android-chat, -.ion-android-checkmark, -.ion-android-clock, -.ion-android-close, -.ion-android-contact, -.ion-android-contacts, -.ion-android-data, -.ion-android-developer, -.ion-android-display, -.ion-android-download, -.ion-android-drawer, -.ion-android-dropdown, -.ion-android-earth, -.ion-android-folder, -.ion-android-forums, -.ion-android-friends, -.ion-android-hand, -.ion-android-image, -.ion-android-inbox, -.ion-android-information, -.ion-android-keypad, -.ion-android-lightbulb, -.ion-android-locate, -.ion-android-location, -.ion-android-mail, -.ion-android-microphone, -.ion-android-mixer, -.ion-android-more, -.ion-android-note, -.ion-android-playstore, -.ion-android-printer, -.ion-android-promotion, -.ion-android-reminder, -.ion-android-remove, -.ion-android-search, -.ion-android-send, -.ion-android-settings, -.ion-android-share, -.ion-android-social, -.ion-android-social-user, -.ion-android-sort, -.ion-android-stair-drawer, -.ion-android-star, -.ion-android-stopwatch, -.ion-android-storage, -.ion-android-system-back, -.ion-android-system-home, -.ion-android-system-windows, -.ion-android-timer, -.ion-android-trash, -.ion-android-user-menu, -.ion-android-volume, -.ion-android-wifi, -.ion-aperture, -.ion-archive, -.ion-arrow-down-a, -.ion-arrow-down-b, -.ion-arrow-down-c, -.ion-arrow-expand, -.ion-arrow-graph-down-left, -.ion-arrow-graph-down-right, -.ion-arrow-graph-up-left, -.ion-arrow-graph-up-right, -.ion-arrow-left-a, -.ion-arrow-left-b, -.ion-arrow-left-c, -.ion-arrow-move, -.ion-arrow-resize, -.ion-arrow-return-left, -.ion-arrow-return-right, -.ion-arrow-right-a, -.ion-arrow-right-b, -.ion-arrow-right-c, -.ion-arrow-shrink, -.ion-arrow-swap, -.ion-arrow-up-a, -.ion-arrow-up-b, -.ion-arrow-up-c, -.ion-asterisk, -.ion-at, -.ion-bag, -.ion-battery-charging, -.ion-battery-empty, -.ion-battery-full, -.ion-battery-half, -.ion-battery-low, -.ion-beaker, -.ion-beer, -.ion-bluetooth, -.ion-bonfire, -.ion-bookmark, -.ion-briefcase, -.ion-bug, -.ion-calculator, -.ion-calendar, -.ion-camera, -.ion-card, -.ion-cash, -.ion-chatbox, -.ion-chatbox-working, -.ion-chatboxes, -.ion-chatbubble, -.ion-chatbubble-working, -.ion-chatbubbles, -.ion-checkmark, -.ion-checkmark-circled, -.ion-checkmark-round, -.ion-chevron-down, -.ion-chevron-left, -.ion-chevron-right, -.ion-chevron-up, -.ion-clipboard, -.ion-clock, -.ion-close, -.ion-close-circled, -.ion-close-round, -.ion-closed-captioning, -.ion-cloud, -.ion-code, -.ion-code-download, -.ion-code-working, -.ion-coffee, -.ion-compass, -.ion-compose, -.ion-connection-bars, -.ion-contrast, -.ion-cube, -.ion-disc, -.ion-document, -.ion-document-text, -.ion-drag, -.ion-earth, -.ion-edit, -.ion-egg, -.ion-eject, -.ion-email, -.ion-eye, -.ion-eye-disabled, -.ion-female, -.ion-filing, -.ion-film-marker, -.ion-fireball, -.ion-flag, -.ion-flame, -.ion-flash, -.ion-flash-off, -.ion-flask, -.ion-folder, -.ion-fork, -.ion-fork-repo, -.ion-forward, -.ion-funnel, -.ion-game-controller-a, -.ion-game-controller-b, -.ion-gear-a, -.ion-gear-b, -.ion-grid, -.ion-hammer, -.ion-happy, -.ion-headphone, -.ion-heart, -.ion-heart-broken, -.ion-help, -.ion-help-buoy, -.ion-help-circled, -.ion-home, -.ion-icecream, -.ion-icon-social-google-plus, -.ion-icon-social-google-plus-outline, -.ion-image, -.ion-images, -.ion-information, -.ion-information-circled, -.ion-ionic, -.ion-ios7-alarm, -.ion-ios7-alarm-outline, -.ion-ios7-albums, -.ion-ios7-albums-outline, -.ion-ios7-americanfootball, -.ion-ios7-americanfootball-outline, -.ion-ios7-analytics, -.ion-ios7-analytics-outline, -.ion-ios7-arrow-back, -.ion-ios7-arrow-down, -.ion-ios7-arrow-forward, -.ion-ios7-arrow-left, -.ion-ios7-arrow-right, -.ion-ios7-arrow-thin-down, -.ion-ios7-arrow-thin-left, -.ion-ios7-arrow-thin-right, -.ion-ios7-arrow-thin-up, -.ion-ios7-arrow-up, -.ion-ios7-at, -.ion-ios7-at-outline, -.ion-ios7-barcode, -.ion-ios7-barcode-outline, -.ion-ios7-baseball, -.ion-ios7-baseball-outline, -.ion-ios7-basketball, -.ion-ios7-basketball-outline, -.ion-ios7-bell, -.ion-ios7-bell-outline, -.ion-ios7-bolt, -.ion-ios7-bolt-outline, -.ion-ios7-bookmarks, -.ion-ios7-bookmarks-outline, -.ion-ios7-box, -.ion-ios7-box-outline, -.ion-ios7-briefcase, -.ion-ios7-briefcase-outline, -.ion-ios7-browsers, -.ion-ios7-browsers-outline, -.ion-ios7-calculator, -.ion-ios7-calculator-outline, -.ion-ios7-calendar, -.ion-ios7-calendar-outline, -.ion-ios7-camera, -.ion-ios7-camera-outline, -.ion-ios7-cart, -.ion-ios7-cart-outline, -.ion-ios7-chatboxes, -.ion-ios7-chatboxes-outline, -.ion-ios7-chatbubble, -.ion-ios7-chatbubble-outline, -.ion-ios7-checkmark, -.ion-ios7-checkmark-empty, -.ion-ios7-checkmark-outline, -.ion-ios7-circle-filled, -.ion-ios7-circle-outline, -.ion-ios7-clock, -.ion-ios7-clock-outline, -.ion-ios7-close, -.ion-ios7-close-empty, -.ion-ios7-close-outline, -.ion-ios7-cloud, -.ion-ios7-cloud-download, -.ion-ios7-cloud-download-outline, -.ion-ios7-cloud-outline, -.ion-ios7-cloud-upload, -.ion-ios7-cloud-upload-outline, -.ion-ios7-cloudy, -.ion-ios7-cloudy-night, -.ion-ios7-cloudy-night-outline, -.ion-ios7-cloudy-outline, -.ion-ios7-cog, -.ion-ios7-cog-outline, -.ion-ios7-compose, -.ion-ios7-compose-outline, -.ion-ios7-contact, -.ion-ios7-contact-outline, -.ion-ios7-copy, -.ion-ios7-copy-outline, -.ion-ios7-download, -.ion-ios7-download-outline, -.ion-ios7-drag, -.ion-ios7-email, -.ion-ios7-email-outline, -.ion-ios7-expand, -.ion-ios7-eye, -.ion-ios7-eye-outline, -.ion-ios7-fastforward, -.ion-ios7-fastforward-outline, -.ion-ios7-filing, -.ion-ios7-filing-outline, -.ion-ios7-film, -.ion-ios7-film-outline, -.ion-ios7-flag, -.ion-ios7-flag-outline, -.ion-ios7-folder, -.ion-ios7-folder-outline, -.ion-ios7-football, -.ion-ios7-football-outline, -.ion-ios7-gear, -.ion-ios7-gear-outline, -.ion-ios7-glasses, -.ion-ios7-glasses-outline, -.ion-ios7-heart, -.ion-ios7-heart-outline, -.ion-ios7-help, -.ion-ios7-help-empty, -.ion-ios7-help-outline, -.ion-ios7-home, -.ion-ios7-home-outline, -.ion-ios7-infinite, -.ion-ios7-infinite-outline, -.ion-ios7-information, -.ion-ios7-information-empty, -.ion-ios7-information-outline, -.ion-ios7-ionic-outline, -.ion-ios7-keypad, -.ion-ios7-keypad-outline, -.ion-ios7-lightbulb, -.ion-ios7-lightbulb-outline, -.ion-ios7-location, -.ion-ios7-location-outline, -.ion-ios7-locked, -.ion-ios7-locked-outline, -.ion-ios7-loop, -.ion-ios7-loop-strong, -.ion-ios7-medkit, -.ion-ios7-medkit-outline, -.ion-ios7-mic, -.ion-ios7-mic-off, -.ion-ios7-mic-outline, -.ion-ios7-minus, -.ion-ios7-minus-empty, -.ion-ios7-minus-outline, -.ion-ios7-monitor, -.ion-ios7-monitor-outline, -.ion-ios7-moon, -.ion-ios7-moon-outline, -.ion-ios7-more, -.ion-ios7-more-outline, -.ion-ios7-musical-note, -.ion-ios7-musical-notes, -.ion-ios7-navigate, -.ion-ios7-navigate-outline, -.ion-ios7-paper, -.ion-ios7-paper-outline, -.ion-ios7-paperplane, -.ion-ios7-paperplane-outline, -.ion-ios7-partlysunny, -.ion-ios7-partlysunny-outline, -.ion-ios7-pause, -.ion-ios7-pause-outline, -.ion-ios7-paw, -.ion-ios7-paw-outline, -.ion-ios7-people, -.ion-ios7-people-outline, -.ion-ios7-person, -.ion-ios7-person-outline, -.ion-ios7-personadd, -.ion-ios7-personadd-outline, -.ion-ios7-photos, -.ion-ios7-photos-outline, -.ion-ios7-pie, -.ion-ios7-pie-outline, -.ion-ios7-play, -.ion-ios7-play-outline, -.ion-ios7-plus, -.ion-ios7-plus-empty, -.ion-ios7-plus-outline, -.ion-ios7-pricetag, -.ion-ios7-pricetag-outline, -.ion-ios7-pricetags, -.ion-ios7-pricetags-outline, -.ion-ios7-printer, -.ion-ios7-printer-outline, -.ion-ios7-pulse, -.ion-ios7-pulse-strong, -.ion-ios7-rainy, -.ion-ios7-rainy-outline, -.ion-ios7-recording, -.ion-ios7-recording-outline, -.ion-ios7-redo, -.ion-ios7-redo-outline, -.ion-ios7-refresh, -.ion-ios7-refresh-empty, -.ion-ios7-refresh-outline, -.ion-ios7-reload, -.ion-ios7-reverse-camera, -.ion-ios7-reverse-camera-outline, -.ion-ios7-rewind, -.ion-ios7-rewind-outline, -.ion-ios7-search, -.ion-ios7-search-strong, -.ion-ios7-settings, -.ion-ios7-settings-strong, -.ion-ios7-shrink, -.ion-ios7-skipbackward, -.ion-ios7-skipbackward-outline, -.ion-ios7-skipforward, -.ion-ios7-skipforward-outline, -.ion-ios7-snowy, -.ion-ios7-speedometer, -.ion-ios7-speedometer-outline, -.ion-ios7-star, -.ion-ios7-star-half, -.ion-ios7-star-outline, -.ion-ios7-stopwatch, -.ion-ios7-stopwatch-outline, -.ion-ios7-sunny, -.ion-ios7-sunny-outline, -.ion-ios7-telephone, -.ion-ios7-telephone-outline, -.ion-ios7-tennisball, -.ion-ios7-tennisball-outline, -.ion-ios7-thunderstorm, -.ion-ios7-thunderstorm-outline, -.ion-ios7-time, -.ion-ios7-time-outline, -.ion-ios7-timer, -.ion-ios7-timer-outline, -.ion-ios7-toggle, -.ion-ios7-toggle-outline, -.ion-ios7-trash, -.ion-ios7-trash-outline, -.ion-ios7-undo, -.ion-ios7-undo-outline, -.ion-ios7-unlocked, -.ion-ios7-unlocked-outline, -.ion-ios7-upload, -.ion-ios7-upload-outline, -.ion-ios7-videocam, -.ion-ios7-videocam-outline, -.ion-ios7-volume-high, -.ion-ios7-volume-low, -.ion-ios7-wineglass, -.ion-ios7-wineglass-outline, -.ion-ios7-world, -.ion-ios7-world-outline, -.ion-ipad, -.ion-iphone, -.ion-ipod, -.ion-jet, -.ion-key, -.ion-knife, -.ion-laptop, -.ion-leaf, -.ion-levels, -.ion-lightbulb, -.ion-link, -.ion-load-a, -.ion-load-b, -.ion-load-c, -.ion-load-d, -.ion-location, -.ion-locked, -.ion-log-in, -.ion-log-out, -.ion-loop, -.ion-magnet, -.ion-male, -.ion-man, -.ion-map, -.ion-medkit, -.ion-merge, -.ion-mic-a, -.ion-mic-b, -.ion-mic-c, -.ion-minus, -.ion-minus-circled, -.ion-minus-round, -.ion-model-s, -.ion-monitor, -.ion-more, -.ion-mouse, -.ion-music-note, -.ion-navicon, -.ion-navicon-round, -.ion-navigate, -.ion-network, -.ion-no-smoking, -.ion-nuclear, -.ion-outlet, -.ion-paper-airplane, -.ion-paperclip, -.ion-pause, -.ion-person, -.ion-person-add, -.ion-person-stalker, -.ion-pie-graph, -.ion-pin, -.ion-pinpoint, -.ion-pizza, -.ion-plane, -.ion-planet, -.ion-play, -.ion-playstation, -.ion-plus, -.ion-plus-circled, -.ion-plus-round, -.ion-podium, -.ion-pound, -.ion-power, -.ion-pricetag, -.ion-pricetags, -.ion-printer, -.ion-pull-request, -.ion-qr-scanner, -.ion-quote, -.ion-radio-waves, -.ion-record, -.ion-refresh, -.ion-reply, -.ion-reply-all, -.ion-ribbon-a, -.ion-ribbon-b, -.ion-sad, -.ion-scissors, -.ion-search, -.ion-settings, -.ion-share, -.ion-shuffle, -.ion-skip-backward, -.ion-skip-forward, -.ion-social-android, -.ion-social-android-outline, -.ion-social-apple, -.ion-social-apple-outline, -.ion-social-bitcoin, -.ion-social-bitcoin-outline, -.ion-social-buffer, -.ion-social-buffer-outline, -.ion-social-designernews, -.ion-social-designernews-outline, -.ion-social-dribbble, -.ion-social-dribbble-outline, -.ion-social-dropbox, -.ion-social-dropbox-outline, -.ion-social-facebook, -.ion-social-facebook-outline, -.ion-social-foursquare, -.ion-social-foursquare-outline, -.ion-social-freebsd-devil, -.ion-social-github, -.ion-social-github-outline, -.ion-social-google, -.ion-social-google-outline, -.ion-social-googleplus, -.ion-social-googleplus-outline, -.ion-social-hackernews, -.ion-social-hackernews-outline, -.ion-social-instagram, -.ion-social-instagram-outline, -.ion-social-linkedin, -.ion-social-linkedin-outline, -.ion-social-pinterest, -.ion-social-pinterest-outline, -.ion-social-reddit, -.ion-social-reddit-outline, -.ion-social-rss, -.ion-social-rss-outline, -.ion-social-skype, -.ion-social-skype-outline, -.ion-social-tumblr, -.ion-social-tumblr-outline, -.ion-social-tux, -.ion-social-twitter, -.ion-social-twitter-outline, -.ion-social-usd, -.ion-social-usd-outline, -.ion-social-vimeo, -.ion-social-vimeo-outline, -.ion-social-windows, -.ion-social-windows-outline, -.ion-social-wordpress, -.ion-social-wordpress-outline, -.ion-social-yahoo, -.ion-social-yahoo-outline, -.ion-social-youtube, -.ion-social-youtube-outline, -.ion-speakerphone, -.ion-speedometer, -.ion-spoon, -.ion-star, -.ion-stats-bars, -.ion-steam, -.ion-stop, -.ion-thermometer, -.ion-thumbsdown, -.ion-thumbsup, -.ion-toggle, -.ion-toggle-filled, -.ion-trash-a, -.ion-trash-b, -.ion-trophy, -.ion-umbrella, -.ion-university, -.ion-unlocked, -.ion-upload, -.ion-usb, -.ion-videocamera, -.ion-volume-high, -.ion-volume-low, -.ion-volume-medium, -.ion-volume-mute, -.ion-wand, -.ion-waterdrop, -.ion-wifi, -.ion-wineglass, -.ion-woman, -.ion-wrench, -.ion-xbox { - display: inline-block; - font-family: "Ionicons"; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - text-rendering: auto; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.ion-spin, -.ion-loading-a, -.ion-loading-b, -.ion-loading-c, -.ion-loading-d, -.ion-looping, -.ion-refreshing, -.ion-ios7-reloading { - -webkit-animation: spin 1s infinite linear; - -moz-animation: spin 1s infinite linear; - -o-animation: spin 1s infinite linear; - animation: spin 1s infinite linear; -} -@-moz-keyframes spin { - 0% { - -moz-transform: rotate(0deg); - } - 100% { - -moz-transform: rotate(359deg); - } -} -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - } -} -@-o-keyframes spin { - 0% { - -o-transform: rotate(0deg); - } - 100% { - -o-transform: rotate(359deg); - } -} -@-ms-keyframes spin { - 0% { - -ms-transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); - } -} -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(359deg); - } -} -.ion-loading-a { - -webkit-animation-timing-function: steps(8, start); - -moz-animation-timing-function: steps(8, start); - animation-timing-function: steps(8, start); -} -.ion-alert:before { - content: "\f101"; -} -.ion-alert-circled:before { - content: "\f100"; -} -.ion-android-add:before { - content: "\f2c7"; -} -.ion-android-add-contact:before { - content: "\f2c6"; -} -.ion-android-alarm:before { - content: "\f2c8"; -} -.ion-android-archive:before { - content: "\f2c9"; -} -.ion-android-arrow-back:before { - content: "\f2ca"; -} -.ion-android-arrow-down-left:before { - content: "\f2cb"; -} -.ion-android-arrow-down-right:before { - content: "\f2cc"; -} -.ion-android-arrow-forward:before { - content: "\f30f"; -} -.ion-android-arrow-up-left:before { - content: "\f2cd"; -} -.ion-android-arrow-up-right:before { - content: "\f2ce"; -} -.ion-android-battery:before { - content: "\f2cf"; -} -.ion-android-book:before { - content: "\f2d0"; -} -.ion-android-calendar:before { - content: "\f2d1"; -} -.ion-android-call:before { - content: "\f2d2"; -} -.ion-android-camera:before { - content: "\f2d3"; -} -.ion-android-chat:before { - content: "\f2d4"; -} -.ion-android-checkmark:before { - content: "\f2d5"; -} -.ion-android-clock:before { - content: "\f2d6"; -} -.ion-android-close:before { - content: "\f2d7"; -} -.ion-android-contact:before { - content: "\f2d8"; -} -.ion-android-contacts:before { - content: "\f2d9"; -} -.ion-android-data:before { - content: "\f2da"; -} -.ion-android-developer:before { - content: "\f2db"; -} -.ion-android-display:before { - content: "\f2dc"; -} -.ion-android-download:before { - content: "\f2dd"; -} -.ion-android-drawer:before { - content: "\f310"; -} -.ion-android-dropdown:before { - content: "\f2de"; -} -.ion-android-earth:before { - content: "\f2df"; -} -.ion-android-folder:before { - content: "\f2e0"; -} -.ion-android-forums:before { - content: "\f2e1"; -} -.ion-android-friends:before { - content: "\f2e2"; -} -.ion-android-hand:before { - content: "\f2e3"; -} -.ion-android-image:before { - content: "\f2e4"; -} -.ion-android-inbox:before { - content: "\f2e5"; -} -.ion-android-information:before { - content: "\f2e6"; -} -.ion-android-keypad:before { - content: "\f2e7"; -} -.ion-android-lightbulb:before { - content: "\f2e8"; -} -.ion-android-locate:before { - content: "\f2e9"; -} -.ion-android-location:before { - content: "\f2ea"; -} -.ion-android-mail:before { - content: "\f2eb"; -} -.ion-android-microphone:before { - content: "\f2ec"; -} -.ion-android-mixer:before { - content: "\f2ed"; -} -.ion-android-more:before { - content: "\f2ee"; -} -.ion-android-note:before { - content: "\f2ef"; -} -.ion-android-playstore:before { - content: "\f2f0"; -} -.ion-android-printer:before { - content: "\f2f1"; -} -.ion-android-promotion:before { - content: "\f2f2"; -} -.ion-android-reminder:before { - content: "\f2f3"; -} -.ion-android-remove:before { - content: "\f2f4"; -} -.ion-android-search:before { - content: "\f2f5"; -} -.ion-android-send:before { - content: "\f2f6"; -} -.ion-android-settings:before { - content: "\f2f7"; -} -.ion-android-share:before { - content: "\f2f8"; -} -.ion-android-social:before { - content: "\f2fa"; -} -.ion-android-social-user:before { - content: "\f2f9"; -} -.ion-android-sort:before { - content: "\f2fb"; -} -.ion-android-stair-drawer:before { - content: "\f311"; -} -.ion-android-star:before { - content: "\f2fc"; -} -.ion-android-stopwatch:before { - content: "\f2fd"; -} -.ion-android-storage:before { - content: "\f2fe"; -} -.ion-android-system-back:before { - content: "\f2ff"; -} -.ion-android-system-home:before { - content: "\f300"; -} -.ion-android-system-windows:before { - content: "\f301"; -} -.ion-android-timer:before { - content: "\f302"; -} -.ion-android-trash:before { - content: "\f303"; -} -.ion-android-user-menu:before { - content: "\f312"; -} -.ion-android-volume:before { - content: "\f304"; -} -.ion-android-wifi:before { - content: "\f305"; -} -.ion-aperture:before { - content: "\f313"; -} -.ion-archive:before { - content: "\f102"; -} -.ion-arrow-down-a:before { - content: "\f103"; -} -.ion-arrow-down-b:before { - content: "\f104"; -} -.ion-arrow-down-c:before { - content: "\f105"; -} -.ion-arrow-expand:before { - content: "\f25e"; -} -.ion-arrow-graph-down-left:before { - content: "\f25f"; -} -.ion-arrow-graph-down-right:before { - content: "\f260"; -} -.ion-arrow-graph-up-left:before { - content: "\f261"; -} -.ion-arrow-graph-up-right:before { - content: "\f262"; -} -.ion-arrow-left-a:before { - content: "\f106"; -} -.ion-arrow-left-b:before { - content: "\f107"; -} -.ion-arrow-left-c:before { - content: "\f108"; -} -.ion-arrow-move:before { - content: "\f263"; -} -.ion-arrow-resize:before { - content: "\f264"; -} -.ion-arrow-return-left:before { - content: "\f265"; -} -.ion-arrow-return-right:before { - content: "\f266"; -} -.ion-arrow-right-a:before { - content: "\f109"; -} -.ion-arrow-right-b:before { - content: "\f10a"; -} -.ion-arrow-right-c:before { - content: "\f10b"; -} -.ion-arrow-shrink:before { - content: "\f267"; -} -.ion-arrow-swap:before { - content: "\f268"; -} -.ion-arrow-up-a:before { - content: "\f10c"; -} -.ion-arrow-up-b:before { - content: "\f10d"; -} -.ion-arrow-up-c:before { - content: "\f10e"; -} -.ion-asterisk:before { - content: "\f314"; -} -.ion-at:before { - content: "\f10f"; -} -.ion-bag:before { - content: "\f110"; -} -.ion-battery-charging:before { - content: "\f111"; -} -.ion-battery-empty:before { - content: "\f112"; -} -.ion-battery-full:before { - content: "\f113"; -} -.ion-battery-half:before { - content: "\f114"; -} -.ion-battery-low:before { - content: "\f115"; -} -.ion-beaker:before { - content: "\f269"; -} -.ion-beer:before { - content: "\f26a"; -} -.ion-bluetooth:before { - content: "\f116"; -} -.ion-bonfire:before { - content: "\f315"; -} -.ion-bookmark:before { - content: "\f26b"; -} -.ion-briefcase:before { - content: "\f26c"; -} -.ion-bug:before { - content: "\f2be"; -} -.ion-calculator:before { - content: "\f26d"; -} -.ion-calendar:before { - content: "\f117"; -} -.ion-camera:before { - content: "\f118"; -} -.ion-card:before { - content: "\f119"; -} -.ion-cash:before { - content: "\f316"; -} -.ion-chatbox:before { - content: "\f11b"; -} -.ion-chatbox-working:before { - content: "\f11a"; -} -.ion-chatboxes:before { - content: "\f11c"; -} -.ion-chatbubble:before { - content: "\f11e"; -} -.ion-chatbubble-working:before { - content: "\f11d"; -} -.ion-chatbubbles:before { - content: "\f11f"; -} -.ion-checkmark:before { - content: "\f122"; -} -.ion-checkmark-circled:before { - content: "\f120"; -} -.ion-checkmark-round:before { - content: "\f121"; -} -.ion-chevron-down:before { - content: "\f123"; -} -.ion-chevron-left:before { - content: "\f124"; -} -.ion-chevron-right:before { - content: "\f125"; -} -.ion-chevron-up:before { - content: "\f126"; -} -.ion-clipboard:before { - content: "\f127"; -} -.ion-clock:before { - content: "\f26e"; -} -.ion-close:before { - content: "\f12a"; -} -.ion-close-circled:before { - content: "\f128"; -} -.ion-close-round:before { - content: "\f129"; -} -.ion-closed-captioning:before { - content: "\f317"; -} -.ion-cloud:before { - content: "\f12b"; -} -.ion-code:before { - content: "\f271"; -} -.ion-code-download:before { - content: "\f26f"; -} -.ion-code-working:before { - content: "\f270"; -} -.ion-coffee:before { - content: "\f272"; -} -.ion-compass:before { - content: "\f273"; -} -.ion-compose:before { - content: "\f12c"; -} -.ion-connection-bars:before { - content: "\f274"; -} -.ion-contrast:before { - content: "\f275"; -} -.ion-cube:before { - content: "\f318"; -} -.ion-disc:before { - content: "\f12d"; -} -.ion-document:before { - content: "\f12f"; -} -.ion-document-text:before { - content: "\f12e"; -} -.ion-drag:before { - content: "\f130"; -} -.ion-earth:before { - content: "\f276"; -} -.ion-edit:before { - content: "\f2bf"; -} -.ion-egg:before { - content: "\f277"; -} -.ion-eject:before { - content: "\f131"; -} -.ion-email:before { - content: "\f132"; -} -.ion-eye:before { - content: "\f133"; -} -.ion-eye-disabled:before { - content: "\f306"; -} -.ion-female:before { - content: "\f278"; -} -.ion-filing:before { - content: "\f134"; -} -.ion-film-marker:before { - content: "\f135"; -} -.ion-fireball:before { - content: "\f319"; -} -.ion-flag:before { - content: "\f279"; -} -.ion-flame:before { - content: "\f31a"; -} -.ion-flash:before { - content: "\f137"; -} -.ion-flash-off:before { - content: "\f136"; -} -.ion-flask:before { - content: "\f138"; -} -.ion-folder:before { - content: "\f139"; -} -.ion-fork:before { - content: "\f27a"; -} -.ion-fork-repo:before { - content: "\f2c0"; -} -.ion-forward:before { - content: "\f13a"; -} -.ion-funnel:before { - content: "\f31b"; -} -.ion-game-controller-a:before { - content: "\f13b"; -} -.ion-game-controller-b:before { - content: "\f13c"; -} -.ion-gear-a:before { - content: "\f13d"; -} -.ion-gear-b:before { - content: "\f13e"; -} -.ion-grid:before { - content: "\f13f"; -} -.ion-hammer:before { - content: "\f27b"; -} -.ion-happy:before { - content: "\f31c"; -} -.ion-headphone:before { - content: "\f140"; -} -.ion-heart:before { - content: "\f141"; -} -.ion-heart-broken:before { - content: "\f31d"; -} -.ion-help:before { - content: "\f143"; -} -.ion-help-buoy:before { - content: "\f27c"; -} -.ion-help-circled:before { - content: "\f142"; -} -.ion-home:before { - content: "\f144"; -} -.ion-icecream:before { - content: "\f27d"; -} -.ion-icon-social-google-plus:before { - content: "\f146"; -} -.ion-icon-social-google-plus-outline:before { - content: "\f145"; -} -.ion-image:before { - content: "\f147"; -} -.ion-images:before { - content: "\f148"; -} -.ion-information:before { - content: "\f14a"; -} -.ion-information-circled:before { - content: "\f149"; -} -.ion-ionic:before { - content: "\f14b"; -} -.ion-ios7-alarm:before { - content: "\f14d"; -} -.ion-ios7-alarm-outline:before { - content: "\f14c"; -} -.ion-ios7-albums:before { - content: "\f14f"; -} -.ion-ios7-albums-outline:before { - content: "\f14e"; -} -.ion-ios7-americanfootball:before { - content: "\f31f"; -} -.ion-ios7-americanfootball-outline:before { - content: "\f31e"; -} -.ion-ios7-analytics:before { - content: "\f321"; -} -.ion-ios7-analytics-outline:before { - content: "\f320"; -} -.ion-ios7-arrow-back:before { - content: "\f150"; -} -.ion-ios7-arrow-down:before { - content: "\f151"; -} -.ion-ios7-arrow-forward:before { - content: "\f152"; -} -.ion-ios7-arrow-left:before { - content: "\f153"; -} -.ion-ios7-arrow-right:before { - content: "\f154"; -} -.ion-ios7-arrow-thin-down:before { - content: "\f27e"; -} -.ion-ios7-arrow-thin-left:before { - content: "\f27f"; -} -.ion-ios7-arrow-thin-right:before { - content: "\f280"; -} -.ion-ios7-arrow-thin-up:before { - content: "\f281"; -} -.ion-ios7-arrow-up:before { - content: "\f155"; -} -.ion-ios7-at:before { - content: "\f157"; -} -.ion-ios7-at-outline:before { - content: "\f156"; -} -.ion-ios7-barcode:before { - content: "\f323"; -} -.ion-ios7-barcode-outline:before { - content: "\f322"; -} -.ion-ios7-baseball:before { - content: "\f325"; -} -.ion-ios7-baseball-outline:before { - content: "\f324"; -} -.ion-ios7-basketball:before { - content: "\f327"; -} -.ion-ios7-basketball-outline:before { - content: "\f326"; -} -.ion-ios7-bell:before { - content: "\f159"; -} -.ion-ios7-bell-outline:before { - content: "\f158"; -} -.ion-ios7-bolt:before { - content: "\f15b"; -} -.ion-ios7-bolt-outline:before { - content: "\f15a"; -} -.ion-ios7-bookmarks:before { - content: "\f15d"; -} -.ion-ios7-bookmarks-outline:before { - content: "\f15c"; -} -.ion-ios7-box:before { - content: "\f15f"; -} -.ion-ios7-box-outline:before { - content: "\f15e"; -} -.ion-ios7-briefcase:before { - content: "\f283"; -} -.ion-ios7-briefcase-outline:before { - content: "\f282"; -} -.ion-ios7-browsers:before { - content: "\f161"; -} -.ion-ios7-browsers-outline:before { - content: "\f160"; -} -.ion-ios7-calculator:before { - content: "\f285"; -} -.ion-ios7-calculator-outline:before { - content: "\f284"; -} -.ion-ios7-calendar:before { - content: "\f163"; -} -.ion-ios7-calendar-outline:before { - content: "\f162"; -} -.ion-ios7-camera:before { - content: "\f165"; -} -.ion-ios7-camera-outline:before { - content: "\f164"; -} -.ion-ios7-cart:before { - content: "\f167"; -} -.ion-ios7-cart-outline:before { - content: "\f166"; -} -.ion-ios7-chatboxes:before { - content: "\f169"; -} -.ion-ios7-chatboxes-outline:before { - content: "\f168"; -} -.ion-ios7-chatbubble:before { - content: "\f16b"; -} -.ion-ios7-chatbubble-outline:before { - content: "\f16a"; -} -.ion-ios7-checkmark:before { - content: "\f16e"; -} -.ion-ios7-checkmark-empty:before { - content: "\f16c"; -} -.ion-ios7-checkmark-outline:before { - content: "\f16d"; -} -.ion-ios7-circle-filled:before { - content: "\f16f"; -} -.ion-ios7-circle-outline:before { - content: "\f170"; -} -.ion-ios7-clock:before { - content: "\f172"; -} -.ion-ios7-clock-outline:before { - content: "\f171"; -} -.ion-ios7-close:before { - content: "\f2bc"; -} -.ion-ios7-close-empty:before { - content: "\f2bd"; -} -.ion-ios7-close-outline:before { - content: "\f2bb"; -} -.ion-ios7-cloud:before { - content: "\f178"; -} -.ion-ios7-cloud-download:before { - content: "\f174"; -} -.ion-ios7-cloud-download-outline:before { - content: "\f173"; -} -.ion-ios7-cloud-outline:before { - content: "\f175"; -} -.ion-ios7-cloud-upload:before { - content: "\f177"; -} -.ion-ios7-cloud-upload-outline:before { - content: "\f176"; -} -.ion-ios7-cloudy:before { - content: "\f17a"; -} -.ion-ios7-cloudy-night:before { - content: "\f308"; -} -.ion-ios7-cloudy-night-outline:before { - content: "\f307"; -} -.ion-ios7-cloudy-outline:before { - content: "\f179"; -} -.ion-ios7-cog:before { - content: "\f17c"; -} -.ion-ios7-cog-outline:before { - content: "\f17b"; -} -.ion-ios7-compose:before { - content: "\f17e"; -} -.ion-ios7-compose-outline:before { - content: "\f17d"; -} -.ion-ios7-contact:before { - content: "\f180"; -} -.ion-ios7-contact-outline:before { - content: "\f17f"; -} -.ion-ios7-copy:before { - content: "\f182"; -} -.ion-ios7-copy-outline:before { - content: "\f181"; -} -.ion-ios7-download:before { - content: "\f184"; -} -.ion-ios7-download-outline:before { - content: "\f183"; -} -.ion-ios7-drag:before { - content: "\f185"; -} -.ion-ios7-email:before { - content: "\f187"; -} -.ion-ios7-email-outline:before { - content: "\f186"; -} -.ion-ios7-expand:before { - content: "\f30d"; -} -.ion-ios7-eye:before { - content: "\f189"; -} -.ion-ios7-eye-outline:before { - content: "\f188"; -} -.ion-ios7-fastforward:before { - content: "\f18b"; -} -.ion-ios7-fastforward-outline:before { - content: "\f18a"; -} -.ion-ios7-filing:before { - content: "\f18d"; -} -.ion-ios7-filing-outline:before { - content: "\f18c"; -} -.ion-ios7-film:before { - content: "\f18f"; -} -.ion-ios7-film-outline:before { - content: "\f18e"; -} -.ion-ios7-flag:before { - content: "\f191"; -} -.ion-ios7-flag-outline:before { - content: "\f190"; -} -.ion-ios7-folder:before { - content: "\f193"; -} -.ion-ios7-folder-outline:before { - content: "\f192"; -} -.ion-ios7-football:before { - content: "\f329"; -} -.ion-ios7-football-outline:before { - content: "\f328"; -} -.ion-ios7-gear:before { - content: "\f195"; -} -.ion-ios7-gear-outline:before { - content: "\f194"; -} -.ion-ios7-glasses:before { - content: "\f197"; -} -.ion-ios7-glasses-outline:before { - content: "\f196"; -} -.ion-ios7-heart:before { - content: "\f199"; -} -.ion-ios7-heart-outline:before { - content: "\f198"; -} -.ion-ios7-help:before { - content: "\f19c"; -} -.ion-ios7-help-empty:before { - content: "\f19a"; -} -.ion-ios7-help-outline:before { - content: "\f19b"; -} -.ion-ios7-home:before { - content: "\f32b"; -} -.ion-ios7-home-outline:before { - content: "\f32a"; -} -.ion-ios7-infinite:before { - content: "\f19e"; -} -.ion-ios7-infinite-outline:before { - content: "\f19d"; -} -.ion-ios7-information:before { - content: "\f1a1"; -} -.ion-ios7-information-empty:before { - content: "\f19f"; -} -.ion-ios7-information-outline:before { - content: "\f1a0"; -} -.ion-ios7-ionic-outline:before { - content: "\f1a2"; -} -.ion-ios7-keypad:before { - content: "\f1a4"; -} -.ion-ios7-keypad-outline:before { - content: "\f1a3"; -} -.ion-ios7-lightbulb:before { - content: "\f287"; -} -.ion-ios7-lightbulb-outline:before { - content: "\f286"; -} -.ion-ios7-location:before { - content: "\f1a6"; -} -.ion-ios7-location-outline:before { - content: "\f1a5"; -} -.ion-ios7-locked:before { - content: "\f1a8"; -} -.ion-ios7-locked-outline:before { - content: "\f1a7"; -} -.ion-ios7-loop:before { - content: "\f32d"; -} -.ion-ios7-loop-strong:before { - content: "\f32c"; -} -.ion-ios7-medkit:before { - content: "\f289"; -} -.ion-ios7-medkit-outline:before { - content: "\f288"; -} -.ion-ios7-mic:before { - content: "\f1ab"; -} -.ion-ios7-mic-off:before { - content: "\f1a9"; -} -.ion-ios7-mic-outline:before { - content: "\f1aa"; -} -.ion-ios7-minus:before { - content: "\f1ae"; -} -.ion-ios7-minus-empty:before { - content: "\f1ac"; -} -.ion-ios7-minus-outline:before { - content: "\f1ad"; -} -.ion-ios7-monitor:before { - content: "\f1b0"; -} -.ion-ios7-monitor-outline:before { - content: "\f1af"; -} -.ion-ios7-moon:before { - content: "\f1b2"; -} -.ion-ios7-moon-outline:before { - content: "\f1b1"; -} -.ion-ios7-more:before { - content: "\f1b4"; -} -.ion-ios7-more-outline:before { - content: "\f1b3"; -} -.ion-ios7-musical-note:before { - content: "\f1b5"; -} -.ion-ios7-musical-notes:before { - content: "\f1b6"; -} -.ion-ios7-navigate:before { - content: "\f1b8"; -} -.ion-ios7-navigate-outline:before { - content: "\f1b7"; -} -.ion-ios7-paper:before { - content: "\f32f"; -} -.ion-ios7-paper-outline:before { - content: "\f32e"; -} -.ion-ios7-paperplane:before { - content: "\f1ba"; -} -.ion-ios7-paperplane-outline:before { - content: "\f1b9"; -} -.ion-ios7-partlysunny:before { - content: "\f1bc"; -} -.ion-ios7-partlysunny-outline:before { - content: "\f1bb"; -} -.ion-ios7-pause:before { - content: "\f1be"; -} -.ion-ios7-pause-outline:before { - content: "\f1bd"; -} -.ion-ios7-paw:before { - content: "\f331"; -} -.ion-ios7-paw-outline:before { - content: "\f330"; -} -.ion-ios7-people:before { - content: "\f1c0"; -} -.ion-ios7-people-outline:before { - content: "\f1bf"; -} -.ion-ios7-person:before { - content: "\f1c2"; -} -.ion-ios7-person-outline:before { - content: "\f1c1"; -} -.ion-ios7-personadd:before { - content: "\f1c4"; -} -.ion-ios7-personadd-outline:before { - content: "\f1c3"; -} -.ion-ios7-photos:before { - content: "\f1c6"; -} -.ion-ios7-photos-outline:before { - content: "\f1c5"; -} -.ion-ios7-pie:before { - content: "\f28b"; -} -.ion-ios7-pie-outline:before { - content: "\f28a"; -} -.ion-ios7-play:before { - content: "\f1c8"; -} -.ion-ios7-play-outline:before { - content: "\f1c7"; -} -.ion-ios7-plus:before { - content: "\f1cb"; -} -.ion-ios7-plus-empty:before { - content: "\f1c9"; -} -.ion-ios7-plus-outline:before { - content: "\f1ca"; -} -.ion-ios7-pricetag:before { - content: "\f28d"; -} -.ion-ios7-pricetag-outline:before { - content: "\f28c"; -} -.ion-ios7-pricetags:before { - content: "\f333"; -} -.ion-ios7-pricetags-outline:before { - content: "\f332"; -} -.ion-ios7-printer:before { - content: "\f1cd"; -} -.ion-ios7-printer-outline:before { - content: "\f1cc"; -} -.ion-ios7-pulse:before { - content: "\f335"; -} -.ion-ios7-pulse-strong:before { - content: "\f334"; -} -.ion-ios7-rainy:before { - content: "\f1cf"; -} -.ion-ios7-rainy-outline:before { - content: "\f1ce"; -} -.ion-ios7-recording:before { - content: "\f1d1"; -} -.ion-ios7-recording-outline:before { - content: "\f1d0"; -} -.ion-ios7-redo:before { - content: "\f1d3"; -} -.ion-ios7-redo-outline:before { - content: "\f1d2"; -} -.ion-ios7-refresh:before { - content: "\f1d6"; -} -.ion-ios7-refresh-empty:before { - content: "\f1d4"; -} -.ion-ios7-refresh-outline:before { - content: "\f1d5"; -} -.ion-ios7-reload:before { - content: "\f28e"; -} -.ion-ios7-reverse-camera:before { - content: "\f337"; -} -.ion-ios7-reverse-camera-outline:before { - content: "\f336"; -} -.ion-ios7-rewind:before { - content: "\f1d8"; -} -.ion-ios7-rewind-outline:before { - content: "\f1d7"; -} -.ion-ios7-search:before { - content: "\f1da"; -} -.ion-ios7-search-strong:before { - content: "\f1d9"; -} -.ion-ios7-settings:before { - content: "\f339"; -} -.ion-ios7-settings-strong:before { - content: "\f338"; -} -.ion-ios7-shrink:before { - content: "\f30e"; -} -.ion-ios7-skipbackward:before { - content: "\f1dc"; -} -.ion-ios7-skipbackward-outline:before { - content: "\f1db"; -} -.ion-ios7-skipforward:before { - content: "\f1de"; -} -.ion-ios7-skipforward-outline:before { - content: "\f1dd"; -} -.ion-ios7-snowy:before { - content: "\f309"; -} -.ion-ios7-speedometer:before { - content: "\f290"; -} -.ion-ios7-speedometer-outline:before { - content: "\f28f"; -} -.ion-ios7-star:before { - content: "\f1e0"; -} -.ion-ios7-star-half:before { - content: "\f33a"; -} -.ion-ios7-star-outline:before { - content: "\f1df"; -} -.ion-ios7-stopwatch:before { - content: "\f1e2"; -} -.ion-ios7-stopwatch-outline:before { - content: "\f1e1"; -} -.ion-ios7-sunny:before { - content: "\f1e4"; -} -.ion-ios7-sunny-outline:before { - content: "\f1e3"; -} -.ion-ios7-telephone:before { - content: "\f1e6"; -} -.ion-ios7-telephone-outline:before { - content: "\f1e5"; -} -.ion-ios7-tennisball:before { - content: "\f33c"; -} -.ion-ios7-tennisball-outline:before { - content: "\f33b"; -} -.ion-ios7-thunderstorm:before { - content: "\f1e8"; -} -.ion-ios7-thunderstorm-outline:before { - content: "\f1e7"; -} -.ion-ios7-time:before { - content: "\f292"; -} -.ion-ios7-time-outline:before { - content: "\f291"; -} -.ion-ios7-timer:before { - content: "\f1ea"; -} -.ion-ios7-timer-outline:before { - content: "\f1e9"; -} -.ion-ios7-toggle:before { - content: "\f33e"; -} -.ion-ios7-toggle-outline:before { - content: "\f33d"; -} -.ion-ios7-trash:before { - content: "\f1ec"; -} -.ion-ios7-trash-outline:before { - content: "\f1eb"; -} -.ion-ios7-undo:before { - content: "\f1ee"; -} -.ion-ios7-undo-outline:before { - content: "\f1ed"; -} -.ion-ios7-unlocked:before { - content: "\f1f0"; -} -.ion-ios7-unlocked-outline:before { - content: "\f1ef"; -} -.ion-ios7-upload:before { - content: "\f1f2"; -} -.ion-ios7-upload-outline:before { - content: "\f1f1"; -} -.ion-ios7-videocam:before { - content: "\f1f4"; -} -.ion-ios7-videocam-outline:before { - content: "\f1f3"; -} -.ion-ios7-volume-high:before { - content: "\f1f5"; -} -.ion-ios7-volume-low:before { - content: "\f1f6"; -} -.ion-ios7-wineglass:before { - content: "\f294"; -} -.ion-ios7-wineglass-outline:before { - content: "\f293"; -} -.ion-ios7-world:before { - content: "\f1f8"; -} -.ion-ios7-world-outline:before { - content: "\f1f7"; -} -.ion-ipad:before { - content: "\f1f9"; -} -.ion-iphone:before { - content: "\f1fa"; -} -.ion-ipod:before { - content: "\f1fb"; -} -.ion-jet:before { - content: "\f295"; -} -.ion-key:before { - content: "\f296"; -} -.ion-knife:before { - content: "\f297"; -} -.ion-laptop:before { - content: "\f1fc"; -} -.ion-leaf:before { - content: "\f1fd"; -} -.ion-levels:before { - content: "\f298"; -} -.ion-lightbulb:before { - content: "\f299"; -} -.ion-link:before { - content: "\f1fe"; -} -.ion-load-a:before { - content: "\f29a"; -} -.ion-load-b:before { - content: "\f29b"; -} -.ion-load-c:before { - content: "\f29c"; -} -.ion-load-d:before { - content: "\f29d"; -} -.ion-location:before { - content: "\f1ff"; -} -.ion-locked:before { - content: "\f200"; -} -.ion-log-in:before { - content: "\f29e"; -} -.ion-log-out:before { - content: "\f29f"; -} -.ion-loop:before { - content: "\f201"; -} -.ion-magnet:before { - content: "\f2a0"; -} -.ion-male:before { - content: "\f2a1"; -} -.ion-man:before { - content: "\f202"; -} -.ion-map:before { - content: "\f203"; -} -.ion-medkit:before { - content: "\f2a2"; -} -.ion-merge:before { - content: "\f33f"; -} -.ion-mic-a:before { - content: "\f204"; -} -.ion-mic-b:before { - content: "\f205"; -} -.ion-mic-c:before { - content: "\f206"; -} -.ion-minus:before { - content: "\f209"; -} -.ion-minus-circled:before { - content: "\f207"; -} -.ion-minus-round:before { - content: "\f208"; -} -.ion-model-s:before { - content: "\f2c1"; -} -.ion-monitor:before { - content: "\f20a"; -} -.ion-more:before { - content: "\f20b"; -} -.ion-mouse:before { - content: "\f340"; -} -.ion-music-note:before { - content: "\f20c"; -} -.ion-navicon:before { - content: "\f20e"; -} -.ion-navicon-round:before { - content: "\f20d"; -} -.ion-navigate:before { - content: "\f2a3"; -} -.ion-network:before { - content: "\f341"; -} -.ion-no-smoking:before { - content: "\f2c2"; -} -.ion-nuclear:before { - content: "\f2a4"; -} -.ion-outlet:before { - content: "\f342"; -} -.ion-paper-airplane:before { - content: "\f2c3"; -} -.ion-paperclip:before { - content: "\f20f"; -} -.ion-pause:before { - content: "\f210"; -} -.ion-person:before { - content: "\f213"; -} -.ion-person-add:before { - content: "\f211"; -} -.ion-person-stalker:before { - content: "\f212"; -} -.ion-pie-graph:before { - content: "\f2a5"; -} -.ion-pin:before { - content: "\f2a6"; -} -.ion-pinpoint:before { - content: "\f2a7"; -} -.ion-pizza:before { - content: "\f2a8"; -} -.ion-plane:before { - content: "\f214"; -} -.ion-planet:before { - content: "\f343"; -} -.ion-play:before { - content: "\f215"; -} -.ion-playstation:before { - content: "\f30a"; -} -.ion-plus:before { - content: "\f218"; -} -.ion-plus-circled:before { - content: "\f216"; -} -.ion-plus-round:before { - content: "\f217"; -} -.ion-podium:before { - content: "\f344"; -} -.ion-pound:before { - content: "\f219"; -} -.ion-power:before { - content: "\f2a9"; -} -.ion-pricetag:before { - content: "\f2aa"; -} -.ion-pricetags:before { - content: "\f2ab"; -} -.ion-printer:before { - content: "\f21a"; -} -.ion-pull-request:before { - content: "\f345"; -} -.ion-qr-scanner:before { - content: "\f346"; -} -.ion-quote:before { - content: "\f347"; -} -.ion-radio-waves:before { - content: "\f2ac"; -} -.ion-record:before { - content: "\f21b"; -} -.ion-refresh:before { - content: "\f21c"; -} -.ion-reply:before { - content: "\f21e"; -} -.ion-reply-all:before { - content: "\f21d"; -} -.ion-ribbon-a:before { - content: "\f348"; -} -.ion-ribbon-b:before { - content: "\f349"; -} -.ion-sad:before { - content: "\f34a"; -} -.ion-scissors:before { - content: "\f34b"; -} -.ion-search:before { - content: "\f21f"; -} -.ion-settings:before { - content: "\f2ad"; -} -.ion-share:before { - content: "\f220"; -} -.ion-shuffle:before { - content: "\f221"; -} -.ion-skip-backward:before { - content: "\f222"; -} -.ion-skip-forward:before { - content: "\f223"; -} -.ion-social-android:before { - content: "\f225"; -} -.ion-social-android-outline:before { - content: "\f224"; -} -.ion-social-apple:before { - content: "\f227"; -} -.ion-social-apple-outline:before { - content: "\f226"; -} -.ion-social-bitcoin:before { - content: "\f2af"; -} -.ion-social-bitcoin-outline:before { - content: "\f2ae"; -} -.ion-social-buffer:before { - content: "\f229"; -} -.ion-social-buffer-outline:before { - content: "\f228"; -} -.ion-social-designernews:before { - content: "\f22b"; -} -.ion-social-designernews-outline:before { - content: "\f22a"; -} -.ion-social-dribbble:before { - content: "\f22d"; -} -.ion-social-dribbble-outline:before { - content: "\f22c"; -} -.ion-social-dropbox:before { - content: "\f22f"; -} -.ion-social-dropbox-outline:before { - content: "\f22e"; -} -.ion-social-facebook:before { - content: "\f231"; -} -.ion-social-facebook-outline:before { - content: "\f230"; -} -.ion-social-foursquare:before { - content: "\f34d"; -} -.ion-social-foursquare-outline:before { - content: "\f34c"; -} -.ion-social-freebsd-devil:before { - content: "\f2c4"; -} -.ion-social-github:before { - content: "\f233"; -} -.ion-social-github-outline:before { - content: "\f232"; -} -.ion-social-google:before { - content: "\f34f"; -} -.ion-social-google-outline:before { - content: "\f34e"; -} -.ion-social-googleplus:before { - content: "\f235"; -} -.ion-social-googleplus-outline:before { - content: "\f234"; -} -.ion-social-hackernews:before { - content: "\f237"; -} -.ion-social-hackernews-outline:before { - content: "\f236"; -} -.ion-social-instagram:before { - content: "\f351"; -} -.ion-social-instagram-outline:before { - content: "\f350"; -} -.ion-social-linkedin:before { - content: "\f239"; -} -.ion-social-linkedin-outline:before { - content: "\f238"; -} -.ion-social-pinterest:before { - content: "\f2b1"; -} -.ion-social-pinterest-outline:before { - content: "\f2b0"; -} -.ion-social-reddit:before { - content: "\f23b"; -} -.ion-social-reddit-outline:before { - content: "\f23a"; -} -.ion-social-rss:before { - content: "\f23d"; -} -.ion-social-rss-outline:before { - content: "\f23c"; -} -.ion-social-skype:before { - content: "\f23f"; -} -.ion-social-skype-outline:before { - content: "\f23e"; -} -.ion-social-tumblr:before { - content: "\f241"; -} -.ion-social-tumblr-outline:before { - content: "\f240"; -} -.ion-social-tux:before { - content: "\f2c5"; -} -.ion-social-twitter:before { - content: "\f243"; -} -.ion-social-twitter-outline:before { - content: "\f242"; -} -.ion-social-usd:before { - content: "\f353"; -} -.ion-social-usd-outline:before { - content: "\f352"; -} -.ion-social-vimeo:before { - content: "\f245"; -} -.ion-social-vimeo-outline:before { - content: "\f244"; -} -.ion-social-windows:before { - content: "\f247"; -} -.ion-social-windows-outline:before { - content: "\f246"; -} -.ion-social-wordpress:before { - content: "\f249"; -} -.ion-social-wordpress-outline:before { - content: "\f248"; -} -.ion-social-yahoo:before { - content: "\f24b"; -} -.ion-social-yahoo-outline:before { - content: "\f24a"; -} -.ion-social-youtube:before { - content: "\f24d"; -} -.ion-social-youtube-outline:before { - content: "\f24c"; -} -.ion-speakerphone:before { - content: "\f2b2"; -} -.ion-speedometer:before { - content: "\f2b3"; -} -.ion-spoon:before { - content: "\f2b4"; -} -.ion-star:before { - content: "\f24e"; -} -.ion-stats-bars:before { - content: "\f2b5"; -} -.ion-steam:before { - content: "\f30b"; -} -.ion-stop:before { - content: "\f24f"; -} -.ion-thermometer:before { - content: "\f2b6"; -} -.ion-thumbsdown:before { - content: "\f250"; -} -.ion-thumbsup:before { - content: "\f251"; -} -.ion-toggle:before { - content: "\f355"; -} -.ion-toggle-filled:before { - content: "\f354"; -} -.ion-trash-a:before { - content: "\f252"; -} -.ion-trash-b:before { - content: "\f253"; -} -.ion-trophy:before { - content: "\f356"; -} -.ion-umbrella:before { - content: "\f2b7"; -} -.ion-university:before { - content: "\f357"; -} -.ion-unlocked:before { - content: "\f254"; -} -.ion-upload:before { - content: "\f255"; -} -.ion-usb:before { - content: "\f2b8"; -} -.ion-videocamera:before { - content: "\f256"; -} -.ion-volume-high:before { - content: "\f257"; -} -.ion-volume-low:before { - content: "\f258"; -} -.ion-volume-medium:before { - content: "\f259"; -} -.ion-volume-mute:before { - content: "\f25a"; -} -.ion-wand:before { - content: "\f358"; -} -.ion-waterdrop:before { - content: "\f25b"; -} -.ion-wifi:before { - content: "\f25c"; -} -.ion-wineglass:before { - content: "\f2b9"; -} -.ion-woman:before { - content: "\f25d"; -} -.ion-wrench:before { - content: "\f2ba"; -} -.ion-xbox:before { - content: "\f30c"; -} -/*! - * Weather Icons 2.0 - * Updated August 1, 2015 - * Weather themed icons for Bootstrap - * Author - Erik Flowers - erik@helloerik.com - * Email: erik@helloerik.com - * Twitter: http://twitter.com/Erik_UX - * ------------------------------------------------------------------------------ - * Maintained at http://erikflowers.github.io/weather-icons - * - * License - * ------------------------------------------------------------------------------ - * - Font licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL - * - CSS, SCSS and LESS are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html - * - Documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ - * - Inspired by and works great as a companion with Font Awesome - * "Font Awesome by Dave Gandy - http://fontawesome.io" - */ -@font-face { - font-family: 'weathericons'; - src: url('../fonts/weathericons-regular-webfont.eot'); - src: url('../fonts/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/weathericons-regular-webfont.woff2') format('woff2'), url('../fonts/weathericons-regular-webfont.woff') format('woff'), url('../fonts/weathericons-regular-webfont.ttf') format('truetype'), url('../fonts/weathericons-regular-webfont.svg#weather_iconsregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.wi { - display: inline-block; - font-family: 'weathericons'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.wi-fw { - text-align: center; - width: 1.4em; -} -.wi-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.wi-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.wi-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.wi-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.wi-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -.wi-day-sunny:before { - content: "\f00d"; -} -.wi-day-cloudy:before { - content: "\f002"; -} -.wi-day-cloudy-gusts:before { - content: "\f000"; -} -.wi-day-cloudy-windy:before { - content: "\f001"; -} -.wi-day-fog:before { - content: "\f003"; -} -.wi-day-hail:before { - content: "\f004"; -} -.wi-day-haze:before { - content: "\f0b6"; -} -.wi-day-lightning:before { - content: "\f005"; -} -.wi-day-rain:before { - content: "\f008"; -} -.wi-day-rain-mix:before { - content: "\f006"; -} -.wi-day-rain-wind:before { - content: "\f007"; -} -.wi-day-showers:before { - content: "\f009"; -} -.wi-day-sleet:before { - content: "\f0b2"; -} -.wi-day-sleet-storm:before { - content: "\f068"; -} -.wi-day-snow:before { - content: "\f00a"; -} -.wi-day-snow-thunderstorm:before { - content: "\f06b"; -} -.wi-day-snow-wind:before { - content: "\f065"; -} -.wi-day-sprinkle:before { - content: "\f00b"; -} -.wi-day-storm-showers:before { - content: "\f00e"; -} -.wi-day-sunny-overcast:before { - content: "\f00c"; -} -.wi-day-thunderstorm:before { - content: "\f010"; -} -.wi-day-windy:before { - content: "\f085"; -} -.wi-solar-eclipse:before { - content: "\f06e"; -} -.wi-hot:before { - content: "\f072"; -} -.wi-day-cloudy-high:before { - content: "\f07d"; -} -.wi-day-light-wind:before { - content: "\f0c4"; -} -.wi-night-clear:before { - content: "\f02e"; -} -.wi-night-alt-cloudy:before { - content: "\f086"; -} -.wi-night-alt-cloudy-gusts:before { - content: "\f022"; -} -.wi-night-alt-cloudy-windy:before { - content: "\f023"; -} -.wi-night-alt-hail:before { - content: "\f024"; -} -.wi-night-alt-lightning:before { - content: "\f025"; -} -.wi-night-alt-rain:before { - content: "\f028"; -} -.wi-night-alt-rain-mix:before { - content: "\f026"; -} -.wi-night-alt-rain-wind:before { - content: "\f027"; -} -.wi-night-alt-showers:before { - content: "\f029"; -} -.wi-night-alt-sleet:before { - content: "\f0b4"; -} -.wi-night-alt-sleet-storm:before { - content: "\f06a"; -} -.wi-night-alt-snow:before { - content: "\f02a"; -} -.wi-night-alt-snow-thunderstorm:before { - content: "\f06d"; -} -.wi-night-alt-snow-wind:before { - content: "\f067"; -} -.wi-night-alt-sprinkle:before { - content: "\f02b"; -} -.wi-night-alt-storm-showers:before { - content: "\f02c"; -} -.wi-night-alt-thunderstorm:before { - content: "\f02d"; -} -.wi-night-cloudy:before { - content: "\f031"; -} -.wi-night-cloudy-gusts:before { - content: "\f02f"; -} -.wi-night-cloudy-windy:before { - content: "\f030"; -} -.wi-night-fog:before { - content: "\f04a"; -} -.wi-night-hail:before { - content: "\f032"; -} -.wi-night-lightning:before { - content: "\f033"; -} -.wi-night-partly-cloudy:before { - content: "\f083"; -} -.wi-night-rain:before { - content: "\f036"; -} -.wi-night-rain-mix:before { - content: "\f034"; -} -.wi-night-rain-wind:before { - content: "\f035"; -} -.wi-night-showers:before { - content: "\f037"; -} -.wi-night-sleet:before { - content: "\f0b3"; -} -.wi-night-sleet-storm:before { - content: "\f069"; -} -.wi-night-snow:before { - content: "\f038"; -} -.wi-night-snow-thunderstorm:before { - content: "\f06c"; -} -.wi-night-snow-wind:before { - content: "\f066"; -} -.wi-night-sprinkle:before { - content: "\f039"; -} -.wi-night-storm-showers:before { - content: "\f03a"; -} -.wi-night-thunderstorm:before { - content: "\f03b"; -} -.wi-lunar-eclipse:before { - content: "\f070"; -} -.wi-stars:before { - content: "\f077"; -} -.wi-storm-showers:before { - content: "\f01d"; -} -.wi-thunderstorm:before { - content: "\f01e"; -} -.wi-night-alt-cloudy-high:before { - content: "\f07e"; -} -.wi-night-cloudy-high:before { - content: "\f080"; -} -.wi-night-alt-partly-cloudy:before { - content: "\f081"; -} -.wi-cloud:before { - content: "\f041"; -} -.wi-cloudy:before { - content: "\f013"; -} -.wi-cloudy-gusts:before { - content: "\f011"; -} -.wi-cloudy-windy:before { - content: "\f012"; -} -.wi-fog:before { - content: "\f014"; -} -.wi-hail:before { - content: "\f015"; -} -.wi-rain:before { - content: "\f019"; -} -.wi-rain-mix:before { - content: "\f017"; -} -.wi-rain-wind:before { - content: "\f018"; -} -.wi-showers:before { - content: "\f01a"; -} -.wi-sleet:before { - content: "\f0b5"; -} -.wi-snow:before { - content: "\f01b"; -} -.wi-sprinkle:before { - content: "\f01c"; -} -.wi-storm-showers:before { - content: "\f01d"; -} -.wi-thunderstorm:before { - content: "\f01e"; -} -.wi-snow-wind:before { - content: "\f064"; -} -.wi-snow:before { - content: "\f01b"; -} -.wi-smog:before { - content: "\f074"; -} -.wi-smoke:before { - content: "\f062"; -} -.wi-lightning:before { - content: "\f016"; -} -.wi-raindrops:before { - content: "\f04e"; -} -.wi-raindrop:before { - content: "\f078"; -} -.wi-dust:before { - content: "\f063"; -} -.wi-snowflake-cold:before { - content: "\f076"; -} -.wi-windy:before { - content: "\f021"; -} -.wi-strong-wind:before { - content: "\f050"; -} -.wi-sandstorm:before { - content: "\f082"; -} -.wi-earthquake:before { - content: "\f0c6"; -} -.wi-fire:before { - content: "\f0c7"; -} -.wi-flood:before { - content: "\f07c"; -} -.wi-meteor:before { - content: "\f071"; -} -.wi-tsunami:before { - content: "\f0c5"; -} -.wi-volcano:before { - content: "\f0c8"; -} -.wi-hurricane:before { - content: "\f073"; -} -.wi-tornado:before { - content: "\f056"; -} -.wi-small-craft-advisory:before { - content: "\f0cc"; -} -.wi-gale-warning:before { - content: "\f0cd"; -} -.wi-storm-warning:before { - content: "\f0ce"; -} -.wi-hurricane-warning:before { - content: "\f0cf"; -} -.wi-wind-direction:before { - content: "\f0b1"; -} -.wi-alien:before { - content: "\f075"; -} -.wi-celsius:before { - content: "\f03c"; -} -.wi-fahrenheit:before { - content: "\f045"; -} -.wi-degrees:before { - content: "\f042"; -} -.wi-thermometer:before { - content: "\f055"; -} -.wi-thermometer-exterior:before { - content: "\f053"; -} -.wi-thermometer-internal:before { - content: "\f054"; -} -.wi-cloud-down:before { - content: "\f03d"; -} -.wi-cloud-up:before { - content: "\f040"; -} -.wi-cloud-refresh:before { - content: "\f03e"; -} -.wi-horizon:before { - content: "\f047"; -} -.wi-horizon-alt:before { - content: "\f046"; -} -.wi-sunrise:before { - content: "\f051"; -} -.wi-sunset:before { - content: "\f052"; -} -.wi-moonrise:before { - content: "\f0c9"; -} -.wi-moonset:before { - content: "\f0ca"; -} -.wi-refresh:before { - content: "\f04c"; -} -.wi-refresh-alt:before { - content: "\f04b"; -} -.wi-umbrella:before { - content: "\f084"; -} -.wi-barometer:before { - content: "\f079"; -} -.wi-humidity:before { - content: "\f07a"; -} -.wi-na:before { - content: "\f07b"; -} -.wi-train:before { - content: "\f0cb"; -} -.wi-moon-new:before { - content: "\f095"; -} -.wi-moon-waxing-cresent-1:before { - content: "\f096"; -} -.wi-moon-waxing-cresent-2:before { - content: "\f097"; -} -.wi-moon-waxing-cresent-3:before { - content: "\f098"; -} -.wi-moon-waxing-cresent-4:before { - content: "\f099"; -} -.wi-moon-waxing-cresent-5:before { - content: "\f09a"; -} -.wi-moon-waxing-cresent-6:before { - content: "\f09b"; -} -.wi-moon-first-quarter:before { - content: "\f09c"; -} -.wi-moon-waxing-gibbous-1:before { - content: "\f09d"; -} -.wi-moon-waxing-gibbous-2:before { - content: "\f09e"; -} -.wi-moon-waxing-gibbous-3:before { - content: "\f09f"; -} -.wi-moon-waxing-gibbous-4:before { - content: "\f0a0"; -} -.wi-moon-waxing-gibbous-5:before { - content: "\f0a1"; -} -.wi-moon-waxing-gibbous-6:before { - content: "\f0a2"; -} -.wi-moon-full:before { - content: "\f0a3"; -} -.wi-moon-waning-gibbous-1:before { - content: "\f0a4"; -} -.wi-moon-waning-gibbous-2:before { - content: "\f0a5"; -} -.wi-moon-waning-gibbous-3:before { - content: "\f0a6"; -} -.wi-moon-waning-gibbous-4:before { - content: "\f0a7"; -} -.wi-moon-waning-gibbous-5:before { - content: "\f0a8"; -} -.wi-moon-waning-gibbous-6:before { - content: "\f0a9"; -} -.wi-moon-third-quarter:before { - content: "\f0aa"; -} -.wi-moon-waning-crescent-1:before { - content: "\f0ab"; -} -.wi-moon-waning-crescent-2:before { - content: "\f0ac"; -} -.wi-moon-waning-crescent-3:before { - content: "\f0ad"; -} -.wi-moon-waning-crescent-4:before { - content: "\f0ae"; -} -.wi-moon-waning-crescent-5:before { - content: "\f0af"; -} -.wi-moon-waning-crescent-6:before { - content: "\f0b0"; -} -.wi-moon-alt-new:before { - content: "\f0eb"; -} -.wi-moon-alt-waxing-cresent-1:before { - content: "\f0d0"; -} -.wi-moon-alt-waxing-cresent-2:before { - content: "\f0d1"; -} -.wi-moon-alt-waxing-cresent-3:before { - content: "\f0d2"; -} -.wi-moon-alt-waxing-cresent-4:before { - content: "\f0d3"; -} -.wi-moon-alt-waxing-cresent-5:before { - content: "\f0d4"; -} -.wi-moon-alt-waxing-cresent-6:before { - content: "\f0d5"; -} -.wi-moon-alt-first-quarter:before { - content: "\f0d6"; -} -.wi-moon-alt-waxing-gibbous-1:before { - content: "\f0d7"; -} -.wi-moon-alt-waxing-gibbous-2:before { - content: "\f0d8"; -} -.wi-moon-alt-waxing-gibbous-3:before { - content: "\f0d9"; -} -.wi-moon-alt-waxing-gibbous-4:before { - content: "\f0da"; -} -.wi-moon-alt-waxing-gibbous-5:before { - content: "\f0db"; -} -.wi-moon-alt-waxing-gibbous-6:before { - content: "\f0dc"; -} -.wi-moon-alt-full:before { - content: "\f0dd"; -} -.wi-moon-alt-waning-gibbous-1:before { - content: "\f0de"; -} -.wi-moon-alt-waning-gibbous-2:before { - content: "\f0df"; -} -.wi-moon-alt-waning-gibbous-3:before { - content: "\f0e0"; -} -.wi-moon-alt-waning-gibbous-4:before { - content: "\f0e1"; -} -.wi-moon-alt-waning-gibbous-5:before { - content: "\f0e2"; -} -.wi-moon-alt-waning-gibbous-6:before { - content: "\f0e3"; -} -.wi-moon-alt-third-quarter:before { - content: "\f0e4"; -} -.wi-moon-alt-waning-crescent-1:before { - content: "\f0e5"; -} -.wi-moon-alt-waning-crescent-2:before { - content: "\f0e6"; -} -.wi-moon-alt-waning-crescent-3:before { - content: "\f0e7"; -} -.wi-moon-alt-waning-crescent-4:before { - content: "\f0e8"; -} -.wi-moon-alt-waning-crescent-5:before { - content: "\f0e9"; -} -.wi-moon-alt-waning-crescent-6:before { - content: "\f0ea"; -} -.wi-moon-0:before { - content: "\f095"; -} -.wi-moon-1:before { - content: "\f096"; -} -.wi-moon-2:before { - content: "\f097"; -} -.wi-moon-3:before { - content: "\f098"; -} -.wi-moon-4:before { - content: "\f099"; -} -.wi-moon-5:before { - content: "\f09a"; -} -.wi-moon-6:before { - content: "\f09b"; -} -.wi-moon-7:before { - content: "\f09c"; -} -.wi-moon-8:before { - content: "\f09d"; -} -.wi-moon-9:before { - content: "\f09e"; -} -.wi-moon-10:before { - content: "\f09f"; -} -.wi-moon-11:before { - content: "\f0a0"; -} -.wi-moon-12:before { - content: "\f0a1"; -} -.wi-moon-13:before { - content: "\f0a2"; -} -.wi-moon-14:before { - content: "\f0a3"; -} -.wi-moon-15:before { - content: "\f0a4"; -} -.wi-moon-16:before { - content: "\f0a5"; -} -.wi-moon-17:before { - content: "\f0a6"; -} -.wi-moon-18:before { - content: "\f0a7"; -} -.wi-moon-19:before { - content: "\f0a8"; -} -.wi-moon-20:before { - content: "\f0a9"; -} -.wi-moon-21:before { - content: "\f0aa"; -} -.wi-moon-22:before { - content: "\f0ab"; -} -.wi-moon-23:before { - content: "\f0ac"; -} -.wi-moon-24:before { - content: "\f0ad"; -} -.wi-moon-25:before { - content: "\f0ae"; -} -.wi-moon-26:before { - content: "\f0af"; -} -.wi-moon-27:before { - content: "\f0b0"; -} -.wi-time-1:before { - content: "\f08a"; -} -.wi-time-2:before { - content: "\f08b"; -} -.wi-time-3:before { - content: "\f08c"; -} -.wi-time-4:before { - content: "\f08d"; -} -.wi-time-5:before { - content: "\f08e"; -} -.wi-time-6:before { - content: "\f08f"; -} -.wi-time-7:before { - content: "\f090"; -} -.wi-time-8:before { - content: "\f091"; -} -.wi-time-9:before { - content: "\f092"; -} -.wi-time-10:before { - content: "\f093"; -} -.wi-time-11:before { - content: "\f094"; -} -.wi-time-12:before { - content: "\f089"; -} -.wi-direction-up:before { - content: "\f058"; -} -.wi-direction-up-right:before { - content: "\f057"; -} -.wi-direction-right:before { - content: "\f04d"; -} -.wi-direction-down-right:before { - content: "\f088"; -} -.wi-direction-down:before { - content: "\f044"; -} -.wi-direction-down-left:before { - content: "\f043"; -} -.wi-direction-left:before { - content: "\f048"; -} -.wi-direction-up-left:before { - content: "\f087"; -} -.wi-wind-beaufort-0:before { - content: "\f0b7"; -} -.wi-wind-beaufort-1:before { - content: "\f0b8"; -} -.wi-wind-beaufort-2:before { - content: "\f0b9"; -} -.wi-wind-beaufort-3:before { - content: "\f0ba"; -} -.wi-wind-beaufort-4:before { - content: "\f0bb"; -} -.wi-wind-beaufort-5:before { - content: "\f0bc"; -} -.wi-wind-beaufort-6:before { - content: "\f0bd"; -} -.wi-wind-beaufort-7:before { - content: "\f0be"; -} -.wi-wind-beaufort-8:before { - content: "\f0bf"; -} -.wi-wind-beaufort-9:before { - content: "\f0c0"; -} -.wi-wind-beaufort-10:before { - content: "\f0c1"; -} -.wi-wind-beaufort-11:before { - content: "\f0c2"; -} -.wi-wind-beaufort-12:before { - content: "\f0c3"; -} -.wi-yahoo-0:before { - content: "\f056"; -} -.wi-yahoo-1:before { - content: "\f00e"; -} -.wi-yahoo-2:before { - content: "\f073"; -} -.wi-yahoo-3:before { - content: "\f01e"; -} -.wi-yahoo-4:before { - content: "\f01e"; -} -.wi-yahoo-5:before { - content: "\f017"; -} -.wi-yahoo-6:before { - content: "\f017"; -} -.wi-yahoo-7:before { - content: "\f017"; -} -.wi-yahoo-8:before { - content: "\f015"; -} -.wi-yahoo-9:before { - content: "\f01a"; -} -.wi-yahoo-10:before { - content: "\f015"; -} -.wi-yahoo-11:before { - content: "\f01a"; -} -.wi-yahoo-12:before { - content: "\f01a"; -} -.wi-yahoo-13:before { - content: "\f01b"; -} -.wi-yahoo-14:before { - content: "\f00a"; -} -.wi-yahoo-15:before { - content: "\f064"; -} -.wi-yahoo-16:before { - content: "\f01b"; -} -.wi-yahoo-17:before { - content: "\f015"; -} -.wi-yahoo-18:before { - content: "\f017"; -} -.wi-yahoo-19:before { - content: "\f063"; -} -.wi-yahoo-20:before { - content: "\f014"; -} -.wi-yahoo-21:before { - content: "\f021"; -} -.wi-yahoo-22:before { - content: "\f062"; -} -.wi-yahoo-23:before { - content: "\f050"; -} -.wi-yahoo-24:before { - content: "\f050"; -} -.wi-yahoo-25:before { - content: "\f076"; -} -.wi-yahoo-26:before { - content: "\f013"; -} -.wi-yahoo-27:before { - content: "\f031"; -} -.wi-yahoo-28:before { - content: "\f002"; -} -.wi-yahoo-29:before { - content: "\f031"; -} -.wi-yahoo-30:before { - content: "\f002"; -} -.wi-yahoo-31:before { - content: "\f02e"; -} -.wi-yahoo-32:before { - content: "\f00d"; -} -.wi-yahoo-33:before { - content: "\f083"; -} -.wi-yahoo-34:before { - content: "\f00c"; -} -.wi-yahoo-35:before { - content: "\f017"; -} -.wi-yahoo-36:before { - content: "\f072"; -} -.wi-yahoo-37:before { - content: "\f00e"; -} -.wi-yahoo-38:before { - content: "\f00e"; -} -.wi-yahoo-39:before { - content: "\f00e"; -} -.wi-yahoo-40:before { - content: "\f01a"; -} -.wi-yahoo-41:before { - content: "\f064"; -} -.wi-yahoo-42:before { - content: "\f01b"; -} -.wi-yahoo-43:before { - content: "\f064"; -} -.wi-yahoo-44:before { - content: "\f00c"; -} -.wi-yahoo-45:before { - content: "\f00e"; -} -.wi-yahoo-46:before { - content: "\f01b"; -} -.wi-yahoo-47:before { - content: "\f00e"; -} -.wi-yahoo-3200:before { - content: "\f077"; -} -.wi-forecast-io-clear-day:before { - content: "\f00d"; -} -.wi-forecast-io-clear-night:before { - content: "\f02e"; -} -.wi-forecast-io-rain:before { - content: "\f019"; -} -.wi-forecast-io-snow:before { - content: "\f01b"; -} -.wi-forecast-io-sleet:before { - content: "\f0b5"; -} -.wi-forecast-io-wind:before { - content: "\f050"; -} -.wi-forecast-io-fog:before { - content: "\f014"; -} -.wi-forecast-io-cloudy:before { - content: "\f013"; -} -.wi-forecast-io-partly-cloudy-day:before { - content: "\f002"; -} -.wi-forecast-io-partly-cloudy-night:before { - content: "\f031"; -} -.wi-forecast-io-hail:before { - content: "\f015"; -} -.wi-forecast-io-thunderstorm:before { - content: "\f01e"; -} -.wi-forecast-io-tornado:before { - content: "\f056"; -} -.wi-wmo4680-0:before, -.wi-wmo4680-00:before { - content: "\f055"; -} -.wi-wmo4680-1:before, -.wi-wmo4680-01:before { - content: "\f013"; -} -.wi-wmo4680-2:before, -.wi-wmo4680-02:before { - content: "\f055"; -} -.wi-wmo4680-3:before, -.wi-wmo4680-03:before { - content: "\f013"; -} -.wi-wmo4680-4:before, -.wi-wmo4680-04:before { - content: "\f014"; -} -.wi-wmo4680-5:before, -.wi-wmo4680-05:before { - content: "\f014"; -} -.wi-wmo4680-10:before { - content: "\f014"; -} -.wi-wmo4680-11:before { - content: "\f014"; -} -.wi-wmo4680-12:before { - content: "\f016"; -} -.wi-wmo4680-18:before { - content: "\f050"; -} -.wi-wmo4680-20:before { - content: "\f014"; -} -.wi-wmo4680-21:before { - content: "\f017"; -} -.wi-wmo4680-22:before { - content: "\f017"; -} -.wi-wmo4680-23:before { - content: "\f019"; -} -.wi-wmo4680-24:before { - content: "\f01b"; -} -.wi-wmo4680-25:before { - content: "\f015"; -} -.wi-wmo4680-26:before { - content: "\f01e"; -} -.wi-wmo4680-27:before { - content: "\f063"; -} -.wi-wmo4680-28:before { - content: "\f063"; -} -.wi-wmo4680-29:before { - content: "\f063"; -} -.wi-wmo4680-30:before { - content: "\f014"; -} -.wi-wmo4680-31:before { - content: "\f014"; -} -.wi-wmo4680-32:before { - content: "\f014"; -} -.wi-wmo4680-33:before { - content: "\f014"; -} -.wi-wmo4680-34:before { - content: "\f014"; -} -.wi-wmo4680-35:before { - content: "\f014"; -} -.wi-wmo4680-40:before { - content: "\f017"; -} -.wi-wmo4680-41:before { - content: "\f01c"; -} -.wi-wmo4680-42:before { - content: "\f019"; -} -.wi-wmo4680-43:before { - content: "\f01c"; -} -.wi-wmo4680-44:before { - content: "\f019"; -} -.wi-wmo4680-45:before { - content: "\f015"; -} -.wi-wmo4680-46:before { - content: "\f015"; -} -.wi-wmo4680-47:before { - content: "\f01b"; -} -.wi-wmo4680-48:before { - content: "\f01b"; -} -.wi-wmo4680-50:before { - content: "\f01c"; -} -.wi-wmo4680-51:before { - content: "\f01c"; -} -.wi-wmo4680-52:before { - content: "\f019"; -} -.wi-wmo4680-53:before { - content: "\f019"; -} -.wi-wmo4680-54:before { - content: "\f076"; -} -.wi-wmo4680-55:before { - content: "\f076"; -} -.wi-wmo4680-56:before { - content: "\f076"; -} -.wi-wmo4680-57:before { - content: "\f01c"; -} -.wi-wmo4680-58:before { - content: "\f019"; -} -.wi-wmo4680-60:before { - content: "\f01c"; -} -.wi-wmo4680-61:before { - content: "\f01c"; -} -.wi-wmo4680-62:before { - content: "\f019"; -} -.wi-wmo4680-63:before { - content: "\f019"; -} -.wi-wmo4680-64:before { - content: "\f015"; -} -.wi-wmo4680-65:before { - content: "\f015"; -} -.wi-wmo4680-66:before { - content: "\f015"; -} -.wi-wmo4680-67:before { - content: "\f017"; -} -.wi-wmo4680-68:before { - content: "\f017"; -} -.wi-wmo4680-70:before { - content: "\f01b"; -} -.wi-wmo4680-71:before { - content: "\f01b"; -} -.wi-wmo4680-72:before { - content: "\f01b"; -} -.wi-wmo4680-73:before { - content: "\f01b"; -} -.wi-wmo4680-74:before { - content: "\f076"; -} -.wi-wmo4680-75:before { - content: "\f076"; -} -.wi-wmo4680-76:before { - content: "\f076"; -} -.wi-wmo4680-77:before { - content: "\f01b"; -} -.wi-wmo4680-78:before { - content: "\f076"; -} -.wi-wmo4680-80:before { - content: "\f019"; -} -.wi-wmo4680-81:before { - content: "\f01c"; -} -.wi-wmo4680-82:before { - content: "\f019"; -} -.wi-wmo4680-83:before { - content: "\f019"; -} -.wi-wmo4680-84:before { - content: "\f01d"; -} -.wi-wmo4680-85:before { - content: "\f017"; -} -.wi-wmo4680-86:before { - content: "\f017"; -} -.wi-wmo4680-87:before { - content: "\f017"; -} -.wi-wmo4680-89:before { - content: "\f015"; -} -.wi-wmo4680-90:before { - content: "\f016"; -} -.wi-wmo4680-91:before { - content: "\f01d"; -} -.wi-wmo4680-92:before { - content: "\f01e"; -} -.wi-wmo4680-93:before { - content: "\f01e"; -} -.wi-wmo4680-94:before { - content: "\f016"; -} -.wi-wmo4680-95:before { - content: "\f01e"; -} -.wi-wmo4680-96:before { - content: "\f01e"; -} -.wi-wmo4680-99:before { - content: "\f056"; -} -.wi-owm-200:before { - content: "\f01e"; -} -.wi-owm-201:before { - content: "\f01e"; -} -.wi-owm-202:before { - content: "\f01e"; -} -.wi-owm-210:before { - content: "\f016"; -} -.wi-owm-211:before { - content: "\f016"; -} -.wi-owm-212:before { - content: "\f016"; -} -.wi-owm-221:before { - content: "\f016"; -} -.wi-owm-230:before { - content: "\f01e"; -} -.wi-owm-231:before { - content: "\f01e"; -} -.wi-owm-232:before { - content: "\f01e"; -} -.wi-owm-300:before { - content: "\f01c"; -} -.wi-owm-301:before { - content: "\f01c"; -} -.wi-owm-302:before { - content: "\f019"; -} -.wi-owm-310:before { - content: "\f017"; -} -.wi-owm-311:before { - content: "\f019"; -} -.wi-owm-312:before { - content: "\f019"; -} -.wi-owm-313:before { - content: "\f01a"; -} -.wi-owm-314:before { - content: "\f019"; -} -.wi-owm-321:before { - content: "\f01c"; -} -.wi-owm-500:before { - content: "\f01c"; -} -.wi-owm-501:before { - content: "\f019"; -} -.wi-owm-502:before { - content: "\f019"; -} -.wi-owm-503:before { - content: "\f019"; -} -.wi-owm-504:before { - content: "\f019"; -} -.wi-owm-511:before { - content: "\f017"; -} -.wi-owm-520:before { - content: "\f01a"; -} -.wi-owm-521:before { - content: "\f01a"; -} -.wi-owm-522:before { - content: "\f01a"; -} -.wi-owm-531:before { - content: "\f01d"; -} -.wi-owm-600:before { - content: "\f01b"; -} -.wi-owm-601:before { - content: "\f01b"; -} -.wi-owm-602:before { - content: "\f0b5"; -} -.wi-owm-611:before { - content: "\f017"; -} -.wi-owm-612:before { - content: "\f017"; -} -.wi-owm-615:before { - content: "\f017"; -} -.wi-owm-616:before { - content: "\f017"; -} -.wi-owm-620:before { - content: "\f017"; -} -.wi-owm-621:before { - content: "\f01b"; -} -.wi-owm-622:before { - content: "\f01b"; -} -.wi-owm-701:before { - content: "\f01a"; -} -.wi-owm-711:before { - content: "\f062"; -} -.wi-owm-721:before { - content: "\f0b6"; -} -.wi-owm-731:before { - content: "\f063"; -} -.wi-owm-741:before { - content: "\f014"; -} -.wi-owm-761:before { - content: "\f063"; -} -.wi-owm-762:before { - content: "\f063"; -} -.wi-owm-771:before { - content: "\f011"; -} -.wi-owm-781:before { - content: "\f056"; -} -.wi-owm-800:before { - content: "\f00d"; -} -.wi-owm-801:before { - content: "\f011"; -} -.wi-owm-802:before { - content: "\f011"; -} -.wi-owm-803:before { - content: "\f011"; -} -.wi-owm-803:before { - content: "\f012"; -} -.wi-owm-804:before { - content: "\f013"; -} -.wi-owm-900:before { - content: "\f056"; -} -.wi-owm-901:before { - content: "\f01d"; -} -.wi-owm-902:before { - content: "\f073"; -} -.wi-owm-903:before { - content: "\f076"; -} -.wi-owm-904:before { - content: "\f072"; -} -.wi-owm-905:before { - content: "\f021"; -} -.wi-owm-906:before { - content: "\f015"; -} -.wi-owm-957:before { - content: "\f050"; -} -.wi-owm-day-200:before { - content: "\f010"; -} -.wi-owm-day-201:before { - content: "\f010"; -} -.wi-owm-day-202:before { - content: "\f010"; -} -.wi-owm-day-210:before { - content: "\f005"; -} -.wi-owm-day-211:before { - content: "\f005"; -} -.wi-owm-day-212:before { - content: "\f005"; -} -.wi-owm-day-221:before { - content: "\f005"; -} -.wi-owm-day-230:before { - content: "\f010"; -} -.wi-owm-day-231:before { - content: "\f010"; -} -.wi-owm-day-232:before { - content: "\f010"; -} -.wi-owm-day-300:before { - content: "\f00b"; -} -.wi-owm-day-301:before { - content: "\f00b"; -} -.wi-owm-day-302:before { - content: "\f008"; -} -.wi-owm-day-310:before { - content: "\f008"; -} -.wi-owm-day-311:before { - content: "\f008"; -} -.wi-owm-day-312:before { - content: "\f008"; -} -.wi-owm-day-313:before { - content: "\f008"; -} -.wi-owm-day-314:before { - content: "\f008"; -} -.wi-owm-day-321:before { - content: "\f00b"; -} -.wi-owm-day-500:before { - content: "\f00b"; -} -.wi-owm-day-501:before { - content: "\f008"; -} -.wi-owm-day-502:before { - content: "\f008"; -} -.wi-owm-day-503:before { - content: "\f008"; -} -.wi-owm-day-504:before { - content: "\f008"; -} -.wi-owm-day-511:before { - content: "\f006"; -} -.wi-owm-day-520:before { - content: "\f009"; -} -.wi-owm-day-521:before { - content: "\f009"; -} -.wi-owm-day-522:before { - content: "\f009"; -} -.wi-owm-day-531:before { - content: "\f00e"; -} -.wi-owm-day-600:before { - content: "\f00a"; -} -.wi-owm-day-601:before { - content: "\f0b2"; -} -.wi-owm-day-602:before { - content: "\f00a"; -} -.wi-owm-day-611:before { - content: "\f006"; -} -.wi-owm-day-612:before { - content: "\f006"; -} -.wi-owm-day-615:before { - content: "\f006"; -} -.wi-owm-day-616:before { - content: "\f006"; -} -.wi-owm-day-620:before { - content: "\f006"; -} -.wi-owm-day-621:before { - content: "\f00a"; -} -.wi-owm-day-622:before { - content: "\f00a"; -} -.wi-owm-day-701:before { - content: "\f009"; -} -.wi-owm-day-711:before { - content: "\f062"; -} -.wi-owm-day-721:before { - content: "\f0b6"; -} -.wi-owm-day-731:before { - content: "\f063"; -} -.wi-owm-day-741:before { - content: "\f003"; -} -.wi-owm-day-761:before { - content: "\f063"; -} -.wi-owm-day-762:before { - content: "\f063"; -} -.wi-owm-day-781:before { - content: "\f056"; -} -.wi-owm-day-800:before { - content: "\f00d"; -} -.wi-owm-day-801:before { - content: "\f000"; -} -.wi-owm-day-802:before { - content: "\f000"; -} -.wi-owm-day-803:before { - content: "\f000"; -} -.wi-owm-day-804:before { - content: "\f00c"; -} -.wi-owm-day-900:before { - content: "\f056"; -} -.wi-owm-day-902:before { - content: "\f073"; -} -.wi-owm-day-903:before { - content: "\f076"; -} -.wi-owm-day-904:before { - content: "\f072"; -} -.wi-owm-day-906:before { - content: "\f004"; -} -.wi-owm-day-957:before { - content: "\f050"; -} -.wi-owm-night-200:before { - content: "\f02d"; -} -.wi-owm-night-201:before { - content: "\f02d"; -} -.wi-owm-night-202:before { - content: "\f02d"; -} -.wi-owm-night-210:before { - content: "\f025"; -} -.wi-owm-night-211:before { - content: "\f025"; -} -.wi-owm-night-212:before { - content: "\f025"; -} -.wi-owm-night-221:before { - content: "\f025"; -} -.wi-owm-night-230:before { - content: "\f02d"; -} -.wi-owm-night-231:before { - content: "\f02d"; -} -.wi-owm-night-232:before { - content: "\f02d"; -} -.wi-owm-night-300:before { - content: "\f02b"; -} -.wi-owm-night-301:before { - content: "\f02b"; -} -.wi-owm-night-302:before { - content: "\f028"; -} -.wi-owm-night-310:before { - content: "\f028"; -} -.wi-owm-night-311:before { - content: "\f028"; -} -.wi-owm-night-312:before { - content: "\f028"; -} -.wi-owm-night-313:before { - content: "\f028"; -} -.wi-owm-night-314:before { - content: "\f028"; -} -.wi-owm-night-321:before { - content: "\f02b"; -} -.wi-owm-night-500:before { - content: "\f02b"; -} -.wi-owm-night-501:before { - content: "\f028"; -} -.wi-owm-night-502:before { - content: "\f028"; -} -.wi-owm-night-503:before { - content: "\f028"; -} -.wi-owm-night-504:before { - content: "\f028"; -} -.wi-owm-night-511:before { - content: "\f026"; -} -.wi-owm-night-520:before { - content: "\f029"; -} -.wi-owm-night-521:before { - content: "\f029"; -} -.wi-owm-night-522:before { - content: "\f029"; -} -.wi-owm-night-531:before { - content: "\f02c"; -} -.wi-owm-night-600:before { - content: "\f02a"; -} -.wi-owm-night-601:before { - content: "\f0b4"; -} -.wi-owm-night-602:before { - content: "\f02a"; -} -.wi-owm-night-611:before { - content: "\f026"; -} -.wi-owm-night-612:before { - content: "\f026"; -} -.wi-owm-night-615:before { - content: "\f026"; -} -.wi-owm-night-616:before { - content: "\f026"; -} -.wi-owm-night-620:before { - content: "\f026"; -} -.wi-owm-night-621:before { - content: "\f02a"; -} -.wi-owm-night-622:before { - content: "\f02a"; -} -.wi-owm-night-701:before { - content: "\f029"; -} -.wi-owm-night-711:before { - content: "\f062"; -} -.wi-owm-night-721:before { - content: "\f0b6"; -} -.wi-owm-night-731:before { - content: "\f063"; -} -.wi-owm-night-741:before { - content: "\f04a"; -} -.wi-owm-night-761:before { - content: "\f063"; -} -.wi-owm-night-762:before { - content: "\f063"; -} -.wi-owm-night-781:before { - content: "\f056"; -} -.wi-owm-night-800:before { - content: "\f02e"; -} -.wi-owm-night-801:before { - content: "\f022"; -} -.wi-owm-night-802:before { - content: "\f022"; -} -.wi-owm-night-803:before { - content: "\f022"; -} -.wi-owm-night-804:before { - content: "\f086"; -} -.wi-owm-night-900:before { - content: "\f056"; -} -.wi-owm-night-902:before { - content: "\f073"; -} -.wi-owm-night-903:before { - content: "\f076"; -} -.wi-owm-night-904:before { - content: "\f072"; -} -.wi-owm-night-906:before { - content: "\f024"; -} -.wi-owm-night-957:before { - content: "\f050"; -} diff --git a/view/assets/css/smmposting.css b/view/assets/css/smmposting.css index 5155bcc..4d3b88f 100644 --- a/view/assets/css/smmposting.css +++ b/view/assets/css/smmposting.css @@ -108,7 +108,7 @@ } .product-arrow i { - background-image: url(../../../image/smmposting/sprite.cf7ea511430611c78ef17b5c7abdaa7d.png); + background-image: url(../../image/sprite.png); background-position: -116px -64px; width: 82px; height: 29px; @@ -142,7 +142,7 @@ } .product-arrow-up i { - background-image: url(../../../image/smmposting/sprite.cf7ea511430611c78ef17b5c7abdaa7d.png); + background-image: url(../../image/sprite.png); background-position: -116px -64px; width: 82px; height: 29px; diff --git a/view/assets/css/smmposting_wordpress.css b/view/assets/css/smmposting_wordpress.css index c9fdf0f..0ec3be7 100644 --- a/view/assets/css/smmposting_wordpress.css +++ b/view/assets/css/smmposting_wordpress.css @@ -23,4 +23,60 @@ .smm-project { background-image: url(../../image/bg_image.png) !important; +} + +.socials-grey i.fab.fa-vk:hover { + color:#45668e; +} + +.socials-grey i.fab.fa-odnoklassniki:hover { + color:#ed812b; +} + +.socials-grey i.fab.fa-send:hover { + color:#0088cc; +} + +.socials-grey i.fab.fa-facebook:hover { + color:#3b5998; +} + +.socials-grey i.fab.fa-instagram:hover { + color:#e1306c; +} + +.socials-grey i.fab.fa-tumblr:hover { + color:#35465c; +} + +.socials-grey i.fab.fa-twitter:hover { + color:#1da1f2; +} + +.socials i.fab.fa-vk { + color:#45668e; +} + +.socials i.fab.fa-odnoklassniki { + color:#ed812b; +} + +.socials i.fab.fa-send { + color:#0088cc; +} + +.socials i.fab.fa-facebook { + color:#3b5998; +} + +.socials i.fab.fa-instagram { + color:#e1306c; +} + +.socials i.fab.fa-tumblr { + color:#35465c; +} + +.socials i.fab.fa-twitter { + color:#1da1f2; } \ No newline at end of file diff --git a/view/assets/js/instagram.js b/view/assets/js/instagram.js new file mode 100644 index 0000000..871040f --- /dev/null +++ b/view/assets/js/instagram.js @@ -0,0 +1,199 @@ +// remove social GET variable +history.replaceState && history.replaceState( + null, '', location.pathname + location.search.replace(/[\?&]s=[^&]+/, '').replace(/^&/, '?') +); +history.replaceState && history.replaceState( + null, '', location.pathname + location.search.replace(/[\?&]error=[^&]+/, '').replace(/^&/, '?') +); + + +const igStatuses = JSON.parse('["\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c Instagram","\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445","\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f","\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430","\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430","\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430"]'); + +// get status +function getIGStatus () { + let status = ''; + let index = 0; + const intervalStatus = setInterval(() => { + status = igStatuses[index]; + if (index < igStatuses.length - 1) { + index++; + } else { + clearInterval(intervalStatus); + } + $('.status-description').html(`${status}...`); + }, 5000); +} + + +// ig login +async function IGLogin() { + const username = $('.instagram_login').val(); + const password = $('.instagram_password').val(); + + // if empty username or password + if (username === '' || password === '') { + Swal.fire({ + title: "Внимание", + text: "Введите логин и пароль для авторизации", + type: "warning", + }); + return; + } + + let result = await $.ajax({ + method: "GET", + url: 'https://smm-posting.ru/api/v2/chat/ig/loginCheck', + data: {username: username, password: password}, + beforeSend: function( xhr ) { + getIGStatus(); + Swal.queue([{ + imageUrl: "https://smm-posting.ru/images/ajax/loading.gif", + imageWidth: 151, + imageHeight: 151, + imageAlt: 'Custom image', + html: `

Подождите, выполняется запрос...

`, + showConfirmButton: false, + }]); + } + }); + + if (result == '') { + //console.log('empty, but here'); + $("#addInstagram").submit(); + setTimeout(() => { + window.location.href = `https://smm-posting.ru/smm/accounts?iglogin=Y&instagram_login=${username}`; + }, 15000); + } else { + let answer = JSON.parse(result); + if (answer['result']['ERROR'] === 'Y') { + switch (answer['result']['TYPE']) { + case 'LOGIN_ERROR': + Swal.fire({ + title: "Внимание", + text: answer['result']['MESSAGE'], + type: "warning", + }); + return; + case 'WITH_2FA_LOGIN_ERROR': + const { value: code } = await Swal.fire({ + title: "Введите код", + input: 'text', + inputValue: '', + showCancelButton: false, + inputValidator: (value) => { + if (!value) { + return "Необходимо ввести код!"; + } + } + }); + if (code) { + let resultFA = await $.ajax({ + method: "GET", + url: 'https://smm-posting.ru/api/v2/chat/ig/login2FA', + data: {username: username, password: password, code: code , fa: 'Y'}, + beforeSend: function( xhr ) { + Swal.queue([{ + imageUrl: "https://smm-posting.ru/images/ajax/loading.gif", + imageWidth: 151, + imageHeight: 151, + imageAlt: 'Custom image', + html: `

Подождите, выполняется запрос...

`, + showConfirmButton: false, + }]); + } + }); + console.log(resultFA); + let answerFA = JSON.parse(resultFA); + //console.log(answerFA); + if (answerFA['result']['ERROR'] === 'N') { + $("#addInstagram").submit(); + } + } + return; + case 'SELECT_VERIF': + + const inputOptions = new Promise((resolve) => { + { + resolve({ + 'sms': 'sms', + 'email': 'email' + }) + } + }); + + const { value: type } = await Swal.fire({ + title: "Подтверждение профиля", + input: 'radio', + inputOptions: inputOptions, + inputValidator: (value) => { + if (!value) { + return "Необходимо ввести код!"; + } + } + }); + + if (type) { + let resultGet = await $.ajax({ + method: "GET", + url: 'https://smm-posting.ru/api/v2/chat/ig/loginGetCode', + data: {username: username, password: password, type: type}, + beforeSend: function( xhr ) { + Swal.queue([{ + imageUrl: "https://smm-posting.ru/images/ajax/loading.gif", + imageWidth: 151, + imageHeight: 151, + imageAlt: 'Custom image', + html: `

Подождите, выполняется запрос...

`, + showConfirmButton: false, + }]); + } + }); + let answerGet = JSON.parse(resultGet); + if (answerGet['result']['ERROR'] === 'Y') { + if (answerGet['result']['TYPE'] === 'INPUT_CODE') { + const { value: code } = await Swal.fire({ + title: "Введите код", + input: 'text', + inputValue: '', + showCancelButton: false, + inputValidator: (value) => { + if (!value) { + return "Необходимо ввести код!"; + } + } + }) + + if (code) { + + let resultCode = await $.ajax({ + method: "GET", + url: 'https://smm-posting.ru/api/v2/chat/ig/login', + data: {username: username, password: password, code: code}, + beforeSend: function( xhr ) { + Swal.queue([{ + imageUrl: "https://smm-posting.ru/images/ajax/loading.gif", + imageWidth: 151, + imageHeight: 151, + imageAlt: 'Custom image', + html: `

Подождите, выполняется запрос...

`, + showConfirmButton: false, + }]); + } + }); + let answerCode = JSON.parse(resultCode); + //console.log(answerCode); + if (answerCode['result']['ERROR'] === 'N') { + $("#addInstagram").submit(); + } + } + } + } + } + return; + } + } + if (answer['result']['ERROR'] === 'N') { + $("#addInstagram").submit(); + } + } +} \ No newline at end of file diff --git a/view/contact.php b/view/contact.php new file mode 100644 index 0000000..9d96182 --- /dev/null +++ b/view/contact.php @@ -0,0 +1,58 @@ +
+ +
+
+
+
+
+
+
+ + +
+
+

SMM-posting.ru

+ +
+
+ + | + + +
+

+ +
+ + + + + + + +
+
+
+ +
+
+
+
+
+
+
+ +
+ + diff --git a/view/image/sprite.cf7ea511430611c78ef17b5c7abdaa7d.png b/view/image/sprite.png similarity index 100% rename from view/image/sprite.cf7ea511430611c78ef17b5c7abdaa7d.png rename to view/image/sprite.png diff --git a/view/menu.php b/view/menu.php index 1295f21..0e8fd65 100644 --- a/view/menu.php +++ b/view/menu.php @@ -1,6 +1,4 @@ - -


- - + @@ -27,7 +24,7 @@ icon: 'warning', title: 'Внимание!', text: 'До момента оплаты осталось дней: ', - footer: 'Оплатить прямо сейчас', + footer: 'Оплатить прямо сейчас?', }) - \ No newline at end of file + diff --git a/view/post.php b/view/post.php index 42542da..01eafb2 100644 --- a/view/post.php +++ b/view/post.php @@ -1,388 +1,430 @@ -
- - -
- - -
- -
- - -
- -
- - -
-
-
- - -
+
+ -
-
-

-
-
-
+
- - + +
+ +
+ + +
+ +
+ +
+
+
+ + +
+
+
- 0) { ?> - $item) { ?> -
-
- <?php echo $item['image']; ?> -
-
-
+
+
+

+
+
+ + + + + 0) { ?> + $item) { ?> +
+
+ +
+
+
+
+
- -
+ + - - - -
-
-
-
-
- - $item) { ?> - + +
+
+
+
+
+ 0) { ?> + $item) { ?> + + - -
-
-
- -
-
- +
+
+
+ +
+
+ +
-
-
-
- - + + + + + + style="display: none" > + +
+ + + - style="display: none" > - -
-
style="display: none"> -
-
- - value="1" id="odnoklassniki" name="smmposting_post[odnoklassniki]" class="custom-control-input checkbox-social"> - + + +
style="display: none"> +
+
+ value="ok" id="ok" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
style="display: none" > -
-
- - value="1" id="vkontakte" name="smmposting_post[vkontakte]" class="custom-control-input checkbox-social"> - +
style="display: none" > +
+
+ value="vk" id="vk" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
style="display: none" > -
-
- - value="1" id="telegram" name="smmposting_post[telegram]" class="custom-control-input checkbox-social"> - +
style="display: none" > +
+
+ value="tg" id="tg" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
style="display: none" > -
-
- - value="1" id="instagram" name="smmposting_post[instagram]" class="custom-control-input checkbox-social"> - +
style="display: none" > +
+
+ value="ig" id="ig" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
style="display: none" > -
-
- - value="1" id="facebook" name="smmposting_post[facebook]" class="custom-control-input checkbox-social"> - +
style="display: none" > +
+
+ value="fb" id="fb" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
style="display: none" > -
-
- - value="1" id="tumblr" name="smmposting_post[tumblr]" class="custom-control-input checkbox-social"> - +
style="display: none" > +
+
+ value="tb" id="tb" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
style="display: none" > -
-
- - value="1" id="twitter" name="smmposting_post[twitter]" class="custom-control-input checkbox-social"> - +
style="display: none" > +
+
+ value="tw" id="tw" name="socials[]" class="custom-control-input checkbox-social"> + +
-
-
- -
-
- +
+ +
+
+ +
-
-
- -
-
- "> - | | +
+ +
+
+ + | | +
-
-
- -
-
- " > - | | +
+ +
+
+ + | | +
-
- +
-
- - - - - + + + + + - - - - success: function(file, response) - { - let resp = JSON.parse(response); - if (resp['data']['url']) { - $('.hiddens').append(''); - } - }, - error: function(file, response) - { - return false; - } - }; - // Dropzone.on("sending", function(file, xhr, formData) { - // // Will sendthe filesize along with the file as POST data. - // formData.append("filesize", file.size); - // }); - - }); - - - - - - \ No newline at end of file + $('.del_button').click(function(){ + var delete_file_id = $(this).attr('data-delete_file_id'); + $('.'+delete_file_id).remove(); + $(this).parent().remove(); + if ($('.dz-image-preview').length == 0) { + $('#dropzone').removeClass('dz-started'); + } + }); + }); + })(jQuery); + \ No newline at end of file diff --git a/view/posts.php b/view/posts.php index e7ecaf1..c8a6a56 100644 --- a/view/posts.php +++ b/view/posts.php @@ -1,3 +1,4 @@ +