nevergone képe

A kérdésedben a válasz is szerepel:

„A Drupal, regisztráció után, ha a látogató magát regelheti, akkor kap egy e-mailt, amiben van egy link, arra kattintva ideiglenesen beléphet és megváltoztathatja a jelszavát.”

Megváltoztathatja. Vagyis amikor regisztrál, akkor a Drupal automatikusan generál neki egy véletlenszerű jelszót:

https://api.drupal.org/api/drupal/modules!user!user.module/function/user...

  1. if (!variable_get('user_email_verification', TRUE) || $admin) {
  2. $pass = $form_state['values']['pass'];
  3. }
  4. else {
  5. $pass = user_password();
  6. }

A user_password() függvény pedig ezt mondja magáról:

„Generate a random alphanumeric password.”

Ha az egyszeri belépési linkre kattintva nem ad meg új jelszót, akkor ez a generált marad neki. Többféle módon ki lehet kényszeríteni, hogy kötelező legyen új jelszót megadnia, de azt már ennyiből is láthatod, hogy semmiképpen sem marad senki jelszó nélkül.

1
0
makgab képe

Úgy tűnik működik:

  1. # Browse to https://github.com/drush-ops/drush/releases and download the drush.phar attached to the latest 8.x release.
  2.  
  3. # Test your install.
  4. php drush.phar core-status
  5.  
  6. # Rename to `drush` instead of `php drush.phar`. Destination can be anywhere on $PATH.
  7. chmod +x drush.phar
  8. sudo mv drush.phar /usr/local/bin/drush
  9.  
  10. # Optional. Enrich the bash startup file with completion and aliases.
  11. drush init

Ha pl. az /opt/drush8 könyvtárban van a drush.phar (átnevezve drush-ra), akkor szépen használható pl. a /var/www/html könyvtárban:
/opt/drush8/drush pm-update

1
0
makgab képe

<?php
function szotar_edit(&$form_state, $szotar) {
 
  // SQL selected record
  $res = db_query("SELECT SZOTARID, NEV, CSOPORTID FROM {O_SZOTAR} WHERE SZOTARID=%d", $szotar );
  $arr = db_fetch_array($res);
 
  // form
  $form['szotarid'] = array(
  '#type' => 'markup',
  '#title' => 'Szótár ID',
  '#value' => $arr['SZOTARID'],
  );
  $form['nev'] = array(
  '#type' => 'textfield',
  '#title' => 'Szótár név',
  '#size' => 50,
  '#maxlength' => 50,
  '#required' => TRUE,
  '#value' => $arr['NEV'],
...
?>

A form most jó!

viszont a submit nál érdekes adatokat akar beszurni:

<?php
function szotar_edit_submit($form, &$form_state) {
  db_query("UPDATE {SZOTAR} SET NEV='%s', CSOPORTID=%d WHERE SZOTARID=%d;", $form_state['values']['nev'], $form_state['values']['csoportid'], $form_state['values']['szotarid']);
}
?>

Ezt akarja futtatni:
UPDATE SZOTAR SET NEV='Proba', CSOPORTID=2 WHERE SZOTARID=0

azaz a form-ból nem veszi át az új (módosított) értékeket és a SZOTARID-nek 0-t ad (WHERE után). A #markup típus miatt ad 0-t. Ha ezt #textfield-re teszem, akkor jó. De a többi mező miért marad az sql-el lekérdezett értékén? Nem a felhasználó által módosított mezőértéket viszi tovább.

Valamit elirtam?:O

G.

0
0
vikicica22 képe

Elértem azt, hogy kilistázza csak az a baj, hogy a kategória nevek mellet nem a címet listázza, ki hanem csak kiírja, hogy 5 db van benne :(

pl.: Ajándék, játék, virág (5)
Cipő, táska, bőráru (5)

Nekem az volna a jó, ahogy fentebb írtam egyből látni a kategóriákhoz milyen címek taroznak

• Ajándék, játék, virág:
node 1 címe, node 2 címe, node 4 címe, node 7 címe

• Cipő, táska, bőráru:
node 3 címe, node 5 címe, node 6 címe, node 8 címe


$view = new view;
$view->name = 'kategoria';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Alapértelmezések', 'default');
$handler->override_option('fields', array(
'title' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'link_class' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'target' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
'strip_tags' => 0,
),
'empty' => '',
'hide_empty' => 0,
'empty_zero' => 0,
'link_to_node' => 1,
'exclude' => 0,
'id' => 'title',
'table' => 'node',
'field' => 'title',
'override' => array(
'button' => 'Felülírás',
),
'relationship' => 'none',
),
));
$handler->override_option('arguments', array(
'name' => array(
'default_action' => 'summary asc',
'style_plugin' => 'default_summary',
'style_options' => array(
'count' => 1,
'override' => 0,
'items_per_page' => '25',
),
'wildcard' => 'all',
'wildcard_substitution' => 'Minden',
'title' => '%1',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'not found',
'glossary' => 0,
'limit' => '0',
'case' => 'none',
'path_case' => 'none',
'transform_dash' => 0,
'add_table' => 0,
'require_value' => 1,
'id' => 'name',
'table' => 'term_data',
'field' => 'name',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
),
'override' => array(
'button' => 'Felülírás',
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_fixed' => '',
'default_argument_user' => 0,
'default_argument_image_size' => '_original',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'uzletek' => 'uzletek',
'webform' => 0,
'image' => 0,
'nyeremenyjatek' => 0,
'page' => 0,
'programok' => 0,
'simplenews' => 0,
'story' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'3' => 3,
'2' => 0,
'1' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'image_size' => array(
'_original' => '_original',
'thumbnail' => 'thumbnail',
'preview' => 'preview',
),
'validate_argument_php' => '',
),
));
$handler->override_option('filters', array(
'status' => array(
'id' => 'status',
'table' => 'node',
'field' => 'status',
'value' => '1',
),
));
$handler->override_option('access', array(
'type' => 'role',
'role' => array(
'1' => '1',
'2' => '2',
),
'perm' => '',
));
$handler->override_option('cache', array(
'type' => 'none',
));
$handler->override_option('title', 'Kategóriák');
$handler->override_option('header_format', '1');
$handler->override_option('header_empty', 0);
$handler->override_option('footer_format', '1');
$handler->override_option('empty_format', '1');
$handler->override_option('items_per_page', 0);
$handler->override_option('use_pager', TRUE);
$handler->override_option('use_more', TRUE);
$handler->override_option('use_more_text', 'tovább');
$handler->override_option('style_plugin', 'list');
$handler->override_option('style_options', array(
'grouping' => '',
'type' => 'ul',
));
$handler = $view->new_display('page', 'Oldal', 'page_1');
$handler->override_option('path', 'proba');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));

0
0
Balogh Zoltán képe

Én is megírtam egy kezdetleges változatot. Működik, nem túl bonyolult, hisz csak pár sor az egész. Itt van, egyedül az API kulcsomat töröltem ki belőle, a sajátodat írd oda. Ez mondjuk csak egy bizonyos tartalomtípus címét fordítja csak le (ennyi kellett épp akkor), de azt hiszem elég értelemszerű, és könnyen módosítható.

<?php
// $Id$
/**
 * @file
 * The implemented hooks of the Google translator module.
 */
 
define('GOOGLE_TRANSLATOR_API_KEY',  '');
define('GOOGLE_TRANSLATOR_LANGUAGE', 'hu');
 
function google_translator_nodeapi(&$node, $op) {
  if ($node->type == 'mention')
    switch($op) {
      case 'presave':
        $node->title = _google_translator_translate($node->title);
        break;
    }
}
 
function _google_translator_translate($str) {
  $request = drupal_http_request(sprintf('https://www.googleapis.com/language/translate/v2?key=%s&target=%s&q=%s', GOOGLE_TRANSLATOR_API_KEY, GOOGLE_TRANSLATOR_LANGUAGE, urlencode($str)));
  if ($request->code == 200 && isset($request->data)) {
    $json = json_decode($request->data);
    if (isset($json->data->translations[0]->translatedText)) {
      $str = $json->data->translations[0]->translatedText;
    }
  }
  return $str;
}

Amúgy néha elég katasztrófa dolgokat tud fordítani, de hát végül is csak egy gép.

2
0
L.Tiny képe

Kutakodtam kicsit, és találtam egy javascript kódot, ami másolná az inputok értékét:

<script>
function masolo(f)
{
f.szall_name.value=f.szamla_name.value
// A többit értelemszerűen
}
</script>
<form >
 
<input type="text" name="szamla_name" value="">
 
<input type="button" name="masol" value="Másol" onclick="masolo(this.form)">
 
<input type="text" name="szall_name" value="">
 
</form>

Mivel nem tudok onclick eseményt hozzárendelni a Webform select options checkbox-hoz, ezért úgy próbálkoztam, hogy "Markup" típust használtam, és oda illesztettem be a checkboxot (ill. button-t), elé pedig a scriptet. Naná hogy nem működött...:(

A gond az lehet, hogy a Webform "name" értékét (a kapcsos zárójelek miatt) nem tudja értelmezni a script, gondolom ez szintaktikai probléma.

<script>
function masolo(f)
{
f.submitted[orszag].value=f.submitted[orszag_szla].value
f.submitted[telepules].value=f.submitted[telepules_szla].value
f.submitted[iranyitoszam].value=f.submitted[iranyitoszam_szla].value
f.submitted[kozterulet].value=f.submitted[kozterulet_szla].value
f.submitted[hazszam].value=f.submitted[hazszam_szla].value
}
</script>
<div class="form-item webform-component webform-component-textfield webform-container-inline" id="webform-component-masolas">
  <label for="edit-submitted-hazszam">A számlázási cím azonos a levelezési címmel </label>
<input type="button" name="masol" value="Másol" onclick="masolo(this.form)">
</div>

Nem akarok idekeverni "nemdrupalos" témát, de lehet, hogy egy kis js. módosítással (amihez nem értek) egy hasznos funkcióval lehetne bővíteni egy Drupal modult.

Megköszönném, ha tudnátok segíteni!

0
0
Dahar képe

Most gyorban összekattingattam egy rule-t, ami a termék tipusú tartalmakat mentésük után átadja egy másik felhasználó tulajdonába, ez gond nélkül működik.
Lehet hogy mert én a fethed entityvel töltöm be a user entitást és annak át tudja adni a tartalmat. Esetleg próbáld ki hogy az account-ból számazó userid-t betöltöd fetch entity by id-vel és az így kapott objektumot teszted a node:author-ba

  1. { "rules_teszt" : {
  2. "LABEL" : "teszt",
  3. "PLUGIN" : "reaction rule",
  4. "OWNER" : "rules",
  5. "REQUIRES" : [ "rules" ],
  6. "ON" : { "node_update--termek" : { "bundle" : "termek" } },
  7. "DO" : [
  8. { "entity_fetch" : {
  9. "USING" : { "type" : "user", "id" : "445" },
  10. "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "Fetched entity" } }
  11. }
  12. },
  13. { "data_set" : { "data" : [ "node:author" ], "value" : [ "entity-fetched" ] } }
  14. ]
  15. }
  16. }
0
0
Voluman képe

Sikerült megoldani modulból, az alábbi kóddal:

  1. function mymodule_webform_submission_presave($node, &$submission){
  2. if ($submission->nid==778) { // a webform node id-ja
  3. $role = user_role_load_by_name('administrator'); // a szerepkör neve
  4. $query = db_select('users_roles', 'ur');
  5. $query->join('users', 'u', 'ur.uid = u.uid');
  6. $query->fields('ur', array('uid'));
  7. $query->fields('u', array('mail'));
  8. $query->condition('rid', $role->rid);
  9. $result= $query->execute();
  10. foreach($result as $record) $submission->data[8][]=$record->mail; // a data után az email mező sorszáma
  11. }
  12. }
0
0
Robert Petras képe

Köszönöm az értékes válaszod. Igazad van "pp", hogy kevertem a szezont a fazonnal, Mea Culpa. Köszi a helyreigazítást, hasznát vettem mindannak amit tanácsoltál!

Kicsit hülyén érzem magam, mert nem mindig tudom egyértelműen kifejezni, hogy eddig mire jutottam önállóan, mi az ami már jól megy és legfőképpen, hogy mit szeretnék elérni. Arról nem is beszélve, hogy miben kérem a segítségeteket.

A Drush Make használatának megismerése jó alkalom volt a számomra arra, hogy a Drupal telepítő profilok létrehozásával is foglalkozzak illetve legyen egy jó ürügy arra, hogy a GitHub-on is nekiessek egy új reponak. Biztosra veszem, hogy gyorsabb lesz ezentúl egy-egy Drupal weboldal telepítése a számomra.

Kedden a második márciusi online megrendezésre kerülő székesfehérvári Drupal felhasználók találkozóján, (egy Google+ Hangout-on) már nemcsak a Drushról tartottam egy rövid kedvcsinálót, hanem egy Drush Make-t is le tudtam futtatni a többieknek. Minden résztvevő aktívan kivette részét a találkozón, mert mindenki bevállalt egy-egy kis előadást valamilyen témában.

Tényleg úgy van ahogy mondtad, a telepítő profilok létrehozása már jóval elmélyültebb Drupal tudást igényel. Én már annak is nagyon örültem a héten, hogy odáig képes voltam eljutni, hogy modulokat tudtam engedélyeztetni vele ezzel is felgyorsítva a munkafolyamatot.

Persze látom, hogy mi mindenre lehet még képes a standard profil, a Spark disztró vagy egyéb Drupal kiadások profilja. Észvesztő, és akkor még nem is említetted a Feature-t. Ez még nagyon távoli cél előttem, hogy valahogy összeboronáljam a Drush + Drush Make + Telepítő Profil és a Featuret mint eszközöket.

Ha van kedved és szabad időd, akkor megnéznéd azt a közel 3 perces kisfilmet, amit ma éjjel készítettem a Drush Make tanuló folyamatról? Arról, hogy meddig jutottam el. Lehet, hogy mások gázosnak látják ezt, de most bevállalom így hajnal 3-4 felé kicsit zombi állapotban.

Örülnék még egy utolsó visszajelzésnek, mert a válaszodban írtad, hogy egy végtelen ciklusba kergettem a Make parancsot, de biztosan így van vagy csak amiatt láttad így, mert korábban nem voltam érthetőbb? Most minden rendben lefutott.

A "minta" Drupal telepítő profil a GitHub-on: https://github.com/robertpetras/minta

A kisfilm a "minta" Drush Make használatáról: http://www.youtube.com/watch?v=2rN7p3dZkjk&feature=share&list=PLotV3wAnH9ROLVGsOpe9Y64jfjBwLD2mE

Legvégül pedig ezt a Drush Make Build-et futtatva indítottam el a munkafolyamatot:

  1. ; ------------------------------------------------------------------------------
  2. ; DRUPAL CORE
  3. ; ------------------------------------------------------------------------------
  4.  
  5. projects[drupal][type] = "core"
  6.  
  7. ; ------------------------------------------------------------------------------
  8. ; INSTALLATION PROFILE
  9. ; ------------------------------------------------------------------------------
  10.  
  11. projects[minta][type] = profile
  12. projects[minta][download][type] = git
  13. projects[minta][download][url] = git@github.com:robertpetras/minta.git
  14. projects[minta][download][branch] = master

Előre is köszönöm, ha válaszolni tadna valaki arra, hogy mindtent rendben talál-e vagy sem!

0
0
sgabe képe

Van egy uc_cart_checkout_pane.inc fájl is a cart modulban, ennek rögtön az első uc_checkout_pane_cart(); függvénye kell neked. A 'review' esetén az $items változóban ugyanúgy ott a kép, ahogy az előbbiekben írtam.

<?php
/**
 * Display the cart contents for review during checkout.
 */
function uc_checkout_pane_cart($op) {
  switch ($op) {
    case 'view':
      $contents['cart_review_table'] = array(
        '#value' => theme('cart_review_table'),
        '#weight' => variable_get('uc_pane_cart_field_cart_weight', 2),
      );
      return array('contents' => $contents, 'next-button' => FALSE);
 
    case 'review':
      $items = uc_cart_get_contents();
      $output = '<table>';
      foreach ($items as $item) {
        $rows = array();
        foreach ($item->options as $option) {
          $rows[] = t('@attribute: @option', array('@attribute' => $option['attribute'], '@option' => $option['name']));
        }
        // kep utvonala, cime es alt szovege
        $imagepath = $item->image['filepath'];
    	$imagetitle = $item->image['title'];
    	$imagealt = $item->image['alt'];
        $desc = check_plain($item->title) . theme('item_list', $rows, NULL, 'ul', array('class' => 'product-options'));
        // kep elhelyezese egy uj oszlopban
        $output .= '<tr valign="top"><td>'.theme('imagecache', 'cart', $imagepath, $imagealt, $imagetitle).'</td><td>'. $item->qty .'x</td><td width="100%">'. $desc
                  .'</td><td nowrap="nowrap">'. uc_currency_format($item->price * $item->qty) .'</td></tr>';
      }
      $output .= '</table>';
      $review[] = $output;
      return $review;
  }
}?>
0
0