Pole firmy w formularzu kontaktowym drupala 7 (Company name field in drupal 7 contact form)

Pobierz i zaintaluj ten moduł: contact_form_company.zip.
Rozwiązanie oparte o wypowiedź na forum: http://drupal.stackexchange.com/questions/48940/how-to-add-a-field-to-the-contact-form-in-drupal-7.

Just download and install this very simple module: contact_form_company.zip.
Based on forum solution: http://drupal.stackexchange.com/questions/48940/how-to-add-a-field-to-the-contact-form-in-drupal-7.

Kopiowanie tekstu do dużego formularza ze strony na stronę

Inwentaryzacja…

Nazwy:

var a = []; $("#view-id-inwentaryzacja-page_1 td.views-field-title").each(function(){ a.push($(this).text().trim()) }); JSON.stringify(a).replace(/\\/g,'\\\\');

Wklejanie:

var a = JSON.parse('tutaj json z poprzedniej strony');
$('#js_0_0_1_21_11_5_7_1_7_1_1_0_1_0_1_3_3_1_3_1_1_3_1_2_1_3_3_1_3_1_1_1_1_tabela tr td:nth-child(2) input').each(function(i,j){ $(this).val(a[i]); });

Ceny:

var a = []; $("#view-id-inwentaryzacja-page_1 td.views-field-expression").each(function(){ a.push(Math.round(parseFloat($(this).text().trim())*100)/100) }); JSON.stringify(a).replace(/\\/g,'\\\\');

Wklejanie:

var a = JSON.parse('tutaj json z poprzedniej strony');
$('#js_0_0_1_21_11_5_7_1_7_1_1_0_1_0_1_3_3_1_3_1_1_3_1_2_1_3_3_1_3_1_1_1_1_tabela tr td:nth-child(5) input').each(function(i,j){ $(this).val(a[i]); });

Stan:

var a = []; $("#view-id-inwentaryzacja-page_1 td.views-field-stock").each(function(){ a.push(Math.round(parseFloat($(this).text().trim())*100)/100) }); JSON.stringify(a).replace(/\\/g,'\\\\');

Wklejanie:

var a = JSON.parse('tutaj json z poprzedniej strony');
$('#js_0_0_1_21_11_5_7_1_7_1_1_0_1_0_1_3_3_1_3_1_1_3_1_2_1_3_3_1_3_1_1_1_1_tabela tr td:nth-child(3) input').each(function(i,j){ $(this).val(a[i]); });
$('#js_0_0_1_21_11_5_7_1_7_1_1_0_1_0_1_3_3_1_3_1_1_3_1_2_1_3_3_1_3_1_1_1_1_tabela tr td:nth-child(4) input').each(function(i,j){ $(this).val("szt."); });

Problem z pathauto i stroną wielojęzyczną na drupalu?

W ofercie Epesi jest integrator magazynu epesi z Drupal Commerce. Podczas instalacji nie jest jednak instalowany moduł „pathauto i18n”. Aby poprawnie generowały się aliasy w sklepie wielojęzycznym należy go zainstalować razem z jego submodułami: node i taxonomy. Jeżeli zrobiliśmy to za późno należy usunąć wszystkie kategorie i produkty oraz zsynchronizować je ponownie, lub użyć kwarendy analogicznej do:

INSERT INTO `pathauto_i18n` (entity_id,entity_type,bundle,path_status) SELECT tid,"taxonomy_term","epesi_category",1 FROM `taxonomy_term_data` WHERE vid=7

oraz w ustawieniach aliasów skasować je i wygenerować ponownie.

Monit na Debianie z ISPConfig 3

Oczywiście polecam utworzyć odrębne pliki w /etc/monit/monitrc.d w celu bezbolesnej aktualizacji pakietu monit.

# Amavis
#check process amavisd with pidfile /var/run/amavis/amavisd.pid
# group mail
# start program = "/etc/init.d/amavis start"
# stop program = "/etc/init.d/amavis stop"
# if failed port 10024 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout

check process amavisd with pidfile /var/run/amavis/amavisd.pid
group mail
start program = "/etc/init.d/amavis start"
stop program = "/etc/init.d/amavis stop"
if failed port 10024 protocol smtp then restart
if 5 restarts within 5 cycles then timeout
depends on amavisd_bin
depends on amavisd_rc

check file amavisd_bin with path /usr/sbin/amavisd-new
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

check file amavisd_rc with path /etc/init.d/amavis
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

# Apache2
check process apache with pidfile /var/run/apache2.pid
group www
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed port 80 protocol http then restart
if cpu is greater than 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 1500 MB for 5 cycles then restart
if children > 512 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if 3 restarts within 5 cycles then timeout

# Clamd
check process clamd with pidfile /var/run/clamav/clamd.pid
group virus
start program = "/etc/init.d/clamav-daemon start"
stop program = "/etc/init.d/clamav-daemon stop"
if failed unixsocket /var/run/clamav/clamd.ctl then restart
if 5 restarts within 5 cycles then timeout
depends on clamavd_bin
depends on clamavd_rc

check file clamavd_bin with path /usr/sbin/clamd
group virus
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

check file clamavd_rc with path /etc/init.d/clamav-daemon
group virus
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

# Courier_authdaemon
check process authdaemon with pidfile /var/run/courier/authdaemon/pid
group services
start program = "/etc/init.d/courier-authdaemon start"
stop program = "/etc/init.d/courier-authdaemon stop"
if 5 restarts within 5 cycles then timeout

# Cron
check process cron with pidfile /var/run/crond.pid
start program = "/etc/init.d/cron start"
stop program = "/etc/init.d/cron stop"
group system
depends cron_init, cron_bin

check file cron_init with path /etc/init.d/cron
group system

check file cron_bin with path /usr/sbin/cron
group system

# fail2ban
check process fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
group services
start program = "/etc/init.d/fail2ban start"
stop program = "/etc/init.d/fail2ban stop"
if 5 restarts within 5 cycles then timeout

# Courier_imapd
check process imap with pidfile /var/run/courier/imapd.pid
group mail
start program = "/etc/init.d/courier-imap start"
stop program = "/etc/init.d/courier-imap stop"
if failed port 143 then restart
if 5 restarts within 5 cycles then timeout

# Courier_immapd-ssl
check process imapd-ssl with pidfile /var/run/courier/imapd-ssl.pid
group mail
start program = "/etc/init.d/courier-imap-ssl start"
stop program = "/etc/init.d/courier-imap-ssl stop"
if failed port 143 then restart
if 5 restarts within 5 cycles then timeout

# Munin-node
check process munin-node with pidfile /var/run/munin/munin-node.pid
group services
start program = "/etc/init.d/munin-node start"
stop program = "/etc/init.d/munin-node stop"
if 5 restarts within 5 cycles then timeout

#MyDNS
check process named with pidfile /var/run/mydns.pid
start program = "/etc/init.d/mydns start"
stop program = "/etc/init.d/mydns stop"
if failed host 127.0.0.1 port 53 then alert
if 5 restarts within 5 cycles then timeout

# MySQL
check process mysql with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql then restart
if 5 restarts within 5 cycles then timeout

# Courier_pop3d
check process pop3 with pidfile /var/run/courier/pop3d.pid
group mail
start program = "/etc/init.d/courier-pop start"
stop program = "/etc/init.d/courier-pop stop"
if failed port 110 then restart
if 5 restarts within 5 cycles then timeout

# Courier_pop3-ssl
check process pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid
group mail
start program = "/etc/init.d/courier-pop-ssl start"
stop program = "/etc/init.d/courier-pop-ssl stop"
if failed port 995 then restart
if 5 restarts within 5 cycles then timeout

#postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
group mail
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout
depends on postfix_rc

check file postfix_rc with path /etc/init.d/postfix
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

#PureFTPd
check process pure-ftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
start program "/etc/init.d/pure-ftpd-mysql start"
stop program "/etc/init.d/pure-ftpd-mysql stop"
if failed host 127.0.0.1 port 21 then restart
if 5 restarts within 5 cycles then timeout

# SSHd
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
#if failed port 22 protocol ssh then restart
if failed port 22 then restart
if 5 restarts within 5 cycles then timeout

# Spamassassin
check process spamd with pidfile /var/run/spamd.pid
group mail
start program = "/etc/init.d/spamassassin start"
stop program = "/etc/init.d/spamassassin stop"
if 5 restarts within 5 cycles then timeout
if cpu usage > 99% for 5 cycles then alert
if mem usage > 99% for 5 cycles then alert

check file spamd_bin with path /usr/sbin/spamd
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

check file spamd_rc with path /etc/init.d/spamassassin
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

# Rsyslogd
check process syslogd with pidfile /var/run/rsyslogd.pid
start program = "/etc/init.d/rsyslog start"
stop program = "/etc/init.d/rsyslog stop"
if 5 restarts within 5 cycles then timeout
check file syslogd_file with path /var/log/syslog

Źródło: http://www.howtoforge.com/forums/archive/index.php/t-43177.html

Problem z tłumaczeniem menu generowanego przez taxonomy_menu?

Taxonomy Menu w Drupalu bardzo ułatwia życie – generuje menu na podstawie taxonomy… Jednak przejście na entity translations odbija się czasem czkawką i tak jest tutaj. Najprostsze rozwiązanie? W szablonie zaimplementować funkcję tłumaczącą menu:


function MY_THEME_translated_menu_link_alter(&$item, $map) {
  if (module_exists('entity_translation')) {
    // In case of localized terms, use term translation for menu title.
    if ($item['module'] == 'taxonomy_menu') {
      $t = _taxonomy_menu_get_item($item['mlid']);
      // Only translate when term exist (may per example occur with stray menu item)
      if ($t) {
        // Get the taxonomy term
        $term = taxonomy_term_load($t->tid);
        //Get the language
        global $language;
        $lang = $language->language;
        //check for the Title field (name_field)
        if (isset($term->name_field[$lang])) {
          $item['title'] = $item['link_title'] = $term->name_field[$lang][0]['value'];
        }
        //check for the Description field (description_field)
        if (isset($term->description_field[$lang])) {
          $item['options']['attributes']['title'] = $item['localized_options']['attributes']['title'] = $term->description_field[$lang][0]['value'];
        }
      }
    }
  }
}

Więcej: https://drupal.org/node/1665308#comment-7410224

Brandle.pl – ponowna krótka recenzja

Po namowach Pana Grzegorza z Brandle i powtórnym teście serwisu Brandle.pl jako miejsce do poszukiwania podwykonawców marketingu szeptanego nasunęły się refleksje:

  • ceny odnowień są o połowę tańsze od cennikowych… mamy cichą nadzieję, że jest tak dla wszystkich przedłużających, bo te ceny są akceptowalne za funkcjonalność Brandle i taki naszym zdaniem powinien być normalny cennik,
  • jakość postów jest różna w zależności od wybranego agenta – nowym użytkownikom polecamy porobić testy na kilkanaście postów wśród np. 3 agentów i wtedy zdecydować,
  • koniecznie przeglądajcie posty minimum 2 dni po ich napisaniu – automatyczna weryfikacja postów w Brandle naszym zdaniem jest za rzadka (lub nie weryfikuje ponownie już postów zweryfikowanych ręcznie/klikniętych przez osobę zlecającą?) – zdarzają się sytuacje gdzie w liście postów Brandle jest wpis, który został na forum usunięty, mijają dni, a automat nie chce go odhaczyć jako nieprawidłowy… i pozostaje ręcznie kliknąć, że jest nieprawidłowy. Szkoda że weryfikacja nie jest codziennie dla każdego postu przez okres np. 1 tygodnia od napisania go, a później jeszcze raz po 2 tygodniach. Reasumując na dzień dzisiejszy polecamy ręczne przeglądanie postów.

Ogólnie serwis spełnia swoją rolę jako miejsce poszukiwania agentów od marketingu szeptanego oraz jako metoda podstawowej kontroli postów.
O ile cena pozostanie na poziomie 40zł za pakiet 5 kampanii jednoczesnych do 200 postów to od czasu do czasu będziemy korzystać i w tej cenie polecamy produkt 🙂

Zabbix active agent – monitorowanie zasobów serwera będącego wewnątrz sieci lokalnej, bez przekierowywania portów

Aby skonfigurować agenta zabbixa do samoczynnego wysyłania danych o zasobach należy stworzyć odpowiednie „templates” na serwerze zabbix. W tym celu należy:

  1. zalogować się do frontendu serwera
  2. configuration->templates
  3. Kliknąć „Template App Zabbix Agent”
  4. kliknąć przycisk „Full Clone”
  5. W nazwie dopisać np. ” Active”
  6. Zapisać
  7. iść do „Items” dla nowo stworzonego template
  8. zaznaczyć wszystkie elementy
  9. na samym dole wybrać „mass update”
  10. W „type” zmienić z „Zabbix agent” na „Zabbix agent (active)” i kliknąć „Update”

Analogicznie postępujemy przy „Template OS Linux” / „Template OS Windows” i innych wymaganych szablonach, z tą różnicą, że jeszcze w „Linked templates” zmieniamy „Template App Zabbix Agent” na chwilę wcześniej utworzoną wersję szablonu „Template App Zabbix Agent Active”.

Następnie należy dodać hosta z odpowiednimi szablonami „…Active” i skonfigurować agenta:

Server=
StartAgents=0
ServerActive=adres ip naszego serwera zabbix
Hostname=zgodne z konfiguracją hosta na serwerze zabbix

Seomatik – koniec testu cz.4

Ostatecznie obie frazy oscylują około pozycji 55. Czasy gdy pozycjonowało się takimi śmieciowymi stronami jakie są w tym SWL i strategią „im więcej linków tym lepiej” minęły.