/[drupal]/contributions/modules/LangAtOnce/LangsAtOnce.module
ViewVC logotype

Contents of /contributions/modules/LangAtOnce/LangsAtOnce.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Tue Mar 3 11:00:26 2009 UTC (8 months, 3 weeks ago) by nerkn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +0 -0 lines
File MIME type: text/x-php
3rd add,
1 <?php
2 // $Id: LangsAtOnce.module,v 1.1 2009/03/03 01:39:19 nerkn Exp $
3
4 function langsatonce_menu(){
5
6 $items = array();
7
8 $items['admin/settings/langsatonce'] = array(
9 'title' => t('LangsAtOnce settings'),
10 'description' => ('Set LangsAtOnce settings select node types and languages'),
11 'page callback' => 'drupal_get_form',
12 'page arguments' => array('langsatonce_admin'),
13 'access arguments' => array('access administration pages'),
14 'type' => MENU_NORMAL_ITEM,
15 );
16
17 return $items;
18 }
19
20 function langsatonce_admin() {
21 $types = node_get_types('types');
22
23 $node_type_choices=Array();
24 foreach($types as $type=>$type_def){
25 if($type_def->module == 'node'){//user defined type, not from a module
26 $node_type_choices[$type]= $type_def->name;
27 $default_choices[]=$type;
28 }
29 }
30 $form['langsatonce_node_type_choices'] = array(
31 '#type' => 'select',
32 '#title' => t('Select node types to enable language addition'),
33 '#default_value' => variable_get('langsatonce_node_type_choices', $default_choices),
34 '#options' => $node_type_choices,
35 '#multiple' => TRUE,
36 '#description' => t("The selected nodes have additional title/body fields"),
37 '#required' => TRUE,
38 );
39 $enabled_langs = langsatonce_locale_language_list();
40 $form['langsatonce_langs'] = array(
41 '#type' => 'select',
42 '#title' => t('Select languages to add'),
43 '#default_value' => variable_get('langsatonce_langs', array_keys($enabled_langs)),
44 '#options' => $enabled_langs,
45 '#multiple' => TRUE,
46 '#description' => t("The additional fields for these languages."),
47 '#required' => TRUE,
48 );
49 return system_settings_form($form);
50 }
51
52 /**used to construct one lang title-node **/
53 function langsatonce_formcreate(&$form, $lang) {
54 //drupal_set_message("langsatonce_form_titlebody: ");
55
56 // We need to define form elements for the node's title and body.
57 // first brackets for keeping elements together, second is to identify them
58 $form[$lang]['title_'.$lang] = array(
59 '#type' => 'textfield',
60 '#title' => tt("nodetype:type:{$form['type']['#value']}:title", $form['title']['#title'], $lang)." ($lang)",
61 '#required' => FALSE,
62 '#default_value' => $node->title,
63 '#weight' => -5
64 );
65 $form[$lang]['body_'.$lang] = array(
66 '#type' => 'textarea',
67 '#title' => tt("nodetype:type:{$form['type']['#value']}:body", $form['body_field']['body']['#title'], $lang),
68 '#default_value' => $node->body,
69 '#required' => FALSE
70 );
71 //$form[$lang]['body_filter']['filter'] = filter_form($node->format);
72 }
73 function langsatonce_form_alter(&$form, $form_state, $form_id) {
74 /** do we what node types we'll hook? **/
75 $langsatonce_node_type_choices =variable_get('langsatonce_node_type_choices', Array());
76 $xntc = implode(', ', $langsatonce_node_type_choices);
77 //drupal_set_message("langsatonce_form_alter: ". $form['form_id']['#value']." - ".$form['type']['#value']. " - ".$xntc );
78
79 if(!(isset($form['#id']) && $form['#id'] == 'node-form')){
80 return; //we only deal with node forms
81 }
82
83 $node = $form['#node'];
84
85 if (!empty($node->nid)){
86 return; // node edit form.
87 }
88 if (!empty($node->translation_source) ){
89 return; // its translation form, we'll bind to first creation of node
90 }
91 elseif (in_array($form['type']['#value'], $langsatonce_node_type_choices)) {
92 // drupal_set_message("{$node->nid}, {$node->tnid}, {$node->translation_source->nid}");
93 foreach(array_keys(langsatonce_locale_language_list()) as $lang){
94 langsatonce_formcreate($form, $lang);
95 }
96 }
97 }
98 function langsatonce_save_node($node, $lang){
99 /* saves nodes */
100 dblog_watchdog(Array("message"=>"langsatonce_form_alter: ", "variables"=>$node));
101 $title = 'title_'.$lang;
102 $body = 'body_'.$lang;
103 if(!($node->$title || $node->$body)){ //there is no translation in that lang
104 return;
105 }
106 $node->title = ($node->$title)?$node->$title:$node->title;
107 $node->body = ($node->$body)?$node->$body:$node->body;
108 //create a copy
109 $new_node = clone $node;
110 $new_node->tnid = $node->nid;
111 $new_node->nid = 0;
112 $new_node->translation_source = $node;
113 $new_node->language = $lang;
114 node_save($new_node);
115 }
116 function langsatonce_nodeapi(&$node, $op, $teaser, $page) {
117 $langsatonce_node_type_choices =variable_get('langsatonce_node_type_choices', Array());
118 if(!in_array($node->type, $langsatonce_node_type_choices)){
119 return;
120 }
121 switch ($op) {
122 // node validated and saved. I hook here cause I need nid
123 case 'insert':
124 if ($node->translation_source) {
125 return; //this means we are saving a translation version.
126 }
127 if ($node->tnid) {
128 return; //this means we are saving a translation version.
129 }
130 //langsatonce_save_node($node, $lang);
131 foreach(array_keys(locale_language_list()) as $lang){
132 langsatonce_save_node($node, $lang);
133 }
134 break;
135 }
136 }
137
138
139 //copied from locale_language_list, This module is not available everywhere
140 function langsatonce_locale_language_list() {
141 $languages = language_list('enabled');
142 $languages = $languages[1];
143 $list = array();
144 foreach ($languages as $language) {
145 $list[$language->language] = t($language->name);
146 }
147 return $list;
148 }
149
150
151
152 ?>

  ViewVC Help
Powered by ViewVC 1.1.2