Jump to content

Valantir

Members
  • Posts

    8
  • Joined

  • Last visited

Profile Information

  • Activity
    Freelancer

Recent Profile Visitors

1,510,734 profile views

Valantir's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. $this->context->smarty->assign(array( 'error' => ($error) ? $error : Tools::getValue('error'), 'allFiles' => $allFiles, )); return $this->display(__FILE__, 'views/templates/admin/collection.tpl'); Ten szablon jest uruchamiany czyli collection.tpl. Przycisk konfiguruj widnieje na liście modułów przy moim module... (jak przy większości) i ma on uruchomić metodę getContent. Moduł ma nie robić nic innego jak uploadować obrazki do katalogu i dodawać wpisy do bazy. Na froncie natomiast mam kontroller: <?php class CollectionPrintCollectionModuleFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->addCSS($this->module->getPathUri() . '/assets/css/bxslider.min.css', 'all'); $this->addCSS($this->module->getPathUri() . '/assets/css/front-collection.css', 'all'); $this->addJS($this->module->getPathUri() . '/assets/js/front-collection.js', 'all'); $allFiles = $this->getAllFiles(); $this->context->smarty->assign(array( 'allFiles' => $allFiles, 'firstImageRow' => reset($allFiles), )); $this->setTemplate('printCollection.tpl'); } /** * Pobiera obrazki znajdujace sie w kolekcji * * @return array */ protected function getAllFiles() { $allFiles = Db::getInstance()->executeS('SELECT id, photo_path, thumbnail_path, position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position ASC'); return $allFiles; } } Który pobiera uploadowane obrazki i je wyświetla w szablonie printCollection.tpl Nie wiem czy to wina modułu czy czegoś innego ale na home.pl po zalogowaniu np. z poziomu FireFoxa zostaję przekierowany do panelu admina. Działam sobie i wszystko jest ok. Następnie zostawię wszystko na jakiś czas (podejrzewam, że aż sesja wygaśnie) i próbuję znów coś zrobić w panelu wchodząc na listę modułów (taki scenariusz ostatnio zauważyłem). No i się zaczyna... Zostaję przekierowany na ekran logowania, po poprawnym zalogowaniu znów mnie kieruje na ekran logowania i tak w kółko... W urlu widnieje informacja gdzie ma mnie przekierować (lista modułów). Gdy zmienię wszystko i wejdę na http://adres_sklepu/adminhash, to pojawi się ekran logowania, zaloguje mnie i mogę działać. Ale wchodząc na listę modułów dostaję znów przekierowanie na ekran logowania. Pomogło usunięcie ciasteczek z przeglądarki...
  2. To jest mój moduł: <?php if (!defined('_CAN_LOAD_FILES_')) exit; class collection extends Module { public $existingFiles = array(); public $count = NULL; public $collectionDir; public $thumbnailCollectionDir; /** * {@inheritdoc} */ function __construct() { $this->name = 'collection'; $this->tab = 'other'; $this->version = '1.0.0'; $this->author = 'Autor'; parent::__construct(); $this->displayName = $this->l('collection'); $this->description = $this->l('collection'); $this->webPath = '/img/collection/'; $this->collectionDir = getcwd() . '/../collection'; $this->thumbnailCollectionDir = getcwd() . '/../collection/thumbnails'; } /** * @return boolean */ public function install() { parent::install(); if (!$this->registerHook('Header')) { return false; } /* Create table */ $res = $this->createTable(); if (!$res) { return false; } if (!mkdir($this->collectionDir) || !mkdir($this->thumbnailCollectionDir)) { return false; } return true; } /** * @return boolean */ public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('collection')) { return false; } /* delete table */ $res = $this->deleteTable(); if (!$res) { return false; } if (file_exists($this->collectionDir) && is_dir($this->collectionDir)) { return $this->removeFile($this->collectionDir); } return true; } /** * @param string $path * * @return boolean */ protected function removeFile($path) { if (is_dir($path) === true) { $files = array_diff(scandir($path), array('.', '..')); foreach ($files as $file) { $this->removeFile(realpath($path) . '/' . $file); } return rmdir($path); } else if (is_file($path) === true) { return unlink($path); } return false; } /** * Create table */ protected function createTable() { /* Category Photo */ $res = (bool) Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'collection` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `photo_path` varchar(255) NOT NULL, `thumbnail_path` varchar(255) NOT NULL, `position` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8; '); return $res; } /** * delete table */ protected function deleteTable() { return Db::getInstance()->execute(' DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'collection`; '); } /** * Displays panel to build grid system in backend * * @return string */ public function getContent() { var_dump($this->context->link->getModuleLink('collection','collection'));die; $this->addCss(); $this->addJsScripts(); $error = null; $file = $_FILES['collection_photo']; $allFiles = $this->countAllFiles(); if ($allFiles >= 30) { $error = 'Limit zdjęć - przekroczyłeś/aś limit 30 zdjęć. Usuń jakieś zdjęcia aby dodać nowe'; } else { if (Tools::isSubmit('submit') && !empty($file)) { $allowedExts = array("jpg", "jpeg"); $allowedTypes = array('image/jpeg', 'image/jpg'); if (!in_array($file['type'], $allowedTypes)) { $error = 'Niewłaściwy typ pliku. Dozwolonymi typami plików są: ' . implode(', ', $allowedTypes); } $ext = pathinfo($file['name'], PATHINFO_EXTENSION); if (!in_array($ext, $allowedExts)) { $error = 'Niewłaściwe rozszerzenie pliku. Dozwolonymi rozszerzeniami plików są: ' . implode(', ', $allowedExts); } $fileName = uniqid() . '.' . $ext; $thumbnailFile = $this->resizeImage($file['tmp_name'], $fileName); if (!$thumbnailFile) { $error = 'Błąd podczas generowania miniatury.'; } if (!$error) { $newPath = $this->collectionDir . '/' . $fileName; $result = $this->fileCopy($file['tmp_name'], $newPath); if ($result) { $lastPosition = Db::getInstance()->executeS('SELECT position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position DESC LIMIT 1'); if (empty($lastPosition)) { $lastPosition = 1; } else { $lastPosition = $lastPosition[0]['position'] + 1; } $upload = Db::getInstance()->executeS("INSERT INTO `" . _DB_PREFIX_ . "collection` " . "(photo_path, thumbnail_path, position) " . "VALUES ('" . _PS_BASE_URL_ . "/collection/" . $fileName . "', '" . _PS_BASE_URL_ . "/collection/thumbnails/" . $fileName . "', '" . $lastPosition . "')") ; if (!$upload && file_exists($newPath)) { unlink($newPath); } Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules')); } } else { Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules') . '&error=' . $error); } } } $allFiles = Db::getInstance()->executeS('SELECT id, photo_path, thumbnail_path, position FROM `' . _DB_PREFIX_ . 'collection` ORDER BY position ASC'); $this->context->smarty->assign(array( 'error' => ($error) ? $error : Tools::getValue('error'), 'allFiles' => $allFiles, )); return $this->display(__FILE__, 'views/templates/admin/collection.tpl'); } /** * Zlicza ilosc zdjec w kolekcji * * @return string */ protected function countAllFiles() { $countAllFiles = Db::getInstance()->executeS('SELECT COUNT(*) AS how_many FROM `' . _DB_PREFIX_ . 'collection`'); return $countAllFiles[0]['how_many']; } /** * Dodaje wymagane pliki js */ protected function addJsScripts() { $this->context->controller->addJs('https://code.jquery.com/ui/1.12.1/jquery-ui.js', 'all'); $this->context->controller->addJs($this->_path . 'assets/js/collection-module.js', 'all'); } /** * Dodaje wymagane pliki css */ protected function addCss() { $this->context->controller->addCss($this->_path . 'assets/css/collection-module.css', 'all'); } /** * Uploads files * * @param string $file * @param string $path * * @return boolean */ protected function fileCopy($file, $path) { return move_uploaded_file($file, $path); } protected function resizeImage($file, $newName) { $width = 87; $height = 130; list($widthOrig, $heightOrig) = getimagesize($file); $newImage = imagecreatetruecolor($width, $height); if (exif_imagetype($file) == IMAGETYPE_PNG) { $originalImage = imagecreatefrompng($file); } else { $originalImage = imagecreatefromjpeg($file); } if (!is_resource($originalImage)) { return false; } if (imagecopyresampled($newImage, $originalImage, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig)) { return imagejpeg($newImage, $this->thumbnailCollectionDir . '/' . $newName, 100); } return false; } } Dodatkowo zauważyłem, że podobne jazdy dzieją się czasami po wejściu na listę modułów. Ustawiłem czas sesji w panelu admina na 0 i chrome jak na razie nie ma problemów ale firefox tak... Pomaga jedynie czyszczenie ciasteczek... Hosting to home.pl
  3. Nie, nie bawię się tym. Właśnie nie wiem od czego zacząć w takim debugowaniu... Jaka klasa się odpala przy klikaniu w przycisk konfiguruj? Bo klasa mojego modułu nawet nie jest odpalana
  4. Witam, Napisałem ostatnio własny moduł do Prestashop w wersji 1.6.1.7, który służy do tworzenia karuzeli na podstronie stronie. Problem w tym, że od czasu do czasu gdy kliknie się w przycisk na liście "Konfiguruj", to użytkownik jest przenoszony na podstronę z logowaniem. Ponowne zalogowanie powoduje wejście do panelu administratora ale kliknięcie na przycisk "Konfiguruj" powoduje znów przejście na stronę z logowaniem. Problem dotyczy chyba tylko mojego modułu, bo inne jakoś potrafią współpracować. Bardzo proszę o jakieś wskazówki jak się za to zabrać... Pozdrawiam
  5. I apply the latest PR and hope this fix the problem. Really thanks for help ------------------------------ I checked and it works
  6. Hi, I installed prestashop 1.6.1.8 and I have one big problem. When I set the product name in the form and click save, sometimes the product is saved but sometimes not... I don't know why. The template is default and the installation is fresh. I am redirected to the pure form of the product. I use Chrome 54.0.2840.71 Please for help
  7. Witam serdecznie, otóż chcę napisać własny import plików csv w prestashop. Mam już własny moduł do tego tylko zatrzymałem się na samym dodawaniu rekordów pobranych z pliku csv. Otóż mam kategorie oraz ich id. Problem polega na tym, że chcę, aby te kategorie miały takie samo id jak w plikach csv... Jak mogę dodać kategorię z podanym id? Wiem, ze Prestashop ma dwie wbudowane kategorie. Id swoich kategorii bym zmieniał dodając 2 do każdej z nich. W kategoriach z automatu jest robiony autoincrement, a ja chcę to ominąć. Ma ktoś na to rozwiązanie?
×
×
  • Create New...