Index: openacs-4/packages/imsld/tcl/imsld-install-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-install-procs.tcl,v diff -u -N -r1.22 -r1.23 --- openacs-4/packages/imsld/tcl/imsld-install-procs.tcl 16 May 2006 09:24:35 -0000 1.22 +++ openacs-4/packages/imsld/tcl/imsld-install-procs.tcl 18 May 2006 11:13:00 -0000 1.23 @@ -370,11 +370,18 @@ content_item 0 {} \ imsld_role_group 0 {} + + rel_types::new imsld_roleinstance_club_rel "imsld role instance - dotlrn club" "imsld role groups - dotlrn clubs" \ + imsld_role_group 0 {} \ + dotlrn_club 0 {} + + # ims-ld run - oacs users rel_types::new imsld_run_users_group_rel "ims_ld_run_group - acs_users" "ims_ld_run_group - acs_users" \ imsld_run_users_group 0 {} \ party 0 {} + } ad_proc -public imsld::install::init_rels { Index: openacs-4/packages/imsld/tcl/imsld-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-procs.tcl,v diff -u -N -r1.62 -r1.63 --- openacs-4/packages/imsld/tcl/imsld-procs.tcl 16 May 2006 09:24:35 -0000 1.62 +++ openacs-4/packages/imsld/tcl/imsld-procs.tcl 18 May 2006 11:13:00 -0000 1.63 @@ -822,6 +822,7 @@ set completed_act_p 1 set rel_defined_p 0 + set user_roles_list [imsld::roles::get_user_roles -user_id $user_id -imsld_id $imsld_id] db_foreach referenced_role_part { select ar.object_id_two as role_part_item_id, rp.role_part_id @@ -1360,7 +1361,7 @@ } send-mail { - # FIX ME: when roles be supported, fix it so the mail is sent to the propper role + # FIX ME: when roles are supported, fix it so the mail is sent to the propper role set resource_item_list "" db_1row get_send_mail_info { select sm.title as send_mail_title @@ -1369,9 +1370,12 @@ and content_revision__is_live(sm.mail_id) = 't' } + + db_1row get_sendmail_id {} set send_mail_node_li [$dom_doc createElement li] set a_node [$dom_doc createElement a] - $a_node setAttribute href "[export_vars -base "[dotlrn_community::get_community_url [dotlrn_community::get_community_id]]spam-recipients" {referer one-community-admin}]" + + $a_node setAttribute href "[export_vars -base "[dotlrn_community::get_community_url [dotlrn_community::get_community_id]]imsld/imsld-sendmail" {{send_mail_id $sendmail_id}}]" set service_title [$dom_doc createTextNode "$send_mail_title"] $a_node setAttribute target "content" $a_node appendChild $service_title @@ -1448,9 +1452,10 @@ } send-mail { - # FIX ME: when roles be supported, fix it so the mail is sent to the propper role + + db_1row get_sendmail_id {} set image_path [imsld::object_type_image_path -object_type $service_type] - set services_list "\"Send-Mail" + set services_list "\"Send-Mail" set resource_item_list $service_item_id } @@ -1605,6 +1610,7 @@ set identifier [lindex $services_list 2] set service_type [lindex $services_list 3] set service_title [lindex $services_list 4] + set class_name [lindex $services_list 5] if { ![imsld::class_visible_p -run_id $run_id -owner_id $service_id -class_name $class_name] } { continue @@ -2950,6 +2956,8 @@ @return The list of items (resources, feedback, environments, using tdom) associated with the support activity } { + + set user_id [ad_conn user_id] if { ![db_0or1row activity_info { select on_completion_id as on_completion_item_id, activity_id, @@ -3091,7 +3099,6 @@ where item_id = :activity_item_id and content_revision__is_live(activity_id) = 't' } - # get environments set environments_list [list] set associated_environments_list [db_list sa_associated_environments { @@ -3456,6 +3463,8 @@ where run_id = :run_id } # start with the role parts + set user_roles_list [imsld::roles::get_user_roles -user_id $user_id -imsld_id $imsld_id] + foreach role_part_list [db_list_of_lists referenced_role_parts { *SQL* }] { set type [lindex $role_part_list 0] set activity_id [lindex $role_part_list 1] @@ -3660,6 +3669,7 @@ } } + # 1. for each act in the next_act_id_list # 1.2. for each role_part in the act # 1.2.1 find the next activity referenced by the role_part @@ -3668,14 +3678,18 @@ # 2.2.1.2 if it is an activity structure we have verify which activities are already completed and return the next # activity in the activity structure, handling the case when the next activity is also an activity structure + set user_roles_list [imsld::roles::get_user_roles -user_id $user_id -imsld_id $imsld_id] set next_activity_id_list [list] foreach act_item_id $next_act_item_id_list { - foreach role_part_id [db_list act_role_parts { - select role_part_id - from imsld_role_parts - where act_id = :act_item_id - and content_revision__is_live(role_part_id) = 't' - }] { + foreach role_part_id [db_list act_role_parts " + select irp.role_part_id + from imsld_role_parts irp, + imsld_rolesi iri + where content_revision__is_live(irp.role_part_id)='t' + and irp.act_id=:act_item_id + and irp.role_id=iri.item_id + and iri.role_id in ([join $user_roles_list ","]) + "] { db_1row get_role_part_activity { select case when learning_activity_id is not null Index: openacs-4/packages/imsld/tcl/imsld-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-procs.xql,v diff -u -N -r1.20 -r1.21 --- openacs-4/packages/imsld/tcl/imsld-procs.xql 16 May 2006 09:24:35 -0000 1.20 +++ openacs-4/packages/imsld/tcl/imsld-procs.xql 18 May 2006 11:13:00 -0000 1.21 @@ -591,12 +591,15 @@ - select irp.role_part_id - from imsld_role_parts irp - where irp.act_id = :act_item_id - and content_revision__is_live(irp.role_part_id) = 't' - - + + select irp.role_part_id + from imsld_role_parts irp, + imsld_rolesi iri + where content_revision__is_live(irp.role_part_id)='t' + and irp.act_id=:act_item_id + and irp.role_id=iri.item_id + and iri.role_id in ([join $user_roles_list ","]) + @@ -848,7 +851,6 @@ from imsld_servicesi serv where serv.item_id = :service_item_id and content_revision__is_live(serv.service_id) = 't' - @@ -885,7 +887,33 @@ + + + select mail_id as sendmail_id + from imsld_send_mail_servicesi isms + where isms.service_id=:service_item_id + + + + + + select mail_id as sendmail_id + from imsld_send_mail_servicesi isms + where isms.service_id=:service_item_id + + + + + + select role_id as role_destination_ref + from imsld_send_mail_servicesi isms, + imsld_send_mail_data ismd + where isms.service_id=:service_item_id + and isms.item_id=ismd.send_mail_id + + + select env.title as environment_title, @@ -1491,12 +1519,14 @@ ia.act_id, ip.play_id from imsld_role_partsi rp, imsld_actsi ia, imsld_playsi ip, imsld_imsldsi ii, imsld_attribute_instances attr, - imsld_methodsi im + imsld_methodsi im,imsld_rolesi iri where rp.act_id = ia.item_id and ia.play_id = ip.item_id and ip.method_id = im.item_id and im.imsld_id = ii.item_id and ii.imsld_id = :imsld_id + and rp.role_id = iri.item_id + and iri.role_id in ([join $user_roles_list ","]) and content_revision__is_live(rp.role_part_id) = 't' and attr.owner_id = ip.play_id and attr.run_id = :run_id Index: openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl 30 Mar 2006 15:49:45 -0000 1.1 +++ openacs-4/packages/imsld/tcl/imsld-roles-procs.tcl 18 May 2006 11:13:00 -0000 1.2 @@ -36,7 +36,10 @@ #map group with his parent (composition_rel) if {[info exist parent_group_id] } { relation_add composition_rel $parent_group_id $group_id - } + } +#map group with the community or class + set club_id [dotlrn_community::get_community_id] + relation_add imsld_roleinstance_club_rel $group_id $club_id #check for subroles set subroles_list [imsld::roles::get_subroles -role_id $role_id] @@ -137,20 +140,128 @@ ad_proc -private imsld::roles::get_role_instances { -role_id + -community_id } { @param roles_list the list of roles to get the name } { - db_1row get_related_groups {} + if {[info exist community_id]} { + set groups [db_list get_community_related_groups {}] + } else { + set groups [db_list get_related_groups {}] + } return $groups } +ad_proc -private imsld::roles::get_parent_role_instance { + -group_id + -root_parent:boolean +} { + @param group_id the role instance to get the parent from +} { + if {[db_0or1row get_parent_role_instance {}]} { + if {$root_parent} { + set group_id $parent_group_id + while {[db_0or1row get_parent_role_instance {}]} { + set group_id $parent_group_id + } + return $parent_group_id + } else { + return $parent_group_id + } + } else { + return 0 + } +} + ad_proc -private imsld::roles::get_parent_role { -role_id + -root_parent:boolean } { @param roles_list the list of roles to get the name } { - db_1row get_parent_role {} - return $parent_role + set role $role_id + if {[db_0or1row get_parent_role {}]} { + if {$root_parent} { + set role $parent_role + while {[db_0or1row get_parent_role {}]} { + set role $parent_role + } + return $parent_role + } else { + return $parent_role + } + } else { + return 0 + } } +ad_proc -private imsld::roles::get_mail_recipients { + -role_destination_ref + -role_source_id +} { + Get the list of recipients of a send-mail service. Its called from a user belonging to a role into an specific imsld run and must get a list of users from the destination role. +} { +#FIX ME: when runs are supported, here may be included + +#find relationship between source and destination. +# set root_source_parent_role [imsld::roles::get_parent_role -role_id $role_source_id -root_parent] + set root_destination_parent_role [imsld::roles::get_parent_role -role_id $role_destination_ref] + + set community_id [dotlrn_community::get_community_id] + set list_of_groups [imsld::roles::get_role_instances -role_id $role_destination_ref -community_id $community_id] +# if { $root_source_parent_role == $root_destination_parent_role } { + #get community_id +# set group_id +# +# } + set users_list [list] + foreach group $list_of_groups { + lappend users_list [group::get_members -group_id $group] + } + return $users_list +} +ad_proc -public imsld::roles::get_user_roles { + -user_id + -imsld_id +} { + Returns a list with all the roles_id from which the user are member. If imsld_id is given, restrict the list to the roles of the imsld. +} { + set roles_list [db_list get_user_roles_list {}] + + if {[info exist imsld_id]} { + set new_roles_list [list] + foreach role $roles_list { + set role_imsld_id [imsld::roles::get_imsld_from_role -role_id $role] + if { $role_imsld_id == $imsld_id } { + lappend new_roles_list $role + } + } + set roles_list $new_roles_list + } + return $roles_list +} + +ad_proc -public imsld::roles::get_imsld_from_role { + -role_id +} { + get the imsld_id of the given role +} { + return [db_string get_imsld {}] +} + +ad_proc -public imsld::roles::get_role_instances { + -role_id + -community_id +} { + get all the instances of a given role. If community_id is given, restrict the output to the groups of this community +} { + set groups_list [db_list get_list_of_groups {}] +# +# if {[info exist community_id]} { +# set groups_list [db_list get_list_of_community_groups ""] +# } + return $groups_list +} + + Index: openacs-4/packages/imsld/tcl/imsld-roles-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-roles-procs.xql,v diff -u -N -r1.1 -r1.2 --- openacs-4/packages/imsld/tcl/imsld-roles-procs.xql 30 Mar 2006 15:49:45 -0000 1.1 +++ openacs-4/packages/imsld/tcl/imsld-roles-procs.xql 18 May 2006 11:13:00 -0000 1.2 @@ -116,9 +116,24 @@ + + + select ar.object_id_two + from acs_rels ar, + acs_rels ar2, + imsld_rolesi iri + where ar.object_id_one=iri.item_id + and ar.rel_type='imsld_role_group_rel' + and ar.object_id_two=ar2.object_id_one + and ar2.rel_type='imsld_roleinstance_club_rel' + and ar2.object_id_two=:community_id + and iri.role_id=:role_id + + + - select ar.object_id_two as groups + select ar.object_id_two from acs_rels ar, imsld_rolesi iri where ar.object_id_one=iri.item_id @@ -133,13 +148,69 @@ from imsld_rolesi iri, imsld_rolesi iri1 where iri1.parent_role_id=iri.item_id - and iri1.role_id=:role_id + and iri1.role_id=:role + + + select object_id_one as parent_group_id + from acs_rels + where object_id_two=:group_id + and rel_type='composition_rel' + + + + + select ir.role_id + from imsld_rolesi ir, + group_member_map gmm, + acs_objects ao, + acs_rels ar + where ao.object_id = gmm.group_id + and ao.object_type = 'imsld_role_group' + and ar.object_id_two = gmm.group_id + and ir.item_id = ar.object_id_one + and gmm.member_id = :user_id + + + + + select iii.imsld_id + from imsld_imsldsi iii, + imsld_roles ir, + imsld_componentsi ici + where iii.item_id = ici.imsld_id + and ici.item_id = ir.component_id + and ir.role_id = :role_id + + + + + + select ar1.object_id_two as group + from imsld_rolesi iri, + acs_rels ar1 + where ar1.rel_type='imsld_role_group_rel' + and ar1.object_id_one=iri.item_id + and iri.role_id=:role_id + + + + + + select object_id_one + from acs_rels + where rel_type='imsld_roleinstance_club_rel' + and object_id_one in ([join $groups_list ","]) + and object_id_two = :community_id + + + + Index: openacs-4/packages/imsld/www/activity-frame.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/activity-frame.adp,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/imsld/www/activity-frame.adp 5 Apr 2006 18:39:57 -0000 1.5 +++ openacs-4/packages/imsld/www/activity-frame.adp 18 May 2006 11:13:01 -0000 1.6 @@ -4,6 +4,7 @@ + @@ -23,8 +24,11 @@ -@activities;noquote@ + + + +@activities;noquote@ @@ -56,4 +60,10 @@ document.getElementById('object').src = as[0].getAttribute('href'); + + + + Index: openacs-4/packages/imsld/www/activity-frame.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/activity-frame.tcl,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/imsld/www/activity-frame.tcl 16 May 2006 09:24:35 -0000 1.5 +++ openacs-4/packages/imsld/www/activity-frame.tcl 18 May 2006 11:13:01 -0000 1.6 @@ -11,6 +11,20 @@ set user_id [ad_conn user_id] +set supported_roles [db_list supported_roles_list { select iri.role_id + from imsld_rolesi iri, + acs_rels ar, + imsld_support_activitiesi isai + where iri.item_id=ar.object_id_two + and ar.rel_type='imsld_sa_role_rel' + and ar.object_id_one=isai.item_id + and isai.activity_id =:activity_id }] + +if {[llength $supported_roles]} { + set flag 1 +} + + dom createDocument div doc set dom_root [$doc documentElement] $dom_root setAttribute class "tabber" Index: openacs-4/packages/imsld/www/imsld-sendmail-2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/imsld-sendmail-2.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/imsld-sendmail-2.adp 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,12 @@ + + + + @page_title;noquote@ + @context;noquote@ + + + + + + + Index: openacs-4/packages/imsld/www/imsld-sendmail-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/imsld-sendmail-2.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/imsld-sendmail-2.tcl 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,40 @@ +ad_page_contract { +} { + recipients + role_recipient +} + +set users_list [imsld::roles::get_mail_recipients -role_destination_ref $role_recipient] +set users_list [lindex $users_list 0] + +if {[string eq $recipients all-in-role]} { + #todos los miembros del role: calcula destinatarios, redirige y punto + + + ad_returnredirect [export_vars -base ../spam {{recipients:multiple $users_list} {referer one-community-admin}}] + ad_script_abort +} else { + #se puede seleccionar los miembros. hay que hacer un template::list + set page_title "Role members" + set context {} + set bulk_actions "{Compose mail} {../spam} {Send mail to selected members}" + + template::list::create \ + -name find_recipients \ + -multirow find_recipients \ + -key recipients \ + -elements { + user_id { + label {Role member name} + display_col full_name + } + } \ + -bulk_actions "$bulk_actions" \ + -bulk_action_export_vars "{referer one-community}" + + db_multirow -extend { recipients full_name} find_recipients get_recipients_info {} { + set recipients $user_id + set full_name [concat $first_names $last_name] + } +} + Index: openacs-4/packages/imsld/www/imsld-sendmail-2.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/imsld-sendmail-2.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/imsld-sendmail-2.xql 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,15 @@ + + + + + + select person_id as user_id, + first_names, + last_name + from persons + where person_id in ([join $users_list ","]) + + + + + Index: openacs-4/packages/imsld/www/imsld-sendmail.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/imsld-sendmail.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/imsld-sendmail.adp 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,12 @@ + + @page_title;noquote@ + @context;noquote@ +

Select a role to send the email

+ Index: openacs-4/packages/imsld/www/imsld-sendmail.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/imsld-sendmail.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/imsld-sendmail.tcl 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,14 @@ +ad_page_contract { +} { + send_mail_id +} + + +set page_title "Groups of receivers" +set context {} +set community_id [dotlrn_community::get_community_id] + + +db_multirow -extend {send_mail_url} all_email_data get_all_email_data {} { + set send_mail_url [export_vars -base imsld-sendmail-2 {{recipients $recipients} {role_recipient $group_recipient} }] +} Index: openacs-4/packages/imsld/www/imsld-sendmail.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/imsld-sendmail.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/imsld-sendmail.xql 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,20 @@ + + + + + + + select iri.title, + iri.role_id as group_recipient, + isms.recipients + from imsld_send_mail_data ismd, + imsld_send_mail_servicesi isms, + imsld_rolesi iri + where ismd.send_mail_id=isms.item_id + and iri.item_id=ismd.role_id + and isms.mail_id=:send_mail_id + + + + + Index: openacs-4/packages/imsld/www/support-activity-roles.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/support-activity-roles.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/support-activity-roles.adp 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,18 @@ +
+
+ + +
+
+ + Index: openacs-4/packages/imsld/www/support-activity-roles.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/support-activity-roles.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/support-activity-roles.tcl 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,43 @@ +ad_page_contract { + + Here is placed information about roles and users in support activities + +} + +db_multirow role_info get_multirow_role_info "select title as role_name, role_id + from imsld_rolesi + where role_id in ([join $supported_roles ","]) " + +set community_id [dotlrn_community::get_community_id] +set supported_role_instances [list] + +foreach role $supported_roles { + set supported_instances_temp [imsld::roles::get_role_instances -role_id $role -community_id $community_id] + lappend supported_role_instances $supported_instances_temp +} + +set users_in_role [list] + set counter 0 +foreach instances_group $supported_role_instances { + set users_in_instance [list] + foreach instance $instances_group { + set users_in_instance [concat $users_in_instance [group::get_members -group_id $instance]] + } + lappend users_in_role $users_in_instance + db_multirow -append -extend {role_id username} supported_users_in_role remove_repeated "select gmm.member_id + from group_member_map gmm + where gmm.member_id in ([join $users_in_instance ","]) group by gmm.member_id" { + + set role_id [lindex $supported_roles $counter] + set username [join [db_list_of_lists get_user_name "select first_names, last_name from dotlrn_users where user_id=$member_id"]] + + } + set counter [expr $counter + 1] + + +} + +set lista [template::util::multirow_to_list supported_users_in_role] +ns_log Notice "lista generada: $lista" + + Index: openacs-4/packages/imsld/www/resources/dynamicselect.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/www/resources/dynamicselect.js,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/imsld/www/resources/dynamicselect.js 18 May 2006 11:13:01 -0000 1.1 @@ -0,0 +1,40 @@ +function dynamicSelect(id1, id2) { + // Browser and feature tests to see if there is enough W3C DOM support + var agt = navigator.userAgent.toLowerCase(); + var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); + var is_mac = (agt.indexOf("mac") != -1); + if (!(is_ie && is_mac) && document.getElementById && document.getElementsByTagName) { + // Obtain references to both select boxes + var sel1 = document.getElementById(id1); + var sel2 = document.getElementById(id2); + // Clone the dynamic select box + var clone = sel2.cloneNode(true); + // Obtain references to all cloned options + var clonedOptions = clone.getElementsByTagName("option"); + // Onload init: call a generic function to display the related options in the dynamic select box + refreshDynamicSelectOptions(sel1, sel2, clonedOptions); + // Onchange of the main select box: call a generic function to display the related options in the dynamic select box + sel1.onchange = function() { + refreshDynamicSelectOptions(sel1, sel2, clonedOptions); + }; + } +} +function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) { + // Delete all options of the dynamic select box + while (sel2.options.length) { + sel2.remove(0); + } + // Create regular expression objects for "select" and the value of the selected option of the main select box as class names + var pattern1 = /( |^)(select)( |$)/; + var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)"); + // Iterate through all cloned options + for (var i = 0; i < clonedOptions.length; i++) { + // If the classname of a cloned option either equals "select" or equals the value of the selected option of the main select box + if (clonedOptions[i].className.match(pattern1) || clonedOptions[i].className.match(pattern2)) { + // Clone the option from the hidden option pool and append it to the dynamic select box + sel2.appendChild(clonedOptions[i].cloneNode(true)); + } + } +} + +