Jump to content

sergeevizh

Пользователь
  • Content Count

    383
  • Joined

Posts posted by sergeevizh

  1. Благодарю за ответ! Проблемы подключить диск и правда нет, меня как раз больше интересует процесс переноса папки files на него, корректно ли работает Simpla, если после подключения нового диска просто поменять пути до папки files в config/config.php

     

    Кстати, не совсем понял, почему у вас config.php находится в папке api...

     

    Если вы прописывали новые пути в config.php - можете ли скинуть строчку с путём, чтобы понять как прописано у вас, если у вас всё работает. Спасибо!

    Указать путь к папке в config/config.php лишь часть, поэтому нужно ещё прописать именно в api/Config.php функцию которая будет обращаться в этот путь.

    Как это сделать я ещё не знаю, но стало интересно.

    Можно попробовать посмотреть как это сделано на других движках типа Wordpress или Livestreet.

    Я находил лишь хранение файлов в папке на другом домене, а вот внутри одного локального хоста ещё не нашёл.

  2. Привет! 

    Не вижу проблемы подключить SSD диск или даже как сделал я подключил Yandex.Disk 

    Но вот проблема правильно указать путь до папки /files

    Допустим, новый диск монтирован и имеет фс ext4 создаем папку прям в корне /files 

    Вроде имеем путь (представим) /dev/sdb/files

    Дальше либо nginx либо /api/config.php править и прописывать путь к /files

  3.     function email($to, $subject, $message, $from = '', $reply_to = '')
        {
            if (!$this->config->phpmailer_enable) {
                $this->php_mail($to, $subject, $message, $from, $reply_to);
            } else {
                $mailer = new Phpmailer();
                $mailer->IsHTML(true);
                $mailer->CharSet = "utf-8";
                $mailer->IsSMTP();
                $mailer->Host = $this->config->phpmailer_host;
                $mailer->Port = $this->config->phpmailer_port;
                if ($this->config->phpmailer_ssl == true) {
                    $mailer->SMTPSecure = "ssl";
                    $mailer->SMTPAutoTLS = "false";
                    // Отключить проверку сертификата - https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#updating-ca-certificates
                    if ($this->config->phpmailer_ssl_verify != true) {
                        $mailer->SMTPOptions = [
                            'ssl' => [
                                'verify_peer' => false,
                                'verify_peer_name' => false,
                                'allow_self_signed' => true
                            ]
                        ];
                    }
                }
                $mailer->SMTPAuth = true;
                $mailer->Username = $this->config->phpmailer_user;
                $mailer->Password = $this->config->phpmailer_password;
                foreach(preg_split('/[\s,;]+/', $to) as $e) {
                    $mailer->AddAddress($e);
                }
                
                $mailer->From = $mailer->Username; // $from
                $mailer->FromName = $this->settings->company_name;
                $mailer->Sender = $mailer->Username;
                $mailer->Subject = $subject;
                $mailer->Body = $message;
                $mailer->SMTPDebug = $this->SMTPDebug; // 3
                if (!$mailer->Send()) {
                    if ($this->SMTPDebug) {
                        echo 'Message could not be sent.';
                        echo 'Mailer Error: ' . $mailer->ErrorInfo;
                    }
                    $this->php_email($to, $subject, $message, $mailer->From);
                }
            }
        }
    
        function php_email($to, $subject, $message, $from = '', $reply_to = '')
        {
            $headers = "MIME-Version: 1.0\n";
            $headers .= "Content-type: text/html; charset=utf-8; \r\n";
            $headers .= "From: " . $this->settings->company_name . "<$from> \r\n";
            if (!empty($reply_to))
                $headers .= "reply-to: $reply_to\r\n";
            $subject = "=?utf-8?B?" . base64_encode($subject) . "?=";
            @mail($to, $subject, $message, $headers);
        }
    
    

    Поменяйте местами 

  4. Подскажите, как переложить комиссию на магазин, при оплате картой, если ты не ИП?

    И получить статус оплачено? 

     

    Пробовал решение от Нохтер и пару решений с форума, ничего не помогает. 

     

    Проблема в том, как сейчас работает, если товар 1500, то при оплате сумма суммируется с % от Яндекс.Деньги и клиент получает сумму 1530 рублей. Как-то не правильно, перекладывать комиссию на клиента. 

     

    Если закомментировать добавление процента клиент видит сумму полностью 1500, а после оплаты мы получаем 1470 рублей 

    Система же сравнивает сумму в заказе 1500 и 1470 которую получил после оплаты и так как суммы разные статус ОПЛАЧЕНО не ставится. 

    Помогите решить эту проблему. 

  5. Нашел вот такой код

    	$('input[name=url]').keyup(function () {
            if (  ($(this).val().length >=5) && ($(this).val().substr(0, 5) != 'http:') && ($(this).val().substr(0, 5) != 'https') ) {
                $(this).val('http://' + $(this).val());
            }
        });	
    

    Все конечно хорошо и работает

     

    Что если в это поле вставляют ссылку типа mailto: и tel:? 

    Дописал так

    	$('input[name=url]').keyup(function () {
            if (  ($(this).val().length >=5) && ($(this).val().substr(0, 5) != 'http:') && ($(this).val().substr(0, 5) != 'https') && ($(this).val().substr(0, 7) != 'mailto:') && ($(this).val().substr(0, 4) != 'tel:') ) {
                $(this).val('http://' + $(this).val());
            }
        });	
    

     

    Тоже работает

     

    Теперь вопрос другой, так как эта форма заполняется поставщиком или представителем, то возможно будут и глубокие ссылки типа tg://, whatsapp://, skype:// viber:// 

     

    В админке я создал поле с разрешенными префиксами и сохраняю их в json типа ["mailto","tel"]

    Далее проверка на php

    function validate_url_format($url) {
        $parsed_url = parse_url($url);
    
        if(!$parsed_url) {
            return false;
        }
    
        if(!isset($parsed_url['scheme'])) {
            return false;
        }
    
        if(!isset($parsed_url['host']) && !isset($parsed_url['path'])) {
            return false;
        }
    
        $prefix = $parsed_url['scheme'];
    
        if(!in_array($prefix, get_links_allowed_prefixes())) {
            return false;
        }
    
        return true;
    }
    
    function get_links_allowed_prefixes() {
        global $settings;
    
        return array_merge(['http', 'https'], $settings->links_allowed_prefixes);
    }
    

    Как мне лучше сделать, думаю, что не на JS, а на php

     

    Проверку, если scheme пустая и не prefix добавить http:// 

  6. Здравствуйте! 

     

    На странице с формой есть поле input name="url" для указания веб-сайта 

    Ссылки указываются без http

    Как при нажатии кнопки "отправить" произвести проверку, если в поле name="url" введена ссылка на веб-сайт без http, тогда добавить и сохранить. 

    Пробовал что-то придумать по типу масок для телефона и даты, но ничего не вышло 

  7. Скорее всего, на новом хостинге более новая версия PHP (7 вместо 5), и эти сообщения - следствие использования устаревшего кода.

     

    Есть два основных пути:

    1. Отключить выводд предупреждений

    2. Исправлять PHP-код. Обычно мест возникновения таких ошибок много и проявляются не сразу...

     

    Версия PHP на сайте 5.6

     

    Кажется тут Smarty надо обновить

  8. <?php
    
    require_once('api/Simpla.php');
    $simpla = new Simpla();
    
    header("Content-type: text/xml; charset=UTF-8");
    print '<?xml version="1.0" encoding="UTF-8"?>'."\n";
    // Заголовок
    print '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">'."\n";
    
    $simpla->db->query("SET SQL_BIG_SELECTS=1"); 
    // Товары
    $simpla->db->query("SELECT
    	v.id as variant_id, 
    	p.id AS product_id,
    	p.name as product_name,
    	v.name as variant_name,	
    	p.url 
    FROM __variants v
    LEFT JOIN __products p ON v.product_id = p.id
    WHERE p.visible
    GROUP BY v.id
    ORDER BY p.id");
    
    
    $products = $simpla->db->results();
    $prev_product_id = null;
    
    foreach($products as $p) {
    print "<url>
    ";	
    //тут массив с картинками
    $p_images = array();
    foreach($simpla->products->get_images(array('product_id' => $p->product_id)) as $image) {
        $p_images[$image->product_id][] = $image->filename;
    }	
    
    $variant_url = '';
    if ($prev_product_id === $p->product_id)
    	$variant_url = '?variant='.$p->variant_id;
    $prev_product_id = $p->product_id;
    
    	
    print "<loc>".$simpla->config->root_url.'/products/'.$p->url.$variant_url."</loc>";
    //выводим картинки
    	if(!empty($p_images[$p->product_id])) {
    		foreach($p_images[$p->product_id] as $img) {
    			$string =  htmlspecialchars($simpla->config->root_url.'/files/originals/'.$img);
    			print "
    			<image:image>
    			<image:loc>".$string."</image:loc>";
    			print "<image:title>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</image:title>";
    			print "</image:image>";
    		}
    	}
    print "</url>
    ";
    }
    
    print "</urlset>
    ";
    ?>
    

    Выводит <image:title> и добавляет название варианта 

  9. Вот именно не кодер!

    На кой чёрт браться, сделать лишь бы как, как минимум удвоить кол-во запросов к БД и радоваться что у тебя работает?

    Идиотизм...

    Дядь, а так? 

     

    <?php
    
    require_once('api/Simpla.php');
    $simpla = new Simpla();
    
    header("Content-type: text/xml; charset=UTF-8");
    print '<?xml version="1.0" encoding="UTF-8"?>'."\n";
    // Заголовок
    print '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">'."\n";
    
    $simpla->db->query("SET SQL_BIG_SELECTS=1"); 
    // Товары
    $simpla->db->query("SELECT
    	v.id as variant_id, 
    	p.id AS product_id, 
    	p.url 
    FROM __variants v
    LEFT JOIN __products p ON v.product_id = p.id
    WHERE p.visible
    GROUP BY v.id
    ORDER BY p.id");
    
    
    $products = $simpla->db->results();
    $prev_product_id = null;
    
    foreach($products as $p) {
    print "<url>
    ";	
    //тут массив с картинками
    $p_images = array();
    foreach($simpla->products->get_images(array('product_id' => $p->product_id)) as $image) {
        $p_images[$image->product_id][] = $image->filename;
    }	
    
    $variant_url = '';
    if ($prev_product_id === $p->product_id)
    	$variant_url = '?variant='.$p->variant_id;
    $prev_product_id = $p->product_id;
    
    	
    print "<loc>".$simpla->config->root_url.'/products/'.$p->url.$variant_url."</loc>";
    //выводим картинки
    	if(!empty($p_images[$p->product_id])) {
    		foreach($p_images[$p->product_id] as $img) {
    			$string =  htmlspecialchars($simpla->config->root_url.'/files/originals/'.$img);
    			print "
    			<image:image>
    			<image:loc>".$string."</image:loc>";
    			print "</image:image>";
    		}
    	}
    print "</url>
    ";
    }
    
    print "</urlset>
    ";
    ?>
    

    Выводит оригинальные картинки к товару, а если у товара есть варианты, то и номер варианта добавляет к ссылке

  10. Вот из-за таких криворуких "кодеров" всё больше проблем появляется у клиентов.

     

    Я не кодер, а лишь собрал из того, что нашел в посте http://forum.simplacms.ru/topic/4543-генерация-sitemap-для-картинок/ и генерация вывода yandex.php и вроде работает. Да дублирует вывод, если у товара есть варианты.

    Вместо того, чтобы набирать счетчик количества бестолковых символов, подправили бы код. 


  11. <?php

    require_once('api/Simpla.php');
    $simpla = new Simpla();

    header("Content-type: text/xml; charset=UTF-8");
    print '<?xml version="1.0" encoding="UTF-8"?>'."\n";
    // Заголовок
    print '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">'."\n";

    $simpla->db->query("SET SQL_BIG_SELECTS=1");
    // Товары
    $simpla->db->query("SELECT
    p.id AS product_id,
    p.url,
    i.filename AS image
    FROM __variants v
    LEFT JOIN __products p ON v.product_id = p.id
    LEFT JOIN __images i ON p.id = i.product_id
    WHERE p.visible
    GROUP BY v.id
    ORDER BY p.id");

    $products = $simpla->db->results();
    $p_ids = array();
    foreach ($products as $p) {
    if (!in_array($p->product_id, $p_ids)) {
    $p_ids[] = $p->product_id;
    }
    }
    $p_images = array();
    foreach($simpla->products->get_images(array('product_id' => $p_ids)) as $image) {
    $p_images[$image->product_id][] = $image->filename;
    }

    foreach($products as $p) {
    print "<url>
    <loc>".$simpla->config->root_url.'/products/'.$p->url."</loc>";
    if(!empty($p_images[$p->product_id])) {
    foreach($p_images[$p->product_id] as $img) {
    print "
    <image:image>
    <image:loc>".$simpla->design->resize_modifier($img, 800, 600)."</image:loc>";
    print "</image:image>";
    }
    }
    print "</url>";
    }
    print "</urlset>";
    ?>
  12. После создания этого топика, исполнитель со мной больше не связывался и каких либо попыток урегулировать данную историю не предпринимал. Заявление в полиции было написано и пока оно находится в ЮАО Москвы для регистрации и далее будет передано в центральный отдел УМВД России по городу Курску. Я это дело просто так не оставлю. 

  13. Что тут непонятного, человек хочет маркеплейс за две тыщи, лэндинг дороже стоит.

     

    В том то и дело, что хотел получить полное готовое решение.

    А получил копию файлов отвечающих за действия пользователей, которые переименованы в seller и добавлено 2 записи в базу.

     

    Я как и говорил, написал обращение в Сбербанк и обращение в МВД https://xn--b1aew.xn--p1ai/request_main с номером обращения от Сбербанк. Увидимся при встрече твоего участка.

  14. 22 сентября я написал комментарий в топике с готовым решением от Mишани [2.*] Marketplace Pack

    http://forum.simplacms.ru/topic/10255-2-marketplace-pack/?p=112226 с просьбой написать мне, если решение еще продается. 

     

    23 сентября мне в личные сообщения написал yaskin, что он готов продать мне решение.

    дальше выдержка из личной переписки:

     

     

    yaskin

    Привет, ты интересовался Marketplace Pack для симплы
    готов продать
     
    alexivchenko
    Добрый день!
    Какая будет цена?
     
    yaskin
    10 тыс
     
    alexivchenko
    Странно конечно, перепродажа за 10 тыс. 
    За 8,5 еще понимаю, да и инструкции нет, Мишаня сам ставит. 
    Как происходит передача файлов и денег, чтобы мне не быть обманутым?

     

    yaskin

    к централ парку с флэшкой подходи, все покажу и передам

    такая гарантия устроит?

     

    alexivchenko

    Смешно, а если серьезно?

     

    yaskin

    у тебя в профиле написано, что ты из Курска, это так?

     

    alexivchenko

    Я из Курска, точнее Поныри. Но работаю и проживаю в Москве

     

    yaskin

    Тогда смотри отзывы обо мне как о разработчике. Смысл мне кидать. Я дорабатывал магазин клиенту,  Клиент забил на свой маркетлейс. Остался бэкап. Я его продаю, цена 10 тыс, это на 7 тыс дешевле, чем у мишани, который с западной Украины. Я из Курска, могу вживую все показать, поэтому и написал так, что можно при личной встрече передать. Поскольку ты в Москве, то ты кидаешь 10 тыс на карту, я тебе передаю ссылку на архив в облаке или яндексдиске. Инструкцию по установке напишу. Скопировать на хостинг файлы и базу думаю сам сможешь

     

    alexivchenko

    Не нашёл на форуме отзывов и в разделе Фриланс отдельного топика. Ну да ладно, будет на совести. 
    Я готов купить, сделка будет в конце недели.
    Главное, чтобы все функционировало должным образом и работало как надо.
     
    yaskin
    ок
     
    alexivchenko
    Последние вопросы
    Как я понял, что у вас уже сборка, а не отдельные файлы.
    Чтобы понять, вообще стоящая вещь?
    Функционал работает нормально, базу не сильно грузит? 
    Ветка Simpla последняя?
     
    yaskin
    Да это полностью рабочая сборка, бэкап готового сайта. То есть не нужно танцевать с бубном при установке. Ставил клиенту ее мишаня, клиент даже каких-то продавцов привлек на сайт. Почему он его забросил, не знаю. Меня привлекал немножко функционал поправить. Симпла вообще сервер не грузит, может работать на обычном хостинге, там просто несколько доп. полей в базе добавлено. Поправите шаблон под себя и можно пользоваться.
     
    alexivchenko
    Я готов сегодня оплатить
    Перевод на карту конечно рисково, можно сделать через гарант передачу
    Просто был опыт обмана и на большую цену
    Кидайте карту тогда
    Сбер, Тинькофф или Альфа

     

    yaskin

    4276 .... .... 2231
    Нина Анатольевна
    Переводите, в течении часа скину архив
     
    alexivchenko
    Отправил
     
    yaskin
    Пришли, сейчас соберу все в архив, отправлю
     
    alexivchenko
    Хорошо, только без обмана. Я эти деньги в долг взял
     
    yaskin
    смысл обманывать), как есть так и отдам,
    сейчас только readme по установке допишу и скину

     

    yaskin

    readme по установке внутри
    скачаешь, отпишись, удалю
     
    alexivchenko
    Скачал
     
    alexivchenko
    Что-то я не пойму, судя по описанию http://forum.simplac...e-pack/?p=77560
    Продавец не может сам зарегистрироваться так как нет файла view/SellerRegisterView.php
    Так же, продавец не может указать контактные данные и платежные данные 
    Не происходит блокировка данных после активации продавца
    Продавца не возможно сделать VIP такого функционала вообще нет
    При добавлении продавцом товара нет выбора бренда 
    Нет возможности указывать несколько магазинов 
    В админке у продавца не отображаются товары 
    В заказе не отображается кто продавец 
    Нет ввода наценки на товар 
    Нет переписки покупателя с продавцом 
    Нет оплаты для продавца
    Что-то вы мне продали за 10 тыс не рабочую копию 

     

    alexivchenko

    Давайте я лучше к чертям удалю эту копию и обращусь к Мишане

     

    yaskin

    Я и не обещал, что будет все заявленное, я отдал вам бэкап готового рабочего сайта, сборку, которую мишаня ставил клиенту, под его хотелки, как есть.

     

    alexivchenko

    Стоп, в начальном сообщении вы написали, что готовы продать.
    И не указали, что у вас не полный модуль, а лишь часть из потребности какого-то заказчика. 
    Я всю переписку просмотрел и вы нигде не указали, что не полный комплект, тем самым дали мне понять, что я приобрету модуль Мишани. 
    Мне такой модуль не нужен, я брал заявленный по списку Мишаней. 
    Мне и нужен он был именно из за того, чего не хватает. 
    Получается вы продали мне не модуль который должен нормально работать, хрен пойми что. 
    Я еще должен в него не мало вложить, чтобы дописали мне в него недостающий функционал.
    Возвращайте сумму!
    5469 .... .... 2901
     
    yaskin
    Симпла не модульная система, я отдал полный комплект файлов и базу, то есть полностью рабочий сайт, все то что установил туда мишаня. Со своей стороны я обещание выполнил.
    ps Файлы и база это не штаны, которые можно вернуть если не понравились. Поэтому манибака не будет, я не благотворительный фонд раздавать скрипты бесплатно

     

    yaskin

    при покупке скрипта обычно демку просят посмотреть, вам  это наверно не нужно было, значит все устроило

     

    alexivchenko

    Слушайте, я тоже не миллионер и не благотворительный фонд, чтобы платить за не полное готовое решение 10 тыс и потом понимать, что купил штаны без карман и молнии.
    Я написал в топике с готовым решением и готов был купить рабочее ГОТОВОЕ РЕШЕНИЕ в котором есть список того, что решение может. Вы мне написали, что у вас решение есть и готовы продать. А о том, что решение не полное и еще кучу надо переделывать не слова. 
    В общем либо возвращайте сумму за вычетом 2000₽ ( за не до решение ) и расходимся
    Либо полную на карту, что писал выше. 
    Иначе я составлю пост на форуме и напишу заявление в правоохранительные органы раз не понимаете. 
     
    alexivchenko
    Еще раз объясняю вам
    Я написал комментарий в топике "Готового решения"
    Вы написали, что готовы продать мне и тем самым я понял, что у вас именно готовое решение.
    Вы не написали, что решение под хотелки заказчика и можете перед продажей показать демо.
    Так же я в ходе общения, спрашивал, что все ли работает, все ли функционирует. 
    Ваш ответ был однозначным, что все работает как описано в топике от Мишани. 
    Вы писали
    Да это полностью рабочая сборка... Ставил клиенту ее мишаня...
    Тем самым я не просил демо, понимая, что ставил Мишаня и вы как человек "Фрилансер" должен давать себе отчет, что продает
     
     
     

    Этим постом хочу сказать, что yaskin не прав и должен вернуть деньги! 

    Я готов, чтобы он оставил себе  2000 рублей 

    Иначе я напишу заявление в Сбербанк и полицию 

  15.  

    а где  сама загрузка изображения на сервер

     

    $image = $this->request->files('avatar');
    				if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
    				{
    					
    move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->avatar_images_dir.$image['name']);
    $this->users->update_user($this->user->id, array('avatar'=>$image['name']));
    
    				}
    
    

     

    ну и удаление изображения

     

    $this->users->delete_image($user->id);
    

     

    Спасибо вам огромное! А не подскажите еще, как сделать ресайз для аватарок? 

  16. Как сделать загрузку и сохранение фото клиента в папку files/avatars?

    И вывод на странице user.tpl по типу аватар? 

     

    В БД s_users создал avatar varchar(38) NULL (нет) Default (default_avatar.png)

     

    В config.php прописал 

     

    ;Директория аватаров
    avatar_images_dir = files/avatar/;
     

     

     
    В api/Users.php -> $query = $this->db->placehold (...) добавил u.avatar
     
    В шаблоне/user.tpl 
     
    добавил 

     

        {if $user->avatar}<img src="{$config->avatar_images_dir}{$user->avatar}" alt="" />{/if}
        <input class='upload_image' name="avatar" type="file">  
     

     

     
    Форме прописал enctype="multipart/form-data"
     
     
    В view/UserView.php 
    После

     

    class UserView extends View {
     

     

    Добавил 

     

    private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp');
     

     

     
     
    Вот тут и нужна помощь. Что дальше делать? 
  17.  

     

    Ну например это в view/ProductView.php

    if($this->user)
    {
      $query = $this->db->placehold("
        SELECT
          COUNT(p.product_id) as count
        FROM
          __purchases p
        LEFT JOIN
          __orders o ON o.id = p.order_id
        WHERE
          o.status = 2 AND o.user_id = ? AND p.product_id = ? 
      ", $this->user->id, $product->id);
    
      $this->db->query($query);
    
      $this->design->assign('can_comment', $this->db->result('count'));
    }
    

     

    И в файле шаблона сделать проверку

    {if $can_comment}
      форма для комментария 
    {/if}
    

     

    Спасибо! Куда кинуть на кофе? 

  18. Привет!

     

    Подскажите как сделать, чтобы комментировать могли только те, кто купил этот товар. 

     

    То есть, если заказ клиента ( авторизованного ) перешел в статус "Выполнен", то на странице купленного товара происходит проверка, что такой товар он приобрел и ему будет доступна форма комментариев, а гости могли только читать. 

  19. Спасибо @phukortsin

     

    Во View/ProductView.php 

    перед 

    return $this->design->fetch('product.tpl');
    

    вставить 

    // в заказах
    
    $q=$this->db->placehold('SELECT sum(pu.amount) am from __purchases pu, __orders o WHERE pu.order_id=o.id and pu.product_id=?', $product->id);
    $this->db->query($q);
    $am=(int)$this->db->result('am');
    $this->design->assign('product_purchase_count', $am);
    

    Для вывода в шаблоне product.tpl 

    В нужное место

    Продаж - {$product_purchase_count}.
×
×
  • Create New...