# file: search.web # Copyright (c) 1996-2011 Cuesta Technologies, LLC # All rights reserved. # This document contains confidential and/or proprietary information # beloging to Cuesta Technologies, LLC. # Package: alt # # Purpose: quick search form: search for Config_Sort_Order and Title # (Description) Item_Number # search page: search for Title/Description Keywords # Product_Type Big_Picture Subject Five_Elements_Reading # GR_Level_Begin_Code GR_Level_End_Code # Grade_Begin_Code Grade_End_Code # DRA_Level_Begin DRA_Level_End Literacy_Stages # Requires: # set pageID PG_23 ### set recordedFields for STATS set recordedFields {Config_Sort_Order Title Keywords Product_Type Science_Strand Math_Strand Social_Studies_Strand Language Literacy_Stages Imprint Big_Picture Subject Special Five_Elements_Reading Math_Strand Reading_Language_Arts_Topics Science_Strand Social_Studies_Strand} set quickSearch {} set subjectList [linsert $cdb(Subject) 0 All] redo_form_values ### DO search if come from search page or form template (quick search) ### or from URL. ### we cannot use [info exists cw_val(submit)] when search from URL. if {[info exists cw_val] || ([info exists cw_args(where)] && [string match template $cw_args(where)])} { cw_val_trimSpace cw source mysql.tcl set listcriteria "" ## List of fileds that need to do tlob search (word And word) set tlobFieldList "" ## List of fileds that are mult fileds. set multFieldList "" ## extra query string for some special search pass to MySQLRecordSearch proc. set appendQueryString "" set sdb(search_result_list) "" set sdb(searchcriteria) "" set omitlist {Config_Sort_Order Title Grade_Begin_Code Grade_End_Code DRA_Level_Begin DRA_Level_End GR_Level_Begin GR_Level_End} set substitutepairs {{Big_Picture "Featured Products"} } set results {} set results1 {} set results2 {} ### check the input data and do complain ### marked_complain Title isonechar "Please enter more than one character for Title/Description search." marked_complain Config_Sort_Order isonechar "Please enter more than one digit for Item Number search." if {[info exists cw_val(Subject)] && [string length $cw_val(Subject)]} { if {[string match All $cw_val(Subject)]} { unset cw_val(Subject) unset cw_vals(Subject) } elseif {[info exists cw_val(Topic)] && [string length $cw_val(Topic)]} { set topField [mapelement $cw_val(Subject) $subjectList $cdb(TopicStrand2Subject)] set cw_val($topField) $cw_val(Topic) set cw_vals($topField) $cw_vals(Topic) } } if {![info exists cw_args(where)]} { ### check if the search criteria is input if come from search page set input 0 foreach var $recordedFields { if {[info exists cw_val($var)] && [string length $cw_val($var)]} { incr input #cw log 2 "var is $var; incr the input: $input" } } ## Begin of check range fields. if {[info exists cw_val(GR_Level_Begin)] && [info exists cw_val(GR_Level_End)]} { if {[string compare [lindex $cdb(Guided_Reading_Range) 1] $cw_val(GR_Level_Begin)] || [string compare [lindex $cdb(Guided_Reading_Range) end] $cw_val(GR_Level_End)]} { incr input set checkGR yes } if {$cw_vals(GR_Level_Begin) > $cw_vals(GR_Level_End)} { set mark(GRlevel) 1 lappend complaints "Please specify a valid Guided Reading Level range (from was greater than to)." } } if {[info exists cw_val(Grade_Begin_Code)] && [info exists cw_val(Grade_End_Code)]} { if {[string compare [lindex $cdb(Grade_Range_Number) 0] $cw_val(Grade_Begin_Code)] || [string compare [lindex $cdb(Grade_Range_Number) end] $cw_val(Grade_End_Code)]} { incr input set checkgrade yes } if {$cw_vals(Grade_Begin_Code) > $cw_vals(Grade_End_Code)} { set mark(grade) 1 lappend complaints "Please specify a valid grade range (from was greater than to)." } } if {[info exists cw_val(DRA_Level_Begin)] && [info exists cw_val(DRA_Level_End)]} { if {[string compare [lindex $cdb(DRA_Range_Number) 0] $cw_val(DRA_Level_Begin)] || [string compare [lindex $cdb(DRA_Range_Number) end] $cw_val(\DRA_Level_End)]} { incr input set checkDRA yes #cw log 2 "DRA: incr the input: $input" } if {$cw_vals(DRA_Level_Begin) > $cw_vals(DRA_Level_End)} { set mark(DRAlevel) 1 lappend complaints "Please specify a valid development reading assessment level range (from was greater than to)." } } ## End of check range fields. if { $input == 0 } { lappend complaints "Please enter some search criteria." } } else { ### come from quick search form. if {![info exists cw_val(quicksearch)] || ![string length $cw_val(quicksearch)] } { cw log 2 "NO INPUT FROM QUICK SEARCH" lappend complaints "Please enter some search criteria." } } if {[llength $complaints] == 0 } { set psearchableList [GetSearchableList $cw_tablepath $omitlist] ### Generate search criteria #cw log 2 "multFieldList:$multFieldList" set listcriteria [GetSearchCriteria $psearchableList $substitutepairs] if {[info exists cw_args(where)] && [string match template $cw_args(where)]} { ## Generate special query string for Title, Keywords, ## ISBN Item_Number fields. set searchList {Title Keywords ISBN Item_Number Sub_Title Super_Title} append listcriteria "
Keyword / ISBN: $cw_val(quicksearch)" } else { ## create product search list based on product_table.t and cw_vals. if {[info exists cw_val(Title)] && [string length $cw_val(Title)]} { append listcriteria "
Title/Description: $cw_val(Title)" } } MysqlCleancw_val set morethanpairs {} set lessthanpairs {} ## Step 1: Connect to the mysql server MysqlConnectProdDB #cw log 2 "tlobFieldList=$tlobFieldList" if {[info exists cw_args(where)] && [string match template $cw_args(where)]} { ### Do search for template quick search form. ### Search for Title, Description and Configuration_Text cw stats QUICKSEARCH $cw_val(quicksearch) set titleORList {} foreach item $searchList { if {[lsearch $tlobFieldList $item] > -1 } { lappend titleORList [CreateAndSearchQuery $item $cw_val(quicksearch)] } else { lappend titleORList "$item LIKE '%$cw_val(quicksearch)%'" } } set titleString "([join $titleORList " OR "])" set appendQueryString [SetAppendQueryString $appendQueryString $titleString] } else { ### Do search if come from search page cw stats SEARCHPAGE search if {[info exists cw_val(Title)] && [string length $cw_val(Title)]} { ## Generate special query string for Title field. set searchList {Title Description Sub_Title Super_Title} set titleORList {} foreach item $searchList { if {[lsearch $tlobFieldList $item] > -1 } { lappend titleORList [CreateAndSearchQuery $item $cw_val(Title)] } else { lappend titleORList "$item LIKE '%$cw_val(Title)%'" } } set titleString "([join $titleORList " OR "])" set appendQueryString [SetAppendQueryString $appendQueryString $titleString] } #cw log 2 "appendQueryString: $appendQueryString" if {[info exists checkgrade]} { set gradebegin [mapelement $cw_vals(Grade_Begin_Code) $cdb(Grade_Range_Number) $cdb(Grade_Range)] set gradeend [mapelement $cw_vals(Grade_End_Code) $cdb(Grade_Range_Number) $cdb(Grade_Range)] cw stats PF-GRADE_BEGIN $cw_vals(Grade_Begin_Code) cw stats PF-GRADE_END $cw_vals(Grade_End_Code) ##Grade_Begin_Code >= $cw_val(Grade_End_Code) ##Grade_End_Code >= $cw_val(Grade_Start_Code) lappend morethanpairs {Grade_End_Code Grade_Begin_Code } lappend lessthanpairs {Grade_Begin_Code Grade_End_Code} lappend psearchableList Grade_Begin_Code Grade_End_Code append listcriteria "
Grade Level: $gradebegin" if {$cw_val(Grade_End_Code) != $cw_val(Grade_Begin_Code)} { append listcriteria " - $gradeend
" } } if {[info exists checkGR]} { #set GRBegin [mapelement $cw_val(GR_Level_Begin) $cdb(GR_Range_Number) $cdb(Guided_Reading_Range)] #set GREnd [mapelement $cw_val(GR_Level_End) $cdb(GR_Range_Number) $cdb(Guided_Reading_Range)] set GRBegin $cw_val(GR_Level_Begin) set GREnd $cw_val(GR_Level_End) cw stats PF-GR_BEGIN $GRBegin cw stats PF-GR_END $GREnd ##GR_Level_Begin >= $cw_val(GR_Level_End) ##GR_Level_End >= $cw_val(GR_Level_Start) lappend morethanpairs {GR_Level_End GR_Level_Begin} lappend lessthanpairs {GR_Level_Begin GR_Level_End} lappend psearchableList GR_Level_Begin GR_Level_End append listcriteria "
Guided Reading Level: $GRBegin-$GREnd
" } if {[info exists checkDRA]} { cw stats PF-DRA_BEGIN $cw_val(DRA_Level_Begin) cw stats PF-DRA_END $cw_val(DRA_Level_End) lappend morethanpairs {DRA_Level_End DRA_Level_Begin} lappend lessthanpairs {DRA_Level_Begin DRA_Level_End} lappend psearchableList DRA_Level_Begin DRA_Level_End append listcriteria "
DRA Level: $cw_val(DRA_Level_Begin) - $cw_val(DRA_Level_End)
" } } set appendQueryString [SetAppendQueryString $appendQueryString "Results_List != 'Hide'"] #cw log 2 "appendQueryString=$appendQueryString" ## do MysqlRecordSearch set results [MysqlRecordSearch $mysqlProductTable $psearchableList Record_ID "Record_Type DESC, Title_Sort" {} {} $morethanpairs $lessthanpairs $appendQueryString] if {[info exists cw_args(where)] && [string match template $cw_args(where)] && ![llength $results]} { ## ALT will sometimes send out paper catalogs with a two-letter ## prefix appended to the ISBN. For example, ## AB9780766439023 ## or with dashes: ## AB9780-766-439-023 ## 1. strip out hyphens from the user input regsub -all {\-} $cw_val(quicksearch) {} item #cw log 2 "item=$item" ## 2. strip out the leading characters. regsub -all {^[A-Za-z]*} $item {} item if {[string length $item]} { set query "SELECT Record_ID FROM $mysqlProductTable WHERE ISBN LIKE '%$item%' AND Results_List != 'Hide' ORDER BY Record_Type DESC, Title_Sort;" set results [sql $query] cw log 2 "query=$query; result: [llength $results]" } } if {[llength $results]} { set appendQueryString1 [SetAppendQueryString $appendQueryString "Record_Type='Group'"] set results1 [MysqlRecordSearch $mysqlProductTable $psearchableList Record_ID "Record_Type DESC, Title_Sort" {} {} $morethanpairs $lessthanpairs $appendQueryString1] #cw log 2 "results1=$results1" set appendQueryString2 [SetAppendQueryString $appendQueryString "Record_Type='Config'"] set results2 [MysqlRecordSearch $mysqlProductTable $psearchableList Record_ID "Record_Type DESC, Title_Sort" {} {} $morethanpairs $lessthanpairs $appendQueryString2] #cw log 2 "results2=$results2" } ##Added the HTML end tags to search criteria append listcriteria [GetSearchCriteriaEnd] ## Disconnect the mysql server MysqlDisconnect cw log 2 "sdb(MYSQLqueryString): $sdb(MYSQLqueryString)" set sdb(search_result_list) $results set sdb(search_result_list_All) $results set sdb(search_result_list_Group) $results1 set sdb(search_result_list_Config) $results2 set sdb(searchcriteria) $listcriteria DoStats $recordedFields if {[llength $results]} { if {[info exists cw_val(List_Limit)]} { set sdb(listLimit) $cw_val(List_Limit) } cw redirect list$webPgExtn$nocache+curList@0+frompage@search } else { set noresult 1 } } } cw source $cw_templatePath/templateSetup.tcl cw source $cw_templatePath/templateTop.tcl ######################## # Add your own code here ######################## if {[info exists cw_args(prod)] && [string match no $cw_args(prod)]} { puts "That product is no longer available. Please use the search page to find products that meet your needs." } if {[info exists noresult] && [string match 1 $noresult]} { puts "There are no items that meet your selected criteria. Please try again.
" } #### search form #### puts "
Limit Search Results To   " cw_popup List_Limit {20 50}   Items Per Page

Title/Description:  complain_mark Title * cw_text Title {} 30
Keywords: complain_mark Keywords * cw_text Keywords {} 30
basic_form_buttons Search {Clear Changes} {} formbutton

include_file $pagename\_levels$cdb(inc_extend)
Grade Level: From:  complain_mark grade * if {![info exists cw_vals(Grade_Begin_Code)] || [llength $cw_vals(Grade_Begin_Code)] == 0} { set gradebegin "[lindex $cdb(Grade_Range_Number) 0]" } else { set gradebegin $cw_vals(Grade_Begin_Code) } cw_popupE Grade_Begin_Code $cdb(Grade_Range) {} {} {} {} $gradebegin {} $cdb(Grade_Range_Number) To:  complain_mark grade * if {![info exists cw_vals(Grade_End_Code)] || [llength $cw_vals(Grade_End_Code)] == 0} { set gradeend [lindex $cdb(Grade_Range_Number) end] } else { set gradeend $cw_vals(Grade_End_Code) } cw_popupE Grade_End_Code $cdb(Grade_Range) {} {} {} {} $gradeend {} $cdb(Grade_Range_Number)
Guided Reading Level: From:  complain_mark GRlevel * if {![info exists cw_vals(GR_Level_Begin)] || [llength $cw_vals(GR_Level_Begin)] == 0} { set GRbegin "[lindex $cdb(Guided_Reading_Range) 1]" } else { set GRbegin $cw_vals(GR_Level_Begin) } cw_popupE GR_Level_Begin [lrange $cdb(Guided_Reading_Range) 1 end] {} {} {} {} $GRbegin To:  complain_mark GRlevel * if {![info exists cw_vals(GR_Level_End)] || [llength $cw_vals(GR_Level_End)] == 0} { set GRend "[lindex $cdb(Guided_Reading_Range) end]" } else { set GRend $cw_vals(GR_Level_End) } #cw_popup2 GR_Level_End [lrange $cdb(GR_Range_Number) 1 end] [lrange $cdb(Guided_Reading_Range) 1 end] $GRend cw_popupE GR_Level_End [lrange $cdb(Guided_Reading_Range) 1 end] {} {} {} {} $GRend
DRA Level: From:  complain_mark DRAlevel * if {![info exists cw_vals(DRA_Level_Begin)] || [llength $cw_vals(DRA_Level_Begin)] == 0} { set drabegin "[lindex $cdb(DRA_Range_Number) 0]" } else { set drabegin $cw_vals(DRA_Level_Begin) } cw_popupE DRA_Level_Begin $cdb(DRA_Range_Number) {} {} {} {} $drabegin To:  complain_mark dralevel * if {![info exists cw_vals(DRA_Level_End)] || [llength $cw_vals(DRA_Level_End)] == 0} { set draend [lindex $cdb(DRA_Range_Number) end] } else { set draend $cw_vals(DRA_Level_End) } cw_popupE DRA_Level_End $cdb(DRA_Range_Number) {} {} {} {} $draend
basic_form_buttons Search {Clear Changes} {} formbutton puts "
" include_file $pagename\_checkboxes$cdb(inc_extend) puts "
" cw_checkboxes2 Language $cdb(Language) 3 {} {} {} {} {} h {} "nowrap" puts "
Language:
" cw_checkboxes2 Special $cdb(Special) 5 {} {} {} {} {} h {} "nowrap" puts "
Special:
" ####################################### ##### Lit Stages and Five Elements puts " " cw_checkboxes2 Literacy_Stages $cdb(LitStages_ordered) 3 {} {} {} {} {} h {} "nowrap" puts "
Literacy Stages:
" puts "
Five Elements of Reading:
" cw_checkboxes2 Five_Elements_Reading $cdb(FiveElemRead_ordered) 5 {} {} {} {} {} h {} "nowrap" puts "

" ########################################################### ##### Start Subjects ##### puts "
Subject:" puts " " set idlist [add_sequentialnum $subjectList] set ii 0 set subLen [llength $subjectList] set found 0 foreach item $subjectList id $idlist { set state "" if {![expr ($ii % 2)]} { puts "" } if {!$found} { if {[info exists cw_val(Subject)] && [string match $item $cw_val(Subject)]} { set state " CHECKED" set found 1 } elseif {[string match All $item]} { set state "CHECKED" } } puts "" if {[expr ($ii % 2)]} { puts "" } incr ii } if {$subLen > $ii} { puts "" } puts "
 

" puts "
" set topicStr "" set m 0 foreach item $subjectList { set tmpField [lindex $cdb(TopicStrand2Subject) $m] if {[string compare None $tmpField] && [info exists cdb($tmpField)]} { append topicStr "
" foreach subitem $cdb($tmpField) { append topicStr "" } append topicStr "
Topic/Strand:
" } else { append topicStr "
" } incr m } puts "
$topicStr

" puts "

" if {[llength $cdb(Product_Type)]} { puts "" #cw_popupE Product_Type $cdb(Product_Type) {All} cw_checkboxes2 Product_Type $cdb(Product_Type) 3 {} {} {} {} {} h {} "nowrap" puts "
Product Type:

" } basic_form_buttons Search {Clear Changes} {} formbutton cw source $cw_templatePath/templateBottom.tcl