Basic search form for dmNews

Overview

This is a basic search form which enables you to place a search option for dmNews, you can build it further as required.

The searchform.cfc custom type file

The searchform.cfc custom type file is placed in /packages/types/ in your project or plugin.

searchform.cfc
<!---

Copyright 2010:

Author: Marco van den Oever
Company: MVDO-WSO
Website: http://www.webserviceonline.biz
Email: marco@webserviceonline.biz

License: 

This software is licensed under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.
For a copy of the GNU General Public License check the license folder or see <http://www.gnu.org/licenses/>.

Description:

Simple Searchform for dmNews.

Created: 30/05/10

Tested on CF9, FC6.0

--->
<cfcomponent displayname="Search form" hint="Enables display of search form" extends="farcry.core.packages.rules.rules" output="false">
<cfproperty ftFieldset="Search Field" name="searchfield" type="string" fttype="string" default="" ftshowlabel="false" hint="Search Field." ftValidation="required" bSave="false" />
</cfcomponent>

The displaySearchform.cfm webskin file

The displaySearchform.cfm webskin file is placed in /webskin/dmNews/ in your project or plugin.

displaySearchform.cfm

<cfsetting enablecfoutputonly="true" />
<!---

Copyright 2010:

Author: Marco van den Oever
Company: MVDO-WSO
Website: http://www.webserviceonline.biz
Email: marco@webserviceonline.biz

License: 

This software is licensed under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.
For a copy of the GNU General Public License check the license folder or see <http://www.gnu.org/licenses/>.

Description:

Simple Searchform for dmNews.

Created: 30/05/10

Tested on CF9, FC6.0

--->

<cfimport taglib="/farcry/core/tags/formtools/" prefix="ft" />
<cfimport taglib="/farcry/core/tags/webskin/" prefix="skin" />
<cfoutput>
  <!-- Start of Search Form Results -->
  <!--- perform action when someone searches --->
  <ft:processform action="search">
    <ft:processFormObjects typename="searchform">
      <!--- get search results --->
      <cfset obj = createObject('component','farcry.plugins.cms.packages.types.dmNews') />
      <cfset props.whereclause = "objectid=objectid AND title LIKE '%#stproperties.searchfield#%' OR Body LIKE '%#stproperties.searchfield#%' OR Teaser LIKE '%#stproperties.searchfield#%'">
      <cfset results = obj.getMultipleByQuery(argumentCollection=props) />
      <cfset searchquery = stproperties.searchfield />
    </ft:processformobjects>
  </ft:processform>
  <!-- End of Search Form Results -->
  <!-- Start of Search Form -->
  <div id="searchform">
    <h2>Search</h2>
    <ft:form css="style.css">
      <ft:object typename="searchform" lFields="searchfield" />
      <ft:farcryButtonPanel>
        <ft:button value="search" />
        <cfif not isdefined('results')>
          No Results
        </cfif>
        <cfif isdefined('results.recordcount')>
          <cfif results.recordcount gt 1>
            #results.recordcount# Results:<br />
            <cfelseif results.recordcount eq 1>
            #results.recordcount# Results:<br />
            <cfelse>
            No Results
          </cfif>
          <br />
          <cfloop query="results">
            <skin:buildLink type="dmNews" objectid="#results.objectid#">#results.title#</skin:buildLink>
            <br />
          </cfloop>
        </cfif>
      </ft:farcryButtonPanel>
    </ft:form>
  </div>
  <!-- End of Search Form -->
</cfoutput>
<cfsetting enablecfoutputonly="false" />

The CSS code

The CSS code is placed in the CSS file of your project or plugin. Note that i used style.css as style name, you might need to change that to your needs. This CSS is just some code i used to change the form layout to my needs, it might be a place to start for you.

CSS code

#searchform {
	margin-bottom: 1px;
	padding: 5px 5px 15px;
	width: 118px;
	border-color: #9e9ec3;
	border-width: 1px 1px 1px 0px;
	border-style: solid;
	overflow: hidden;
	font-weight: bold;
}

#searchform h2 {
	padding-bottom: 10px;
	font-size: 10px;
}

#searchform input {
	padding-left: 0px;
	width: 115px;
	height: 16px;
	border: #bfbfe6 1px solid;
	float: left;
	clear: left;
}

#searchform input.button {
	margin-top: 3px;
	margin-left: 95px;
	width: 22px;
	height: 13px;
	border: none;
}

#searchform #link_cancel {
	margin-top: 5px;
}

#searchform .farcryButtonPanel {
	margin-bottom: -15px;
}

#searchform .farcryButtonPanel button {
	width: 25px;
	font: bold 11px/16px arial, helvetica, sans-serif;
	padding: -10px;
	border: 1px solid #7575A9;
	background-color: #9E9EC3;
	cursor: pointer;
	color: #fff;
	margin-left: 89px;
	margin-bottom: -10px;
}

#searchform .farcryButtonPanel button:hover {
	background: #7575A9;
	color: #E1E1E1;
}

#searchform .farcryButtonPanel a:hover {
	color: #69699c;
	cursor:pointer;
}

#searchform .f-btn-text {
	float:left;
	margin:0px;
	padding:0px;
}