| 
<?phpnamespace Jackbooted\Forms;
 
 use \Jackbooted\Html\Tag;
 /**
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved.
 *
 * Written by Brett Dutton of Jackbooted Software
 * brett at brettdutton dot com
 *
 * This software is written and distributed under the GNU General Public
 * License which means that its source code is freely-distributed and
 * available to the general public.
 */
 
 abstract class Navigator extends \Jackbooted\Util\JB {
 // This needs to be public because it is set directly in the sub classes
 // Quercus will create a new object if it is not public
 public $respVars;
 
 protected $attribs;
 protected $formVars;
 protected $navVar;
 
 /**
 * @param  $key
 * @param  $value
 * @return Navigator
 */
 public function set ( $key, $value ) {
 $this->formVars[$key] = $value;
 return $this;
 }
 
 /**
 * @param  $key
 * @return Response
 */
 public function get ( $key ) {
 return $this->formVars[$key];
 }
 
 /**
 * @return
 */
 public function getResponse () {
 return $this->respVars;
 }
 
 public function copyVarsFromRequest ( $v ) {
 $this->respVars->copyVarsFromRequest ( $v );
 return $this;
 }
 
 /**
 * @param  $startingRow
 * @return string
 */
 protected function toUrl ( ) {
 $this->respVars->set ( $this->navVar, $this->formVars );
 return '?' . $this->respVars->toUrl ();
 }
 
 protected function toHidden ( $exemptVars ) {
 $hiddenVars = $this->respVars->del ( $this->navVar )->toHidden ( false );
 
 foreach ( $this->formVars as $key => $val ) {
 if ( ! in_array ( $key, $exemptVars ) ) {
 $hiddenVars .= Tag::hidden ( $this->toFormName ( $key ), $val );
 }
 }
 
 return $hiddenVars;
 }
 
 protected function toFormName ( $key ) {
 return $this->navVar . '[' . $key . ']';
 }
 }
 
 |