Sunday 28 December 2008

Intresting modules in Drupal



ACL module

It is an API for other modules to create lists of users and give them access to nodes.

Sub modules to be installed for enabling its capability:
  • Content Access (uses ACL to provide by-user access control, if it's installed)

Content Construction Kit (CCK)

It allows you to add custom fields to nodes using a web browser. CCK builds on that ability by allowing you to add custom fields to that content. If you use the Views module, CCK also makes all your custom fields available in any View.

CCK is actually a group of modules. The primary module is called 'Content' and it is required in order to use any other CCK modules. The tarball includes a few other modules, which comprise the 'Core CCK' modules. They include:

  • Text
  • Number
  • Nodereference
  • Userreference
  • Optionwidgets
  • Fieldgroup

Views

You need Views if:
  • You like the default front page view, but you find you want to sort it differently.
  • You like the default taxonomy/term view, but you find you want to sort it differently; for example, alphabetically.
  • You use /tracker, but you want to restrict it to posts of a certain type.
  • You like the idea of the 'article' module, but it doesn't display articles the way you like.
  • You want a way to display a block with the 5 most recent posts of some particular type.
  • You want to provide 'unread forum posts'.
  • You want a monthly archive similar to the typical Movable Type/Wordpress archives that displays a link to the in the form of "Month, YYYY (X)" where X is the number of posts that month, and displays them in a block. The links lead to a simple list of posts for that month.

Views can do a lot more than that, but those are some of the obvious uses of Views.

Pathauto

The Pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias.

Better Select

Better Select module overrides all multiselect HTML elements in Drupal and replaces them with checkboxes, in an auto-scrolling div so they don't take up much room on the page.

Automated Logout

This module provides a site administrator the ability to log users out after a specified time of inactivity. It is highly customizable and includes "site policies" by role to enforce logout.

Chat Room

This module enables chat rooms to be set up on Drupal sites. No additional software is required. Chat Room uses AJAX to update chats without page reloads. Chat rooms are nodes that provide access to chats and chat archives. This module does not support pop-up windows or invitations.

Porter-Stemmer

This module implements the Porter-Stemmer algorithm to improve English-language searching with the Drupal built-in search.module.

It reduces each word in the index to its basic root or stem (e.g. 'blogging' to 'blog') so that variations on a word ('blogs', 'blogger', 'blogging', 'blog') are considered equivalent when searching. This generally results in more relevant results.

Google Custom Search Engine

Google Custom Search Engine (CSE) is an embedded search engine that can be used to search any set of one or more sites. No Google API key is required. More info at http://www.google.com/coop/cse/

After installing this module, configure it by entering Google's alphanumeric ID for your CSE. Once you have granted permission for one or more roles to search the Google CSE, the search page can be found at search/google, and a search block can also be enabled.

Due to Google and Drupal both making use of "q", this module requires that clean URLs be enabled.

Features available only in the Drupal 6 version:

In addition to the CSE functionality, SiteSearch on one or more domains or URL paths can optionally be configured. Radio buttons allow users to search on either the SiteSearch or the CSE, and searches can default to either option.

The "Google CSE search" module is an optional glue module that integrates Google CSE with Drupal's core Search API. After enabling this module, search queries will be logged by the Search module and users can click between available search tabs: "Content", "Google", "Users", etc.

An additional "Google CSE results" block can be enabled, assigned to a region, and set to display on certain paths. This block allows any page on your site to host a self-contained CSE search form and results display. When entering search terms, the user will be returned to the same page (via GET request) and the results will be displayed.

YUI Rich Text Editor

This module integrates the YUI Rich Text Editor into drupal to edit content. Similar to a WYSIWYG editor.

World Clock

Features

  • Displays any number of locations (countries/areas).
  • Automatically adjust for DST of each location.
  • Many customizable options, such as display time format, DST mode, footnote, etc.
  • 107 countries/areas are supported right now.

CAPTCHA

A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. The purpose of CAPTCHA is to block form submissions from spambots – automated scripts that harvest email address from publicly available web forms.

The CAPTCHA module provides this feature to virtually any user facing web form on a Drupal site. The administration settings for CAPTCHA are available at admin/user/captcha.

Cumulus

Cumulus allows you to display your site's tags using Flash that rotates them beautifully in 3D. It works like a regular tag cloud, but is more visually exciting. Cumulus depends on the Tagadelic. Tagadelic is a small module, without any databases, or configuration, that generates a page with weighted tags. Cumulus also requires a JS script called SWFObject. This script is licensed under the MIT license and can't be hosted on Drupal.org. So, you need to get the file from http://pratul.in/files/cumulus.js and put it in your Cumulus folder in your modules directory. module.







Drupal 6.6+ and Proxy related issues


To solve proxy related issues in drupal 6.X follow issues addressed at http://drupal.org/node/7881.

or

Step: 1
++++++
Apply patch: (http://drupal.org/files/issues/proxy6.6.patch)

--- includes/common.inc Wed Oct 22 20:26:02 2008
+++ includes/common.inc Fri Oct 24 10:22:30 2008
@@ -416,6 +416,11 @@
function drupal_http_request($url, $headers = array(), $method = 'GET', $data = NULL, $retry = 3) {
static $self_test = FALSE;
$result = new stdClass();
+
+ //PROXYHACK
+ $proxy_not_required = TRUE;
+ ///PROXYHACK
+
// Try to clear the drupal_http_request_fails variable if it's set. We
// can't tie this call to any error because there is no surefire way to
// tell whether a request has failed, so we add the check to places where
@@ -449,7 +454,19 @@
case 'http':
$port = isset($uri['port']) ? $uri['port'] : 80;
$host = $uri['host'] . ($port != 80 ? ':'. $port : '');
+ //PROXYHACK
+ $proxy_not_required = is_in_no_proxy_list($uri['host']);
+ if ((variable_get('proxy_server', '') != '') && (FALSE == $proxy_not_required)) {
+ $proxy_server = variable_get('proxy_server', '');
+ $proxy_port = variable_get('proxy_port', 8080);
+ $fp = @fsockopen($proxy_server, $proxy_port, $errno, $errstr, 15);
+ }
+ else {
+ ///PROXYHACK
$fp = @fsockopen($uri['host'], $port, $errno, $errstr, 15);
+ //PROXYHACK
+ }
+ ///PROXYHACK
break;
case 'https':
// Note: Only works for PHP 4.3 compiled with OpenSSL.
@@ -472,10 +489,19 @@
}

// Construct the path to act on.
+ //PROXYHACK
+ if ((variable_get('proxy_server', '') != '') && (FALSE == $proxy_not_required)) {
+ $path = $url;
+ }
+ else {
+ ///PROXYHACK
$path = isset($uri['path']) ? $uri['path'] : '/';
if (isset($uri['query'])) {
$path .= '?'. $uri['query'];
}
+ //PROXYHACK
+ }
+ ///PROXYHACK

// Create HTTP request.
$defaults = array(
@@ -492,6 +518,15 @@
$defaults['Authorization'] = 'Authorization: Basic '. base64_encode($uri['user'] . (!empty($uri['pass']) ? ":". $uri['pass'] : ''));
}

+ //PROXYHACK
+ if ((variable_get('proxy_username', '') != '') && (FALSE == $proxy_not_required)) {
+ $username = variable_get('proxy_username', '');
+ $password = variable_get('proxy_password', '');
+ $auth_string = base64_encode($username . ($password != '' ? ':'. $password : ''));
+ $defaults['Proxy-Authorization'] = 'Proxy-Authorization: Basic '. $auth_string ."\r\n";
+ }
+ ///PROXYHACK
+
foreach ($headers as $header => $value) {
$defaults[$header] = $header .': '. $value;
}
@@ -569,6 +604,25 @@
$result->code = $code;
return $result;
}
+//PROXY_HACK
+function is_in_no_proxy_list($host) {
+ $rv = FALSE;
+
+ $proxy_exceptions = variable_get('proxy_exceptions', '');
+ if (FALSE == empty($proxy_exceptions)) {
+ $patterns = explode(",",$proxy_exceptions);
+ foreach ($patterns as $pattern) {
+ $pattern = trim($pattern, " ");
+ if (strstr($host,$pattern)) {
+ $rv = TRUE;
+ break;
+ }
+ }
+ }
+ return $rv;
+}
+///PROXY_HACK
+
/**
* @} End of "HTTP handling".
*/
--- modules/system/system.admin.inc Thu Oct 16 21:23:38 2008
+++ modules/system/system.admin.inc Fri Oct 24 10:19:54 2008
@@ -1362,6 +1362,79 @@
drupal_set_message(t('Caches cleared.'));
}

+//PROXYHACK
+/**
+ * Form builder; Configure the site proxy settings.
+ *
+ * @ingroup forms
+ * @see system_settings_form()
+ */
+function system_proxy_settings() {
+
+ $form['forward_proxy'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Forward Proxy Settings'),
+ '#description' => t('The proxy server used when Drupal needs to connect to other sites on the Internet.'),
+ );
+ $form['forward_proxy']['proxy_server'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Proxy host name'),
+ '#default_value' => variable_get('proxy_server', ''),
+ '#description' => t('The host name of the proxy server, eg. localhost. If this is empty Drupal will connect directly to the internet.')
+ );
+ $form['forward_proxy']['proxy_port'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Proxy port number'),
+ '#default_value' => variable_get('proxy_port', 8080),
+ '#description' => t('The port number of the proxy server, eg. 8080'),
+ );
+ $form['forward_proxy']['proxy_username'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Proxy username'),
+ '#default_value' => variable_get('proxy_username', ''),
+ '#description' => t('The username used to authenticate with the proxy server.'),
+ );
+ $form['forward_proxy']['proxy_password'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Proxy password'),
+ '#default_value' => variable_get('proxy_password', ''),
+ '#description' => t('The password used to connect to the proxy server. This is kept as plain text.', '')
+ );
+ $form['forward_proxy']['proxy_exceptions'] = array(
+ '#type' => 'textfield',
+ '#title' => t('No proxy for'),
+ '#default_value' => variable_get('proxy_exceptions', 'localhost'),
+ '#description' => t('Example: .example.com,localhost,192.168.1.2', '')
+ );
+ $form['forward_proxy']['proxy_skip_selftest'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Skip HTTP self test'),
+ '#description' => t('Skip HTTP request self test.'),
+ '#default_value' => variable_get('proxy_skip_selftest', '0'),
+ );
+ $form['#validate'][] = 'system_proxy_settings_validate';
+
+ return system_settings_form($form);
+}
+
+/**
+ * Validate the submitted proxy form.
+ */
+function system_proxy_settings_validate($form, &$form_state) {
+ // Validate the proxy settings
+ $form_state['values']['proxy_server'] = trim($form_state['values']['proxy_server']);
+ if ($form_state['values']['proxy_server'] != '') {
+ // TCP allows the port to be between 0 and 65536 inclusive
+ if (!is_numeric($form_state['values']['proxy_port'])) {
+ form_set_error('proxy_port', t('The proxy port is invalid. It must be a number between 0 and 65535.'));
+ }
+ elseif ($form_state['values']['proxy_port'] <>= 65536) {
+ form_set_error('proxy_port', t('The proxy port is invalid. It must be between 0 and 65535.'));
+ }
+ }
+}
+///PROXY_HACK
+
/**
* Form builder; Configure the site file handling.
*
--- modules/system/system.module Wed Oct 22 20:26:02 2008
+++ modules/system/system.module Fri Oct 24 10:20:54 2008
@@ -406,6 +406,16 @@
'access arguments' => array('administer site configuration'),
'file' => 'system.admin.inc',
);
+ //PROXYHACK
+ $items['admin/settings/proxy'] = array(
+ 'title' => 'Proxy Server',
+ 'description' => 'Configure settings when the site is behind a proxy server.',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('system_proxy_settings'),
+ 'access arguments' => array('administer site configuration'),
+ 'file' => 'system.admin.inc',
+ );
+ ///PROXY_HACK
$items['admin/settings/file-system'] = array(
'title' => 'File system',
'description' => 'Tell Drupal where to store uploaded files and how they are accessed.',
@@ -1877,6 +1887,10 @@
// Check whether we can do any request at all. First get the results for
// a very simple page which has access TRUE set via the menu system. Then,
// try to drupal_http_request() the same page and compare.
+ //PROXYHACK
+ $skip_selftest = variable_get('proxy_skip_selftest', '0');
+ if (0 == $skip_selftest) {
+ ///PROXYHACK
ob_start();
$path = 'admin/reports/request-test';
menu_execute_active_handler($path);
@@ -1884,6 +1898,12 @@
ob_end_clean();
$result = drupal_http_request(url($path, array('absolute' => TRUE)));
$works = isset($result->data) && $result->data == $nothing;
+ //PROXYHACK
+ }
+ else {
+ $works = TRUE;
+ }
+ ///PROXYHACK
variable_set('drupal_http_request_fails', !$works);
return $works;
}

Step:2
++++++
Then download the module "Http Request Fail Reset" from 'http://drupal.org/project/http_request_fail_reset' and enable it.


Step:3
+++++
You will find a 'Proxy Server' link under Home / Administer / Site configuration


Enter proxy details and save your configurations !!!!!!!

Thursday 25 December 2008

Rounded / curvy corners in Photoshop !


Check this nice way to accomplish this effect by Matt Thommes.

Perfect, simple and effective.

http://matthom.com/archive/2004/09/10/fast-rounded-corners-in-photoshop

Wednesday 24 December 2008

Drupal not loading pages except homepage


Its due to clean URL. You have to enable mod_rewrite for rectifying this. If you are using Windows OS and want to enable mod_rewrite module then
  1. find the httpd.conf file (usually you will find it in a folder called conf, config or something along those lines)
  2. the httpd.conf file uncomment the line LoadModule rewrite_module modules/mod_rewrite.so (remove the pound '#' sign from in front of the line)
  3. find the line ClearModuleList is uncommented then find and make sure that the line AddModule mod_rewrite.c is not commented out.

Import large file into MySQL : use SOURCE command

Just use SOURCE command. Or, if you want to be clever and have system privileges, just copy the original MySQL database file from the origin server and put it into the MySQL data directory of the destination server. MySQL is really a file system and not actually a relational database system and it knows how to read it’s own binary database files.
  • Put the '.sql' file into a convenient location (the MySQL/bin or MySQL/MySQL5.X.XX directory would be perfect)
  • Create/open the destination database in MySQL
  • SOURCE sqlfilename (if you put it outside mysql bin, you probably need the full path)

**********
$ mysqldump -u -p >> somedatabasetable.sql
$ mysql -u -p
mysql> create database `xxxdb`
mysql> use `xxxdb`
mysql> source xxxdb.sql