cvs diff: Diffing modules/project
Index: modules/project/project.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.css,v
retrieving revision 1.32
diff -u -p -r1.32 project.css
--- modules/project/project.css 18 Dec 2006 09:02:39 -0000 1.32
+++ modules/project/project.css 19 Dec 2006 23:44:17 -0000
@@ -107,15 +107,15 @@
width: 150px;
}
-.node-form .project fieldset {
+.project .node-form fieldset {
display: block;
}
-.node-form .project .form-checkbox {
+.project .node-form .form-checkbox {
display: inline;
}
-.node-form .project .project-taxonomy-element {
+.project .node-form .project-taxonomy-element {
float: left;
padding-right: 2em;
}
Index: modules/project/project.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.inc,v
retrieving revision 1.96
diff -u -p -r1.96 project.inc
--- modules/project/project.inc 19 Dec 2006 02:43:17 -0000 1.96
+++ modules/project/project.inc 19 Dec 2006 23:44:18 -0000
@@ -57,7 +57,7 @@ function project_project_form($node) {
$select_size = max(5, 2*count($top_level));
foreach ($options as $tid => $values) {
$form['project_taxonomy']["tid_$tid"] = array(
- '#title' => t('%type categories', array('%type' => $top_level[$tid])),
+ '#title' => t('!type categories', array('!type' => $top_level[$tid])),
'#type' => 'select',
'#multiple' => TRUE,
'#options' => $values,
@@ -90,7 +90,7 @@ function project_project_form($node) {
'#rows' => 10,
'#required' => TRUE,
);
- $form['project']['format'] = filter_form($node->format);
+ $form['project']['format'] = filter_form($node->format);
$form['project']['uri'] = array(
'#type' => 'textfield',
'#title' => t('Short project name'),
@@ -233,7 +233,7 @@ function project_project_validate(&$node
// Make sure all URL fields actually contain URLs.
foreach (array('homepage', 'changelog', 'cvs', 'demo') as $uri) {
if ($node->$uri && !preg_match('/^(http|https|ftp):\/\//i', $node->$uri)) {
- form_set_error($uri, t('%field is not a valid URL.', array('%field' => t(ucfirst($uri)))));
+ form_set_error($uri, t('!field is not a valid URL.', array('!field' => t(ucfirst($uri)))));
}
}
@@ -250,7 +250,7 @@ function project_project_validate(&$node
if ($node->project_type != $tid) {
$tid_field = 'tid_' . $tid;
if (!empty($node->$tid_field)) {
- form_set_error($tid, t('Project type %project_type was selected, you can not use values from %invalid_type categories', array('%project_type' => theme('placeholder', $top_level[$node->project_type]), '%invalid_type' => theme('placeholder', $top_level[$tid]))));
+ form_set_error($tid, t('Project type %project_type was selected, you can not use values from %invalid_type categories', array('%project_type' => $top_level[$node->project_type], '%invalid_type' => $top_level[$tid])));
}
}
}
@@ -277,14 +277,18 @@ function project_project_set_breadcrumb(
drupal_set_breadcrumb($breadcrumb);
}
-function project_project_view(&$node, $teaser = false, $page = false) {
+function project_project_view($node, $teaser = false, $page = false) {
$node = node_prepare($node, $teaser);
+
if ($page) {
// Breadcrumb navigation
project_project_set_breadcrumb($node);
if (function_exists('project_release_project_download_table')) {
- $output = project_release_project_download_table($node);
+ $node->content['download_table'] = array(
+ '#value' => project_release_project_download_table($node),
+ '#weight' => 1,
+ );
}
// Misc section
@@ -297,13 +301,15 @@ function project_project_view(&$node, $t
}
if ($links) {
- $output .= theme('item_list', $links, t('Resources'));
+ $node->content['resources'] = array(
+ '#value' => theme('item_list', $links, t('Resources')),
+ '#weight' => 2,
+ );
}
// Support section
$links = array();
-
- if (module_exist('forum') && ($support_forum = variable_get('project_support_forum', ''))) {
+ if (module_exists('forum') && ($support_forum = variable_get('project_support_forum', ''))) {
$links[] = l(t('Support forum'), 'forum/' . $support_forum);
}
@@ -315,14 +321,15 @@ function project_project_view(&$node, $t
}
if ($links) {
- $output .= theme('item_list', $links, t('Support'));
+ $node->content['support'] = array(
+ '#value' => theme('item_list', $links, t('Support')),
+ '#weight' => 3,
+ );
}
// Developer section
$links = array();
-
if ($node->issues) {
- #$output .= '
'. t('If you think you have found a bug please check the list of existing bugs reported, if you do not find it please submit a new bug report. Remember to provide as much information as possible to make it easier for the developers to fix the issue.') .'
';
$links[] = l(t('View pending patches'), 'project/issues/'. $node->uri, null, 'states=8,13,14', null);
$links[] = l(t('View available tasks'), 'project/issues/'. $node->uri, null, 'categories=task', null);
$links[] = l(t('View all issues'), 'project/issues/'. $node->uri);
@@ -332,17 +339,19 @@ function project_project_view(&$node, $t
$links[] = sprintf('%s ', $node->cvs, t('Browse the CVS repository'));
}
- if (module_exist('cvs')) {
+ if (module_exists('cvs')) {
$links[] = l(t('View CVS messages'), 'project/cvs/'. $node->nid);
$links[] = l(t('Developers'), 'project/developers/'. $node->nid);
}
if ($links) {
- $output .= theme('item_list', $links, t('Development'));
+ $node->content['development'] = array(
+ '#value' => theme('item_list', $links, t('Development')),
+ '#weight' => 4,
+ );
}
-
- $node->body .= $output;
}
+ return $node;
}
function project_project_load($node) {
@@ -359,14 +368,14 @@ function project_project_nodeapi(&$node,
switch ($op) {
case 'insert':
_project_save_taxonomy($node);
- if (module_exist('path')) {
+ if (module_exists('path')) {
path_set_alias("node/$node->nid", "project/$node->uri");
}
break;
case 'update':
_project_save_taxonomy($node);
- if (module_exist('path')) {
+ if (module_exists('path')) {
path_set_alias("node/$node->nid"); // Clear existing alias.
path_set_alias("node/$node->nid", "project/$node->uri");
}
@@ -406,7 +415,7 @@ function project_project_access($op, $no
if ($user->uid && user_access('maintain projects')) {
// Since this CVS access checking is non-standard, we need to
// special-case uid 1 to always allow everything.
- if ($user->uid != 1 && module_exist('cvs') && variable_get('cvs_restrict_project_creation',1)) {
+ if ($user->uid != 1 && module_exists('cvs') && variable_get('cvs_restrict_project_creation',1)) {
return db_result(db_query("SELECT uid FROM {cvs_accounts} WHERE uid = %d AND status = %d", $user->uid, CVS_APPROVED)) ? TRUE : FALSE;
}
else {
Index: modules/project/project.info
===================================================================
RCS file: modules/project/project.info
diff -N modules/project/project.info
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ modules/project/project.info 19 Dec 2006 23:44:18 -0000
@@ -0,0 +1,6 @@
+; $Id$
+name = Project
+description = Provides a project node type and browsing of projects.
+package = Project
+version = "$Name$"
+
Index: modules/project/project.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.module,v
retrieving revision 1.257
diff -u -p -r1.257 project.module
--- modules/project/project.module 18 Dec 2006 09:02:39 -0000 1.257
+++ modules/project/project.module 19 Dec 2006 23:44:18 -0000
@@ -9,11 +9,7 @@ if (file_exists("$path/project.inc")) {
function project_help($section) {
switch ($section) {
- case 'admin/modules#description':
- return t('Provides a project node type and browsing of projects.');
- case 'node/add#project_project':
- return t('A project is something a group is working on. It can optionally have issue tracking, integration with revision control systems, releases, and so on.' );
- case 'node/add/project_project':
+ case 'node/add/project-project':
if (project_use_taxonomy()) {
$tree = taxonomy_get_tree(_project_get_vid());
// Extract the different project types, and, for the first type, up to three categories.
@@ -41,7 +37,7 @@ function project_help($section) {
return t('The project module makes special use of the taxonomy (category) system. A special vocabulary, "Projects", has been created automatically.
To take full advantage of project categorization, add at least two levels of terms to this vocabulary. The first level will be the basic project types, e.g., "modules", "themes", "translations".
Subterms of each of these types will be the categories that users can select to classify the projects. For example, "modules" might have sub-terms including "mail" and "XML".
- Use the vocabulary admin page to view and add terms.
', array('%taxonomy-admin' => url('admin/taxonomy/' . $vid)));
+ Use the vocabulary admin page to view and add terms.
', array('!taxonomy-admin' => url('admin/content/taxonomy/' . $vid)));
}
break;
}
@@ -56,19 +52,19 @@ function project_block($op = 'list', $de
return $blocks;
}
else if ($op == 'view') {
- $uris = NULL;
- $projects = array_merge(array(0 => t('')), project_projects_select_options($uris, FALSE, 'node/'));
$block['subject'] = t('Project navigation');
- $form = project_quick_navigate_form($projects);
- $block['content'] = drupal_get_form('project_quick_navigate_form', $form);
-
+ $block['content'] = drupal_get_form('project_quick_navigate_form');
return $block;
}
}
function project_node_info() {
return array(
- 'project_project' => array('name' => t('project'), 'base' => 'project_project'),
+ 'project_project' => array(
+ 'name' => t('project'),
+ 'module' => 'project_project',
+ 'description' => t('A project is something a group is working on. It can optionally have issue tracking, integration with revision control systems, releases, and so on.' ),
+ ),
);
}
@@ -85,7 +81,7 @@ function project_perm() {
/**
* Callback for the main settings page.
*/
-function project_main_settings() {
+function project_settings_form() {
$sort_methods = drupal_map_assoc(array_keys(module_invoke_all('project_sort_methods', 'methods')));
if (project_use_taxonomy()) {
@@ -122,13 +118,13 @@ function project_main_settings() {
'#description' => t('The default maximum number of projects to list when browsing lists, e.g., by category.')
);
- if (module_exist('forum') && project_use_taxonomy()) {
+ if (module_exists('forum') && project_use_taxonomy()) {
$form['project_support_forum'] = taxonomy_form(_forum_get_vid(), variable_get('project_support_forum', ''), t('Select the support forum for projects'), 'project_support_forum');
}
// If the project_sort_method setting has changed, the menu will need to be rebuilt.
menu_rebuild();
- return system_settings_form('project_main_settings', $form);
+ return system_settings_form($form);
}
function project_link($type, $node = 0, $main = 0) {
@@ -137,9 +133,9 @@ function project_link($type, $node = 0,
case 'page':
if (user_access('access projects')) {
$links['project_view_all'] = array(
- '#title' => t('projects'),
- '#href' => 'project',
- '#attributes' => array('title' => t('View all projects.')),
+ 'title' => t('Projects'),
+ 'href' => 'project',
+ 'attributes' => array('title' => t('View all projects.')),
);
}
break;
@@ -215,19 +211,13 @@ function project_menu($may_cache) {
$access = user_access('access projects');
$items[] = array('path' => 'project',
- 'title' => t('projects'),
+ 'title' => t('Projects'),
'callback' => 'project_page_overview',
'access' => $access,
'type' => MENU_NORMAL_ITEM);
- $items[] = array('path' => 'project/goto',
- 'title' => t('project navigation'),
- 'callback' => 'project_goto',
- 'access' => $access,
- 'type' => MENU_CALLBACK);
-
$items[] = array('path' => 'project/autocomplete',
- 'title' => t('autocomplete project'),
+ 'title' => t('Autocomplete project'),
'callback' => 'project_autocomplete',
'access' => $access,
'type' => MENU_CALLBACK);
@@ -250,7 +240,7 @@ function project_menu($may_cache) {
$term_methods = array_filter(variable_get('project_sort_method_used_' . $term->tid, $sort_methods));
foreach ($term_methods as $sort_method) {
$items[] = array('path' => 'project/' . $term->name . '/'. $sort_method,
- 'title' => t('browse by %sort_method', array('%sort_method' => $sort_method)),
+ 'title' => t('Browse by !sort_method', array('!sort_method' => $sort_method)),
'access' => $access,
'type' => (($sort_method == variable_get('project_sort_method', 'category') || (($j == 0) && !in_array(variable_get('project_sort_method', 'category'), $term_methods))) ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK),
'weight' => ($sort_method == variable_get('project_sort_method', 'category')) ? -10 : $j,
@@ -262,30 +252,35 @@ function project_menu($may_cache) {
}
// Developers
- $items[] = array('path' => 'project/developers', 'title' => t('developers'), 'callback' => 'project_developers', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'project/developers', 'title' => t('Developers'), 'callback' => 'project_developers', 'access' => $access, 'type' => MENU_CALLBACK);
// CVS messages:
$items[] = array('path' => 'project/cvs', 'title' => t('CVS'), 'callback' => 'project_cvs', 'access' => $access, 'type' => MENU_CALLBACK);
- // Create projects
- $access = project_project_access('create', NULL);
- $items[] = array('path' => 'node/add/project_project', 'title' => t('project'), 'callback' => 'node_page', 'access' => $access, 'type' => MENU_NORMAL_ITEM);
-
}
else {
drupal_add_css(drupal_get_path('module', 'project') .'/project.css');
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'project_project' && node_access('update', $node) &&
- (module_exist('project_issue') || module_exist('project_release'))) {
+ (module_exists('project_issue') || module_exists('project_release'))) {
$items[] = array(
'path' => 'node/'. arg(1) .'/edit/project',
- 'title' => t('project'),
+ 'title' => t('Project'),
'callback' => 'node_page',
'weight' => -5, 'type' => MENU_DEFAULT_LOCAL_TASK,
);
}
}
+ $items[] = array(
+ 'path' => 'admin/settings/project',
+ 'description' => t('Administer the project module settings.'),
+ 'title' => t('Project settings'),
+ 'callback' => 'drupal_get_form',
+ 'callback arguments' => 'project_settings_form',
+ 'access' => user_access('administer projects'),
+ 'type' => MENU_NORMAL_ITEM,
+ );
}
return $items;
@@ -307,7 +302,7 @@ function project_check_admin_access($pro
if ($user->uid == $project_obj->uid) {
return TRUE;
}
- if (module_exist('cvs') && $cvs_access) {
+ if (module_exists('cvs') && $cvs_access) {
if (db_num_rows(db_query("SELECT * FROM {cvs_project_maintainers} WHERE uid = %d AND nid = %d", $user->uid, $project_obj->nid))) {
return TRUE;
}
@@ -343,7 +338,7 @@ function project_form_alter($form_id, &$
}
else {
unset($form['path']['path']);
- $form['path']['value'] = array('#value' => t('Automatically generated path alias: %url', array('%url' => theme('placeholder', $url_alias))));
+ $form['path']['value'] = array('#value' => t('Automatically generated path alias: %url', array('%url' => $url_alias)));
}
}
}
@@ -363,19 +358,6 @@ function project_nodeapi(&$node, $op, $a
}
}
-/**
- * Callback used in the project block to navigate to a requested project, or back to the requested page if no project specified.
- */
-function project_goto() {
- if (!empty($_REQUEST['edit']['project_goto'])) {
- unset($_REQUEST['edit']['destination']);
- drupal_goto($_REQUEST['edit']['project_goto']);
- }
- else {
- drupal_goto();
- }
-}
-
function project_page() {
global $user;
@@ -392,22 +374,10 @@ function project_page_overview($termname
project_project_set_breadcrumb();
$sort_methods = module_invoke_all('project_sort_methods', 'methods');
- if (module_exist('project_release') && variable_get('project_release_browse_versions', 0)) {
+ if (module_exists('project_release') && variable_get('project_release_browse_versions', 0)) {
// Read in requested version, if any.
- if ($_POST['edit']['version_tid']) {
- $version = $_POST['edit']['version_tid'];
- }
- else if ($_SESSION['project_version']) {
- $version = $_SESSION['project_version'];
- }
- else {
- $version = variable_get('project_release_overview', -1);
- }
- $form = project_release_version_filter_form($version);
- $version_form = drupal_get_form('project_release_version_filter_form', $form);
- if ($_POST['edit']['version_tid']) {
- $_SESSION['project_version'] = $form_values['version_tid'];
- }
+ $version = isset($_SESSION['project_version']) ? $_SESSION['project_version'] : variable_get('project_release_overview', -1);
+ $version_form = drupal_get_form('project_release_version_filter_form', $version);
$output .= $version_form;
}
@@ -419,7 +389,7 @@ function project_page_overview($termname
$type = db_fetch_object(db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t WHERE t.vid = %d AND t.name = '%s'", 't', 'tid'), $vid, $termname));
if (!$sort_method) {
// For the default, we use the overall default if enabled for this term, and if not we use the first enabled method.
- $term_methods = array_filter(variable_get('project_sort_method_used_' . $type->tid, $sort_methods));
+ $term_methods = array_filter(variable_get('project_sort_method_used_' . $type->tid, array_keys($sort_methods)));
$sort_method = in_array(variable_get('project_sort_method', 'category'), $term_methods) ? variable_get('project_sort_method', 'category') : array_shift($term_methods);
}
@@ -429,9 +399,7 @@ function project_page_overview($termname
$module = $sort_methods[$sort_method];
if (module_invoke($module, 'project_sort_methods', 'set term', $sort_method)) {
-
$tree = taxonomy_get_tree(_project_get_vid(), $type->tid);
-
$terms = array();
if ($tree) {
$tids = array();
@@ -524,7 +492,7 @@ function project_page_overview($termname
// If the site has enabled issue tracking via the project_issue
// module, we want to add 1 more field and JOIN to our query so
// we can provide the link for "Bugs and feature requests"...
- if (module_exist('project_issue')) {
+ if (module_exists('project_issue')) {
$sql_elements['fields']['pieces'][] = 'pip.issues';
$sql_elements['joins']['pieces'][] = 'INNER JOIN {project_issue_projects} pip ON n.nid = pip.nid';
}
@@ -596,7 +564,7 @@ function project_page_overview($termname
if (!arg(3) || !db_num_rows($result)) {
return $output;
}
- drupal_set_title(t('%project_type: %category', array('%project_type' => check_plain($type->name), '%category' => theme('placeholder', $term->name))));
+ drupal_set_title(t('@project_type: %category', array('@project_type' => $type->name, '%category' => $term->name)));
}
}
// If taxonomy is enabled but no termname is selected, show a list of terms to choose from.
@@ -615,13 +583,23 @@ function project_page_overview($termname
// If the site has enabled issue tracking via the project_issue
// module, we want to add 1 more field and JOIN to our query so
// we can provide the link for "Bugs and feature requests"...
- if (module_exist('project_issue')) {
+ if (module_exists('project_issue')) {
$ISSUES = ', pip.issues';
$ISSUE_JOIN ='INNER JOIN {project_issue_projects} pip ON n.nid = pip.nid';
}
$result = db_query(db_rewrite_sql("SELECT n.nid, n.title, nr.teaser, nr.format$ISSUES FROM {node} n INNER JOIN {node_revisions} nr ON n.vid = nr.vid $ISSUE_JOIN WHERE n.status = 1 AND n.type = 'project_project' ORDER BY n.title ASC"));
}
$class = 'even';
+ if ($version != -1) {
+ $joins = 'INNER JOIN {term_node} t ON p.nid = t.nid LEFT JOIN {project_release_default_versions} prdv ON p.pid = prdv.nid AND prdv.tid = t.tid AND prdv.major = p.version_major';
+ $wheres = 'AND t.tid = %d';
+ $order_bys = 'ORDER BY prdv.nid DESC, p.rebuild ASC, p.version_major ASC, p.version_minor DESC, p.version_patch DESC, p.file_date DESC';
+ }
+ else {
+ $joins = '';
+ $wheres = '';
+ $order_bys = 'ORDER BY p.file_date DESC';
+ }
while ($project = db_fetch_object($result)) {
$project->body = check_markup($project->teaser, $project->format, FALSE);
if (project_use_taxonomy()) {
@@ -629,7 +607,10 @@ function project_page_overview($termname
$project->terms = array();
foreach (taxonomy_node_get_terms($project->nid) as $term) {
if ($term->name != $termname) {
- $project->terms[] = l($term->name, project_term_path($term));
+ $project->terms[$term->name] = array(
+ 'title' => $term->name,
+ 'href' => project_term_path($term),
+ );
}
}
}
@@ -644,7 +625,10 @@ function project_page_overview($termname
$project->links = array();
if ($version != -1) {
if ($project->file_path) {
- $project->links[] = l(t('Download'), file_create_url($project->file_path));
+ $project->links['project_download'] = array(
+ 'title' => t('Download'),
+ 'href' => file_create_url($project->file_path),
+ );
}
}
else {
@@ -652,20 +636,14 @@ function project_page_overview($termname
$project->download_table = project_release_table($project, 'defaults', $release_type, t('Version'), FALSE);
}
- if ($project->file_path) {
- $project->links['project_download'] = array(
- '#title' => t('Download'),
- '#href' => file_create_url($project->file_path),
- );
- }
$project->links['project_more_info'] = array(
- '#title' => t('Find out more'),
- '#href' => "node/$project->nid",
+ 'title' => t('Find out more'),
+ 'href' => "node/$project->nid",
);
if ($project->issues) {
$project->links['project_issues'] = array(
- '#title' => t('Bugs and feature requests'),
- '#href' => "project/issues/$project->nid",
+ 'title' => t('Bugs and feature requests'),
+ 'href' => "project/issues/$project->nid",
);
}
if (module_invoke($module, 'project_sort_methods', 'group by date', $sort_method) && $date = _project_date($project->changed)) {
@@ -806,7 +784,7 @@ function _project_date($timestamp) {
*/
function project_projects_select_options(&$project_urls, $issues = TRUE, $key_prefix = NULL) {
$projects = array();
- if ($issues && module_exist('project_issue')) {
+ if ($issues && module_exists('project_issue')) {
$ISSUE_JOIN ='INNER JOIN {project_issue_projects} pip ON n.nid = pip.nid';
$ISSUE_WHERE = 'AND pip.issues = 1';
}
@@ -840,32 +818,35 @@ function project_projects_select_options
return $projects;
}
-function project_quick_navigate_form($projects) {
+function project_quick_navigate_form() {
+ $uris = NULL;
+ $projects = array_merge(array(0 => t('')), project_projects_select_options($uris, FALSE, 'node/'));
$form = array();
$form['project_goto'] = array(
'#type' => 'select',
'#default_value' => '0',
'#options' => $projects
);
- $form['destination'] = array(
- '#type' => 'hidden',
- '#value' => $_REQUEST['q']
- );
$form['submit'] = array(
- '#type' => 'button',
+ '#type' => 'submit',
'#value' => t('Go')
);
- $form['#action'] = url('project/goto');
return $form;
}
+function project_quick_navigate_form_submit($form_id, $form_values) {
+ if (!empty($form_values['project_goto']) && (string)$form_values['project_goto'] != '0') {
+ drupal_goto($form_values['project_goto']);
+ }
+}
+
// Themables
function theme_project_term_list($terms, $path) {
$depth = 0;
$output = "\n\n";
foreach ($terms as $term) {
- $link = l(t('%name (%count)', array('%name' => $term->name, '%count' => $term->count)), check_url("$path/$term->tid"));
+ $link = l(t('!name (!count)', array('!name' => check_plain($term->name), '!count' => $term->count)), check_url("$path/$term->tid"));
$output .= '' . $link . " \n";
}
$output .= "\n \n";
@@ -887,7 +868,7 @@ function theme_project_summary($project)
$output = '';
$output .= '
'. l($project->title, "node/$project->nid") .' ';
if ($project->changed) {
- $output .= '
' . t('Last changed: %interval ago', array('%interval' => format_interval(time() - $project->changed, 2))) . '
';
+ $output .= '
' . t('Last changed: !interval ago', array('!interval' => format_interval(time() - $project->changed, 2))) . '
';
}
$output .= $project->body;
$output .= theme('links', $project->links);
@@ -895,7 +876,7 @@ function theme_project_summary($project)
$output .= $project->download_table;
}
if ($project->terms) {
- $output .= '
' . theme('links', $project->terms);
+ $output .= theme('links', $project->terms);
}
$output .= '
';
return $output;
@@ -949,5 +930,5 @@ function project_autocomplete($string) {
* taxonomy-specific functionality.
*/
function project_use_taxonomy() {
- return module_exist('taxonomy') && taxonomy_get_tree(_project_get_vid());
+ return module_exists('taxonomy') && taxonomy_get_tree(_project_get_vid());
}
cvs diff: Diffing modules/project/po
cvs diff: Diffing modules/project/po/ar
cvs diff: Diffing modules/project/release
Index: modules/project/release/project_release.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.css,v
retrieving revision 1.3
diff -u -p -r1.3 project_release.css
--- modules/project/release/project_release.css 18 Dec 2006 09:02:39 -0000 1.3
+++ modules/project/release/project_release.css 19 Dec 2006 23:44:18 -0000
@@ -1,13 +1,13 @@
/* $Id$ */
/* $Name$ */
-.node-form .project-release .version-elements fieldset .form-item {
+.project-release .node-form .version-elements fieldset .form-item {
float: left;
padding-right: 0.8em;
margin: 0.05em 0.1em;
}
-.node-form .project-release fieldset:after {
+.project-release .node-form fieldset:after {
content: ".";
display: block;
height: 0;
@@ -15,7 +15,7 @@
visibility: hidden;
}
-.node-form .project-release .version-elements fieldset {display: inline-table;}
+.project-release .node-form .version-elements fieldset {display: inline-table;}
/***************************
* CSS for tables of releases
@@ -39,4 +39,3 @@ table.releases .release-size {
table.releases .release-links {
width: 40%;
}
-
Index: modules/project/release/project_release.info
===================================================================
RCS file: modules/project/release/project_release.info
diff -N modules/project/release/project_release.info
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ modules/project/release/project_release.info 19 Dec 2006 23:44:18 -0000
@@ -0,0 +1,5 @@
+; $Id$
+name = Project releases
+description = Provides a release node type to represent releases of projects.
+package = Project
+version = "$Name$"
Index: modules/project/release/project_release.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.install,v
retrieving revision 1.3
diff -u -p -r1.3 project_release.install
--- modules/project/release/project_release.install 18 Dec 2006 09:02:39 -0000 1.3
+++ modules/project/release/project_release.install 19 Dec 2006 23:44:18 -0000
@@ -42,7 +42,7 @@ function project_release_install() {
break;
case 'pgsql':
- if (!project_release_db_table_exists('project_release_nodes')) {
+ if (!db_table_exists('project_release_nodes')) {
db_query("CREATE TABLE {project_release_nodes} (
nid int NOT NULL default '0',
pid int NOT NULL default '0',
@@ -60,7 +60,7 @@ function project_release_install() {
KEY project_releases_pid (pid)
);");
}
- if (!project_release_db_table_exists('project_release_projects')) {
+ if (!db_table_exists('project_release_projects')) {
db_query("CREATE TABLE {project_release_projects} (
nid int NOT NULL default '0',
releases smallint NOT NULL default '1',
@@ -70,7 +70,7 @@ function project_release_install() {
KEY project_release_projects_releases (releases)
);");
}
- if (!project_release_db_table_exists('project_release_default_versions')) {
+ if (!db_table_exists('project_release_default_versions')) {
db_query("CREATE TABLE {project_release_default_versions} (
nid int NOT NULL default '0',
tid int NOT NULL default '0',
@@ -147,18 +147,3 @@ function project_release_update_2() {
}
return $ret;
}
-
-
-function project_release_db_table_exists($table) {
- switch ($GLOBALS['db_type']) {
- case 'mysql':
- case 'mysqli':
- return db_num_rows(db_query("SHOW TABLES LIKE '{" . db_escape_table($table) . "}'"));
- break;
-
- case 'pgsql':
- return db_num_rows(db_query("SELECT relname FROM pg_class WHERE relname = '{" . db_escape_table($table) . "}'"));
- break;
- }
-}
-
Index: modules/project/release/project_release.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.module,v
retrieving revision 1.3
diff -u -p -r1.3 project_release.module
--- modules/project/release/project_release.module 18 Dec 2006 09:02:39 -0000 1.3
+++ modules/project/release/project_release.module 19 Dec 2006 23:44:19 -0000
@@ -16,8 +16,6 @@ define('PROJECT_RELEASE_VERSION_FORMAT_H
*/
function project_release_help($section) {
switch ($section) {
- case 'admin/modules#description':
- return t('Provides a project release node type.');
case 'node/add#project_release':
return t('A release of a project with a specific version number.');
}
@@ -35,19 +33,40 @@ function project_release_menu($may_cache
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type == 'project_project') {
- $items[] = array('path' => 'node/'. arg(1) .'/release', 'title' => t('releases'), 'callback' => 'project_release_project_releases', 'access' => node_access('view', $node), 'weight' => 0, 'type' => MENU_CALLBACK);
+ $items[] = array(
+ 'path' => 'node/'. arg(1) .'/release',
+ 'title' => t('Releases'),
+ 'callback' => 'project_release_project_releases',
+ 'access' => node_access('view', $node),
+ 'type' => MENU_CALLBACK,
+ );
if (node_access('update', $node)) {
- $items[] = array('path' => 'node/'. arg(1) .'/release/overview', 'title' => t('overview'), 'callback' => 'project_release_project_releases', 'access' => node_access('view', $node), 'weight' => 0, 'type' => MENU_CALLBACK);
+ $items[] = array(
+ 'path' => 'node/'. arg(1) .'/release/overview',
+ 'title' => t('Overview'),
+ 'callback' => 'project_release_project_releases',
+ 'access' => node_access('view', $node),
+ 'type' => MENU_CALLBACK,
+ );
$items[] = array(
'path' => 'node/'. arg(1) .'/edit/releases',
- 'title' => t('releases'),
+ 'title' => t('Releases'),
'callback' => 'project_release_project_edit_releases',
- 'weight' => 0, 'type' => MENU_LOCAL_TASK,
+ 'type' => MENU_LOCAL_TASK,
);
}
}
}
- theme_add_style(drupal_get_path('module', 'project_release') .'/project_release.css');
+ $items[] = array(
+ 'path' => 'admin/settings/project_release',
+ 'description' => t('Administer the project release module settings.'),
+ 'title' => t('Project release'),
+ 'callback' => 'drupal_get_form',
+ 'callback arguments' => 'project_release_settings_form',
+ 'access' => user_access('administer projects'),
+ 'type' => MENU_NORMAL_ITEM,
+ );
+ drupal_add_css(drupal_get_path('module', 'project_release') .'/project_release.css');
project_release_get_api_taxonomy();
}
return $items;
@@ -57,7 +76,7 @@ function project_release_menu($may_cache
* Callback for the main settings page.
* @ingroup project_release_core
*/
-function project_release_settings() {
+function project_release_settings_form() {
if ($rel_dir = variable_get('project_release_directory', '')) {
$form['project_release_directory'] = array(
'#type' => 'textfield',
@@ -93,10 +112,10 @@ function project_release_settings() {
$tids = variable_get('project_release_active_compatibility_tids', '');
$form['project_release_active_compatibility_tids'] = array(
'#type' => 'checkboxes',
- '#title' => t('Active %vocab terms', array('%vocab' => check_plain($vocab->name))),
+ '#title' => t('Active @vocab terms', array('@vocab' => $vocab->name)),
'#default_value' => $tids,
'#options' => $terms,
- '#description' => t('Terms from the %vocab vocabulary that should be visibile to end users and project maintainers.', array('%vocab' => theme('placeholder', $vocab->name))),
+ '#description' => t('Terms from the %vocab vocabulary that should be visibile to end users and project maintainers.', array('%vocab' => $vocab->name)),
);
// TODO: put these 2 in a fieldset?
@@ -115,13 +134,15 @@ function project_release_settings() {
'#required' => TRUE,
'#description' => t('Default release version to list on the overview page.'),
);
+/*
$setting_valid = array('project_release_settings_validate' => array());
$form['#validate'] = isset($form['#validate']) ? array_merge($form['#validate'], $setting_valid) : $setting_valid;
+*/
}
- return $form;
+ return system_settings_form($form);
}
-function project_release_settings_validate($form_id, $form_values, $form) {
+function project_release_settings_form_validate($form_id, $form_values, $form) {
if (!empty($form_values['project_release_directory'])) {
form_set_error('project_release_directory', t('Release directory setting has been deprecated.'));
}
@@ -129,7 +150,7 @@ function project_release_settings_valida
$default_tid = $form_values['project_release_overview'];
if ($default_tid != -1 && !$tids[$default_tid]) {
$vocab = taxonomy_get_vocabulary(_project_release_get_api_vid());
- form_set_error('project_release_overview', t('Project release overview must be one of the active %vocab terms', array('%vocab' => check_plain($vocab->name))));
+ form_set_error('project_release_overview', t('Project release overview must be one of the active @vocab terms', array('@vocab' => $vocab->name)));
}
// Make sure the default version format has no bad characters.
@@ -173,7 +194,10 @@ function project_release_access($op, $no
*/
function project_release_node_info() {
return array(
- 'project_release' => array('name' => t('project release'), 'base' => 'project_release'),
+ 'project_release' => array(
+ 'name' => t('project release'),
+ 'module' => 'project_release'
+ ),
);
}
@@ -181,7 +205,7 @@ function project_release_node_info() {
* Implementation of hook_form().
* @ingroup project_release_node
*/
-function project_release_form(&$release, &$param) {
+function project_release_form($release) {
if (arg(1) == 'add') {
if (!is_numeric(arg(3))) {
drupal_set_message(t('You can only add releases from a project page.'));
@@ -192,7 +216,7 @@ function project_release_form(&$release,
$release->pid = arg(3);
$project = node_load($release->pid);
if (!isset($project) || $project->type != 'project_project') {
- drupal_set_message(t('Node %nid is not a valid project.', array('%nid' => $release->pid)));
+ drupal_set_message(t('Node !nid is not a valid project.', array('!nid' => $release->pid)));
drupal_not_found();
module_invoke_all('exit');
exit;
@@ -387,7 +411,7 @@ function _project_release_form_add_text_
* @ingroup project_release_node
*/
function project_release_validate(&$edit, $form) {
- if ($_POST['edit']['validate_version']) {
+ if ($_POST['validate_version']) {
if (!isset($edit->version_major) && !isset($edit->version_minor) &&
!isset($edit->version_patch) &&
(!($edit->version_extra) || $edit->version_extra === '')) {
@@ -397,7 +421,7 @@ function project_release_validate(&$edit
foreach (array('version_major' => 'Major version number', 'version_minor' => 'Minor version number') as $field => $name) {
$val = $edit->$field;
if (isset($val) && $val !== '' && !is_numeric($val)) {
- form_set_error($field, t('%name must be a number.', array('%name' => $name)));
+ form_set_error($field, t('!name must be a number.', array('!name' => $name)));
}
}
$val = $edit->version_patch;
@@ -433,7 +457,7 @@ function project_release_validate(&$edit
// With cvs.module installed, this validation is already handled.
// We only want to do it here if we're *not* doing the N-page form...
- if (!module_exist('cvs') && !isset($edit->nid) && project_release_exists($edit)) {
+ if (!module_exists('cvs') && !isset($edit->nid) && project_release_exists($edit)) {
// TODO: is there a better form element to mark with this error?
form_set_error('version_patch', t('This version already exists for this project.'));
}
@@ -479,7 +503,7 @@ function project_release_load($node) {
*/
function project_release_insert($node) {
project_release_db_save($node, true);
- if (module_exist('cvs')) {
+ if (module_exists('cvs')) {
if ($node->rebuild) {
$msg = variable_get('cvs_message_new_release_branch', '');
}
@@ -557,7 +581,7 @@ function project_release_db_save($node,
// If this is the first release for a given compatibility term, add
// a record into the {project_release_default_versions} table.
- if ($is_new && module_exist('taxonomy')) {
+ if ($is_new && module_exists('taxonomy')) {
$vid = _project_release_get_api_vid();
if (isset($node->taxonomy[$vid])) {
$tid = $node->taxonomy[$vid];
@@ -667,8 +691,9 @@ function project_release_get_version($re
* Implementation of hook_view().
* @ingroup project_release_node
*/
-function project_release_view(&$release, $teaser = FALSE, $page = FALSE) {
- $project = node_load($release->pid);
+function project_release_view($node, $teaser = FALSE, $page = FALSE) {
+ $node = node_prepare($node, $teaser);
+ $project = node_load($node->pid);
if ($page) {
// Breadcrumb navigation
@@ -677,24 +702,25 @@ function project_release_view(&$release,
project_project_set_breadcrumb($project, $breadcrumb);
}
- $links = array();
- if ($release->rebuild) {
- $output .= t('Nightly development snapshot from %tag', array('%tag' => check_plain($release->tag))) . ' ';
- }
- if ($release->file_path) {
- $output .= '' . t('Download: %file', array('%file' => l(basename($release->file_path), file_create_url($release->file_path)))) . ' ';
- $output .= '' . t('Size: %size', array('%size' => format_size(filesize(file_create_path($release->file_path))))) . ' ';
- $output .= '' . t('md5_file hash: %file_hash', array('%file_hash' => $release->file_hash)) . ' ';
- }
- if ($release->created) {
- $output .= '' . t('First released: %created', array('%created' => format_date($release->created))) . ' ';
+ if ($node->rebuild) {
+ $output .= t('Nightly development snapshot from !tag', array('!tag' => check_plain($node->tag))) . ' ';
}
- if ($release->changed && ($release->changed != $release->created)) {
- $output .= '' . t('Last updated: %changed', array('%changed' => format_date($release->file_date))) . ' ';
- }
- $output .= theme('links', $links);
-
- $release->body = '' . $output . '
' . check_markup($release->body, $release->format, FALSE);
+ if ($node->file_path) {
+ $output .= '' . t('Download: !file', array('!file' => l(basename($node->file_path), file_create_url($node->file_path)))) . ' ';
+ $output .= '' . t('Size: !size', array('!size' => format_size(filesize(file_create_path($node->file_path))))) . ' ';
+ $output .= '' . t('md5_file hash: !file_hash', array('!file_hash' => $node->file_hash)) . ' ';
+ }
+ if ($node->created) {
+ $output .= '' . t('First released: !created', array('!created' => format_date($node->created))) . ' ';
+ }
+ if ($node->changed && ($node->changed != $node->created)) {
+ $output .= '' . t('Last updated: !changed', array('!changed' => format_date($node->file_date))) . ' ';
+ }
+ $node->content['release_info'] = array(
+ '#value' => '' . $output . '
',
+ '#weight' => -1,
+ );
+ return $node;
}
/**
@@ -710,7 +736,7 @@ function project_release_project_release
$output = project_release_list($node);
- drupal_set_title(t('Releases for %project', array('%project' => theme('placeholder', $node->title))));
+ drupal_set_title(t('Releases for %project', array('%project' => $node->title)));
return $output;
}
@@ -785,19 +811,28 @@ function project_release_compatibility_l
* projects on a site with 'project_release_browse_versions' enabled.
* @see project_page_overview
*/
-function project_release_version_filter_form($version) {
+function project_release_version_filter_form($version = NULL) {
if ($terms = project_release_compatibility_list()) {
+ if (is_null($version)) {
+ $version = isset($_SESSION['project_version']) ? $_SESSION['project_version'] : variable_get('project_release_overview', -1);
+ }
$form['version_tid'] = array(
'#type' => 'select',
'#default_value' => $version,
'#options' => $terms,
);
$form['submit'] = array(
- '#type' => 'button',
+ '#type' => 'submit',
'#value' => t('Go')
);
}
- return $form;
+ return isset($form) ? $form : '';
+}
+
+function project_release_version_filter_form_submit($form_id, $form_values) {
+ if (isset($form_values['version_tid'])) {
+ $_SESSION['project_version'] = $form_values['version_tid'];
+ }
}
function theme_project_release_version_filter_form($form) {
@@ -808,7 +843,7 @@ function theme_project_release_version_f
else {
$label = t('version');
}
- $output = '' . t('Filter by %label:', array('%label' => $label)) . form_render($form) . '
';
+ $output = '' . t('Filter by !label:', array('!label' => $label)) . drupal_render($form) . '
';
return $output;
}
@@ -846,12 +881,15 @@ function project_release_project_edit_re
$node = node_load(arg(1));
project_project_set_breadcrumb($node);
drupal_set_title(check_plain($node->title));
+ return drupal_get_form('project_release_project_edit_form');
+}
+function project_release_project_edit_form() {
$form['advanced'] = array(
'#type' => 'fieldset',
'#title' => t('Advanced options'),
'#collapsible' => TRUE,
- '#collapsed' => TRUE,
+ '#collapsed' => $node->releases,
'#weight' => 5,
);
@@ -926,7 +964,7 @@ function project_release_project_edit_re
'#default_value' => $node->version_format,
'#size' => 50,
'#maxlength' => 255,
- '#description' => t('Customize the format of the version strings for releases of this project.') .' '. PROJECT_RELEASE_VERSION_FORMAT_HELP .' '. t('If blank, this project will use the site-wide default (currently set to: %default)', array('%default' => theme('placeholder', variable_get('project_release_default_version_format', PROJECT_RELEASE_DEFAULT_VERSION_FORMAT)))),
+ '#description' => t('Customize the format of the version strings for releases of this project.') .' '. PROJECT_RELEASE_VERSION_FORMAT_HELP .' '. t('If blank, this project will use the site-wide default (currently set to: %default)', array('%default' => variable_get('project_release_default_version_format', PROJECT_RELEASE_DEFAULT_VERSION_FORMAT))),
);
$form['#validate'] = array_merge($form['#validate'], array('project_release_project_edit_form_validate' => array()));
}
@@ -937,7 +975,7 @@ function project_release_project_edit_re
'#title' => t('Display snapshot releases on project page'),
'#return_value' => 1,
'#default_value' => isset($node->snapshot_table) ? $node->snapshot_table : 1,
- '#description' => t('Note: Even if the current default release for a given %vocabulary_name is a development snapshot, it will only be show if this checkbox is enabled.', array('%vocabulary_name' => $vocab)),
+ '#description' => t('Note: Even if the current default release for a given !vocabulary_name is a development snapshot, it will only be show if this checkbox is enabled.', array('!vocabulary_name' => $vocab)),
);
}
@@ -948,7 +986,7 @@ function project_release_project_edit_re
'#weight' => 45,
);
- return drupal_get_form('project_release_project_edit_form', $form);
+ return $form;
}
function theme_project_release_form_value($element) {
@@ -967,20 +1005,20 @@ function theme_project_release_project_e
}
foreach (element_children($form['default_versions']) as $tid) {
$row = array();
- $row[] = form_render($form['default_versions'][$tid]['name']);
+ $row[] = drupal_render($form['default_versions'][$tid]['name']);
unset($form['default_versions'][$tid]['major']['#title']);
- $row[] = form_render($form['default_versions'][$tid]['major']);
- $row[] = form_render($form['default_versions'][$tid]['current_release']);
+ $row[] = drupal_render($form['default_versions'][$tid]['major']);
+ $row[] = drupal_render($form['default_versions'][$tid]['current_release']);
$rows[] = $row;
}
if (count($rows)) {
$output .= ''. t('Default versions') .' ';
$output .= theme('table', $header, $rows);
- $output .= '\n";
+ $output .= '\n";
}
- $output .= form_render($form['snapshot_table']);
- $output .= form_render($form['advanced']);
- $output .= form_render($form);
+ $output .= drupal_render($form['snapshot_table']);
+ $output .= drupal_render($form['advanced']);
+ $output .= drupal_render($form);
return $output;
}
@@ -1140,6 +1178,7 @@ function project_release_project_downloa
if ($node->snapshot_table) {
$output .= project_release_table($node, 'defaults', 'snapshot', t('Development snapshots'));
}
+ $links = array();
$links[] = l(t('View all releases'), 'node/'. $node->nid .'/release');
if (project_check_admin_access($node->nid)) {
$links[] = l(t('Add new release'), 'node/add/project_release/'. $node->nid);
@@ -1240,13 +1279,20 @@ function project_release_table($project,
$can_edit = node_access('update', $project);
while ($release = db_fetch_object($result)) {
- $links = array(
- l(t('Download'), file_create_url($release->file_path)),
- l(t('Release notes'), "node/$release->nid"),
+ $links = array();
+ $links['project_release_download'] = array(
+ 'title' => t('Download'),
+ 'href' => file_create_url($release->file_path),
+ );
+ $links['project_release_notes'] = array(
+ 'title' => t('Release notes'),
+ 'href' => "node/$release->nid",
);
-
if ($can_edit) {
- $links[] = l(t('Edit'), "node/$release->nid/edit");
+ $links['project_release_edit'] = array(
+ 'title' => t('Edit'),
+ 'href' => "node/$release->nid/edit",
+ );
}
if (!is_array($items[$release->tid])) {
$items[$release->tid] = array();
@@ -1332,7 +1378,7 @@ function project_release_taxonomy($op, $
* API compatibility vocabulary, otherwise, it returns false.
*/
function project_release_get_api_taxonomy() {
- if (!module_exist('taxonomy')) {
+ if (!module_exists('taxonomy')) {
return false;
}
return taxonomy_get_tree(_project_release_get_api_vid());
Index: modules/project/release/project_release_update.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release_update.php,v
retrieving revision 1.3
diff -u -p -r1.3 project_release_update.php
--- modules/project/release/project_release_update.php 18 Dec 2006 09:02:39 -0000 1.3
+++ modules/project/release/project_release_update.php 19 Dec 2006 23:44:20 -0000
@@ -97,7 +97,7 @@ function convert_all_releases() {
$query = db_query("SELECT nid, rid FROM {project_release_legacy}");
while ($result = db_fetch_object($query)) {
$nids_by_rid[$result->rid] = $result->nid;
- if (module_exist('project_issue')) {
+ if (module_exists('project_issue')) {
db_query("UPDATE {project_issues} SET rid = %d WHERE rid = %d", $result->nid, $result->rid);
}
}
@@ -256,7 +256,7 @@ function convert_release($old_release) {
// convert all the project_issue nodes to the new value. We'll have
// to fix all the followup comments only after we have the complete
// mapping of rid -> nid
- if (module_exist('project_issue')) {
+ if (module_exists('project_issue')) {
list($usec, $sec) = explode(' ', microtime());
$pre_update = (float)$usec + (float)$sec;
db_query("UPDATE {project_issues} SET rid = %d WHERE rid = %d", $nid, $rid);
@@ -282,7 +282,7 @@ function convert_release($old_release) {
}
function convert_issue_followups() {
- if (!module_exist('project_issue')) {
+ if (!module_exists('project_issue')) {
return;
}
global $nids_by_rid;
@@ -440,7 +440,7 @@ if (!ini_get('safe_mode')) {
set_time_limit(2000);
}
-if (!module_exist('project_release')) {
+if (!module_exists('project_release')) {
print '' . t('ERROR: project_release_update.php requires that you first install the project_release.module') . ' ';
exit(1);
}