/    Sign up×
Community /Pin to ProfileBookmark

Create a drupal form looks like this sample page

Hi, I have a page like this

[code=html]
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<!– http://www.sitepoint.com/forums/showthread.php?1173132-Get-data-from-2-comboboxes-and-add-to-a-list –>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Untitled Document</title>
<link rel=”stylesheet” href=”http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css” />

<style>
#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#sortable li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; height: 1.5em; }
html>body #sortable li { height: 1.5em; line-height: 1.2em; }
.ui-state-highlight { height: 1.5em; line-height: 1.2em; }
div{ padding: 10px; }

#addButton
{
background-image:url(add_btn.png);
width:18px;
height:18px;

}

</style>
</head>

<body>
<div>
<select class=”category-select” name=”localprojects”>
<option value=”1″>mca 1</option>
<option value=”2″>mca 2</option>
</select>
<===>
<select class=”category-select” name=”remoteprojects”>
<option value=”z1″>zoho 1</option>
<option value=”z2″>zoho 2</option>
</select>

<a id=”addButton” href=”#” style=”display: inline-block;”></a>
</div>

<ul id=”sortable”>

</ul>

<script src=”http://code.jquery.com/jquery-1.9.1.js”></script>
<script src=”http://code.jquery.com/ui/1.10.3/jquery-ui.js”></script>
<script>
function elementAlreadyExists(val){
var elementAlreadyExists = false;
$(“#sortable > li”).each(function(){
var currVal = $(this).data(“value”);
if(currVal === val){
elementAlreadyExists = true;
return;
}
});
return elementAlreadyExists;
}

$(“#sortable”).sortable({ placeholder: “ui-state-highlight” }).disableSelection();
$(“#addButton”).on(“click”, function(){
var s1 = $(“.category-select”).eq(0).find(“option:selected”),
s2 = $(“.category-select”).eq(1).find(“option:selected”),
newText = s1.text() + ” – ” + s2.text();
newValue = s1.val() + “-” + s2.val();
listElement = $(“<li>”, {class: “ui-state-default”, text: newText, ‘data-value’: newValue});

if (elementAlreadyExists(newValue)){
alert(“Already Exists!”);
} else {
$(“#sortable”).append(listElement);
}
});
</script>
</body>
</html>
[/code]

Now I want create a form just like that.

Here is the code of the function test_form

[code=php]
$css = ”
#sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#sortable li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; height: 1.5em; }
html>body #sortable li { height: 1.5em; line-height: 1.2em; }
.ui-state-highlight { height: 1.5em; line-height: 1.2em; }
div{ padding: 10px; }

#addButton
{
background-image:url(add_btn.png);
width:18px;
height:18px;

}
“;

$js = ”
function elementAlreadyExists(val){
var elementAlreadyExists = false;
$(“#sortable > li”).each(function(){
var currVal = $(this).data(“value”);
if(currVal === val){
elementAlreadyExists = true;
return;
}
});
return elementAlreadyExists;
}

$(“#sortable”).sortable({ placeholder: “ui-state-highlight” }).disableSelection();
$(“#addButton”).on(“click”, function(){
var s1 = $(“.category-select”).eq(0).find(“option:selected”),
s2 = $(“.category-select”).eq(1).find(“option:selected”),
newText = s1.text() + ” – ” + s2.text();
newValue = s1.val() + “-” + s2.val();
listElement = $(“<li>”, {class: “ui-state-default”, text: newText, ‘data-value’: newValue});

if (elementAlreadyExists(newValue)){
alert(“Already Exists!”);
} else {
$(“#sortable”).append(listElement);
}
});
“;

drupal_add_css(“http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css”, array(‘type’ => ‘external’, ‘group’ => CSS_DEFAULT));
drupal_add_css($css, array(‘type’ => ‘inline’));

drupal_add_js(“http://code.jquery.com/jquery-1.9.1.js”, array(‘type’ => ‘external’, ‘scope’ => ‘footer’));
drupal_add_js(“http://code.jquery.com/ui/1.10.3/jquery-ui.js”, array(‘type’ => ‘external’, ‘scope’ => ‘footer’));
//drupal_add_js($module_path . $js_dir . “/list.js”, array(‘type’ => ‘inline’, ‘scope’ => ‘footer’));
drupal_add_js($js, array(‘type’ => ‘inline’, ‘scope’ => ‘footer’, ‘group’ => JS_LIBRARY));

$form[‘local_projects’] = array(
‘#type’ => ‘select’,
‘#title’ => t(‘Local Projects’),
‘#options’ => $local_projects, //local_projects contains many key=>value pairs
//’#default_value’ => $category[‘selected’],
‘#description’ => t(‘Choose a Local project’),
‘#attributes’ => array(‘class’ => array(‘category-select’)),
);

$form[‘remote_projects’] = array(
‘#type’ => ‘select’,
‘#title’ => t(‘Remote Projects’),
‘#options’ => $remote_projects, //remote_projects contains many key=>value pairs
//’#default_value’ => $category[‘selected’],
‘#description’ => t(‘Choose a Remote project’),
‘#attributes’ => array(‘class’ => array(‘category-select’)),
);

$form[‘addButton’] = array(
‘#attributes’ => array(‘style’ => ‘display: inline-block;’),
‘#type’ => ‘link’,
‘#title’ => t(”),
‘#href’ => “#”,
‘#id’ => ‘addButton’,
);

$form[‘sortable’] = array(
‘#id’ => ‘sortable’,
‘#type’ => ‘#ul’,
);

return system_settings_form($form);
[/code]

5 issues occurred:
– The style code is wrapped in CDATA tag.
– The js code is wrapped in CDATA tag.
– The add button image (file add_btn.png) can not show, despite it already existing in both the folders of the module and the site’s root directory.
– The comboboxes display in 2 different rows, instead of only one row.
– The hash character of the add button image’s href property turns to “%23” when the page loads.

Please tell me what should I do to fix these problems? What change should I make to the code? It seems to me that my css and js script could not work.

to post a comment
PHP

0Be the first to comment 😎

×

Success!

Help @atn_webdev2010 spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.2,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,
)...