piątek, 19 października 2012

Ubercart 3 Payment/Shipping quotes conditions base on node terms (Drupal 7)

template.php:
----------------------------------------------------------------------------------------------
function yourthemename_in_object($val, $obj){

   if($val == ""){
       watchdog("payment_conditions", "in_object expects parameter 1 must not empty");
       return false;
   }
   if(!is_object($obj)){
       $obj = (object)$obj;
   }

   foreach($obj as $key => $value){
       if(!is_object($value) && !is_array($value)){
           if($value == $val){
               return true;
           }
       }else{
           return yourthemename_in_object($val, $value);
       }
   }
   return false;
}
--------------------------------------------------------------------------------------------

In Ubercart settings:
Payment methods/Shipping quotes -> condition -> add -> Execute custom PHP code

code:
---------------------------------------------------------------------------------------------
$shippable = true;
foreach($order->products as $product) {
$nid=$product->nid;
$results = db_query('SELECT tid FROM {taxonomy_index} WHERE nid = :nid', array(':nid' => $node->nid));
$terms = array();
foreach ($results as $result) {
 $terms[] = ($result->tid);
}
                $val = 2586 // needle
if(yourthemename_in_object($val, $terms)) {
$shippable = false;
break;
}
}

return $shippable;
-----------------------------------------------------------------------------------------------

Drupal 7 array of all node tids

Funkcja jest banalnie prosta, ale wrzucam ją tutaj aby już nikt nie szukał odpowiednika w API.

W API Drupala 7 nie ma funkcji zwracającej listę wszystkich kategorii/wyrażeń danego noda!  

code:


$results = db_query('SELECT tid FROM {taxonomy_index} WHERE nid = :nid', array(':nid' => $nid));
$terms = array();
foreach ($results as $result) {
 $terms[] = ($result->tid);
}

czwartek, 30 czerwca 2011

Pierwsza aktualizacja Shadow Analysis

Miło mi jest poinformować o zakończeniu prac nad pierwszą aktualizacją aplikacji Shadow  Analysis. Aktualizacja wprowadza długo oczekiwaną funkcję generowania legendy na wynikach analizy.


piątek, 8 kwietnia 2011

Shadow Analysis - Zapowiedź publicznej wersji demo

Po pierwszych testach, które wypadły bardzo obiecująco, przygotowaliśmy krótką listę modyfikacji naszego pluginu. W najbliższym czasie będziemy pracowali nad kilkoma nowymi, ciekawymi funkcjonalnościami. Pojawi się kilka nowych opcji konfiguracji oraz analiza będzie zwracała więcej przydatnych danych. Szczegóły już wkrótce.

W między czasie chcemy przygotować pierwszą publicznie dostępną wersję demo. Chcielibyśmy aby jak najwięcej osób mogło przetestować Shadow Analysis. Oczywiście na nic nam by się to nie przydało gdybyście nie mogli napisać nam co o nim myślicie. Dlatego przygotowaliśmy specjalną ankietę, która pomoże nam zbierać opinie i mamy nadzieję stale ulepszać plugin.

Demo zostanie udostępnione w poniedziałek tutaj oraz na blogu Tomka.

piątek, 1 kwietnia 2011

Shadow Analysis PlugIn for Sketchup - demo już gotowe

Właśnie skończyliśmy przygotowywać prezentację pierwszej wersji naszego pluginu. Krótki filmik, który zrobiliśmy pokazuje cały proces renderowania naszej analizy. 


Więcej ciekawych z punktu widzenia architektów informacji na temat naszego dzieła możecie znaleźć na blogu mojego brata pod adresem http://tomaszjaniak.wordpress.com/. Jeśli chcielibyście przetestować wersję demo piszcie na adres janiaktomasz@gmail.com

czwartek, 31 marca 2011

Nowy projekt - Shadow Analysis Plugin dla Sketchupa

Od kilku dni pracujmy nad nowym projektem. Jest to nasz pierwszy plugin do bardzo popularnego i darmowego programu Sketchup. Pomysł stworzenia takiej aplikacji zrodził się w głowie mojego brata. Na swoim blogu opisał on w jaki sposób można rozwiązać problem obliczeń zacienienia, z którym spotykają się architekci. Jego wpis spotkał się z nadspodziewanie dużym zainteresowaniem więc postanowiliśmy stworzyć prosty w obsłudze program realizujący tą funkcjonalność.

Pierwszą wersję programu Tomek napisał w processingu. W związku z tym, że uzyskanie satysfakcjonujących wyników wymagało przygotowania na prawdę dobrych danych do analizy, nadawała się ona do użytku najwyżej osobistego. Wątpię żeby udało się znaleźć więcej niż 10 osób, które domyśliłyby się jak trzeba ustawić rendering w programie 3d aby wynik analizy był chociaż zbliżony do prawidłowego.

Rozwiązaniem tych problemów okazał się prosty program do edycji 3d rozwijany przez malutką firmę Google Inc. - Sketchup. Sketchup poza oczywistymi zaletami jak łatwość obsługi i 'darmowość' posiada jedną bardzo przyjemną cechę - API oraz konsolę Ruby. Dzięki niewielkim skryptom można zautomatyzować niemal wszystkie operacje związane z przygotowywaniem danych oraz umieścić w tym samym pluginie algorytm analizujący i przygotowujący wyniki.

Gdy Tomek poprosił mnie o pomoc i powiedział, że wiąże się z tym programowanie w Ruby byłem zachwycony i od razu wziąłem się do roboty. Druga wersja jego algorytmu, która napisałem działała już w Ruby jednak wymagała doinstalowania bibliotek ImageMagick i RMagick co, mówiąc delikatnie było problematyczne. Zapadła więc decyzja, że zamiast za pomocą bibliotek analizować pixele danych wejściowych w jpg będziemy analizowali bajty z plików bmp.

Trzecia wersja algorytmu operująca na bajtach powstała następnego dnia i okazała się spełniać wszystkie oczekiwania. Działa szybko, niezawodnie i co bardzo ważne nie wymaga żadnych dodatkowych bibliotek. Oto kilka gotowych analiz (kolory reprezentują ilość godzin zacienienia, od 1h do 10h)





W tej chwili kończymy wersję demo pluginu, która będziemy chcieli rozdać kilku testerom.

poniedziałek, 28 marca 2011

Oficjalny start iValue.com.pl

Dziś po wielu tygodniach walk rusza nasze najnowsze przedsięwzięcie - projekt iValue. Projekt jest owocem ponad ośmiomiesięcznej pracy i jest dumą naszej firmy. Mamy nadzieję, że przypadnie do gustu także naszym klientom.

iValue jest to rozbudowana aplikacja, której celem jest pomoc w uruchomieniu drukarniom i firmom z branży poligraficznej nowego kanału sprzedaży i kontaktu z klientem za pomocą internetu. W zależności od wybranych modułów może ona stanowić uniwersalny formularz wyceny i zamówień czy być podstawą do stworzenia sklepu internetowego. W pełnej wersji zawierającej system obiegu dokumentów wewnątrz firmy, system zadań czy kontroli zaopatrzenia iValue jest kompleksowym systemem ułatwiającym codzienną pracę i zarządzanie przedsiębiorstwem.

Największą siłą systemu iValue jest jego elastyczność, która pozwala w bardzo łatwy sposób dodawać i modyfikować jego funkcjonalności. Dzięki modularnej budowie jesteśmy w stanie zaproponować naszym klientom rozwiązanie skrojone na miarę ich potrzeb bez potrzeby długotrwałych modyfikacji.

Zapraszam do zapoznania się z naszym najnowszym produktem na jego stronie domowej pod adresem http://ivalue.com.pl. Dostępna jest również wersja demonstracyjna systemu dzięki, której można przekonać się jak łatwe w obsłudze i szybkie może być korzystanie z tak rozbudowanych narzędzi.

Jeśli jesteś zainteresowany zakupem aplikacji iValue, lub chciałbyś dowiedzieć się więcej skorzystaj z formularza kontaktowego lub formularza zamówienia.