? 303406-domain-theme.patch ? 319876-views.patch ? 412078-d6-user.patch ? 412078-domain-user.patch ? 419012-search.patch ? 424830-domain-prefix-table.patch ? 427258-domain-validate.patch ? 427854-domain-tab.patch Index: domain_theme/domain_theme.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain_theme/domain_theme.admin.inc,v retrieving revision 1.2 diff -u -p -r1.2 domain_theme.admin.inc --- domain_theme/domain_theme.admin.inc 25 Mar 2009 17:46:34 -0000 1.2 +++ domain_theme/domain_theme.admin.inc 8 Apr 2009 18:07:07 -0000 @@ -68,6 +68,12 @@ function domain_theme_form_alter(&$form, else { $form['status']['#disabled'] = TRUE; } + + if($form[$key] && $form[$key]['operations']) { + $form[$key]['operations']= array( + '#value' => l(t('configure'), 'admin/build/domain/theme/'. $domain['domain_id'] .'/settings/' . $key), + ); + } } // Use our own submit buttons. $unset = array('buttons', '#submit'); @@ -90,6 +96,21 @@ function domain_theme_form_alter(&$form, '#value' => t('Set domain theme'), ); } + + if ($form_id == 'system_theme_settings') { + $domain_id = arg(4); + $domain = domain_load($domain_id); + if ($domain == -1) { + return drupal_access_denied(); + } + // Which domain are we editing? + $form['domain_id'] = array( + '#type' => 'value', + '#value' => $domain['domain_id'], + ); + $form['#submit'] = array(); + $form['#submit'][] = 'domain_theme_settings_submit'; + } } /** @@ -165,3 +186,48 @@ function theme_domain_theme_reset($domai } return $output; } + +/** + * The domain theme page callback router. + * + * @param $domain + * The $domain object created by domain_lookup(). + */ +function domain_theme_settings($domain) { + if (!isset($domain['domain_id'])) { + return drupal_access_denied(); + } + // Load the system form file. + include_once(drupal_get_path('module', 'system') . '/system.admin.inc'); + + drupal_set_title(t('!site : Domain theme settings', array('!site' => $domain['sitename']))); + $data = db_fetch_array(db_query("SELECT theme FROM {domain_theme} WHERE domain_id = %d", $domain['domain_id'])); + + if (!empty($data)) { + return drupal_get_form('system_theme_settings', $data['theme']); + } + else { + return drupal_get_form('system_theme_settings'); + } +} + +/** + * Process domain_theme_settings form submissions. + */ +function domain_theme_settings_submit($form, &$form_state) { + $values = $form_state['values']; + $key = $values['var']; + $id = $values['domain_id']; + if ($values['op'] == $values['reset']) { + db_query("UPDATE {domain_theme} SET settings = NULL WHERE domain_id = %d", $id); + drupal_set_message(t('The configuration options have been reset to their default values.')); + } + else { + // Exclude unnecessary elements before saving. + unset($values['var'], $values['submit'], $values['reset'], $values['form_id'], $values['op'], $values['form_build_id'], $values['form_token'], $values['domain_id']); + $settings = serialize($values); + db_query("UPDATE {domain_theme} SET settings = %b WHERE domain_id = %d", $settings, $id); + + drupal_set_message(t('The configuration options have been saved.')); + } +} Index: domain_theme/domain_theme.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/domain/domain_theme/domain_theme.module,v retrieving revision 1.13 diff -u -p -r1.13 domain_theme.module --- domain_theme/domain_theme.module 25 Mar 2009 17:46:34 -0000 1.13 +++ domain_theme/domain_theme.module 8 Apr 2009 18:07:07 -0000 @@ -21,7 +21,7 @@ */ function domain_theme_init() { // Assign the theme selected, based on the active domain. - global $_domain, $custom_theme; + global $_domain, $custom_theme, $conf; // If the theme has already been set (such as an admin theme), ignore. if (!empty($custom_theme)) { return; @@ -30,6 +30,10 @@ function domain_theme_init() { // The above returns -1 on failure. if ($theme != -1) { $custom_theme = $theme['theme']; + if ($theme['settings']) { + $settings = unserialize($theme['settings']); + $conf['theme_' . $custom_theme . '_settings'] = $settings; + } } } @@ -55,6 +59,14 @@ function domain_theme_menu() { 'page arguments' => array(4), 'file' => 'domain_theme.admin.inc', ); + $items['admin/build/domain/theme/%domain/settings'] = array( + 'title' => 'Configure domain theme settings', + 'type' => MENU_CALLBACK, + 'access arguments' => array('administer domains'), + 'page callback' => 'domain_theme_settings', + 'page arguments' => array(4), + 'file' => 'domain_theme.admin.inc', + ); return $items; }