Changing {print} tag to user friendly

Talk about writing modules and plugins for CMS Made Simple, or about specific core functionality. This board is for PHP programmers that are contributing to CMSMS not for site developers
Post Reply
roman
Forum Members
Forum Members
Posts: 77
Joined: Thu May 12, 2005 9:38 am
Location: slovakia

Changing {print} tag to user friendly

Post by roman »

first change plugins/function.print.php to this code:

Code: Select all

<?php
#CMS - CMS Made Simple
#(c)2004 by Ted Kulp (wishy@users.sf.net)
#This project's homepage is: http://cmsmadesimple.sf.net
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

function smarty_cms_function_print($params, &$smarty)
{
	global $gCms;

	$text = 'Print This Page';

	if (!empty($params['text']))
	{
		$text = $params['text'];
	}

  $js = '';
	if (!empty($params['script']) and $params['script'])
	{
		$js = '&js=1';
	}

	$target = '';
	if (!empty($params['popup']) and $params['popup'])
	{
		$target = ' target="_blank"';
		$goback = '&goback=0';
	}else{
	  $goback = '';
	  if (!empty($params['goback']) and $params['goback'])
	  {
		  $goback = '&goback=1';
	  }
  }
  
	//will this work if using htaccess? (Yes! -Wishy)
	if (isset($params["showbutton"]))
	{
		return '<a href="'.$gCms->config['root_url'].'/index.php?page='.$gCms->variables['content_id'].'&print=true' . $goback . $js . '"'. $target . '><img border="0" src="'.$gCms->config['root_url'].'/images/cms/printbutton.gif" alt="'.$text.'"/></a>';
	}
	else
	{
		return '<a href="'.$gCms->config['root_url'].'/index.php?page='.$gCms->variables['content_id'].'&print=true' . $goback . $js . '"'. $target . '>'.$text.'</a>';
	}
}

function smarty_cms_help_function_print() {
	?>
	<h3>What does this do?</h3>
	<p>Creates a link to only the content of the page.</p>
	<h3>How do I use it?</h3>
	<p>Just insert the tag into your template/page like: <code>{print}</code><br></p>
        <h3>What parameters does it take?</h3>
        <ul>
                <li><em>(optional)</em>goback - Set to "false" and in print page you don't will by see button "Go Back".</li>
                <li><em>(optional)</em>popup - Set to "true" and page for printing will by opened in new window.</li>
                <li><em>(optional)</em>script - Set to "true" and in print page will by used java script for run print of page.</li>
                <li><em>(optional)</em>showbutton - Set to "true" and will show a printer graphic instead of a text link.</li>
        </ul>
	<?php
}

function smarty_cms_about_function_print() {
	?>
	<p>Author: Brett Batie<brett-cms@provisiontech.net></p>
	<p>Version: 1.0</p>
	<p>
	Change History:<br/>
	1.1 - Modified to customize print page (roman)
	</p>
	<?php
}

?>
and change lib/config.functions.php on lines:
after line 376:

Code: Select all

					#Time to fill our template content
					#If it's in print mode, then just create a simple stupid template, or template without button :)
					if (isset($_GET["print"]))
				{
					if (isset($_GET["js"]) and $_GET["js"] == 1)
          $script = '<__script__ language="JavaScript">window.print();</__script>';
          if (isset($_GET["goback"]) and $_GET["goback"] == 0){
              $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;">{content}<__body></__html>';
            }else{
              $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;"><form action="index.php?page='.$tpl_name.'" method="post"><input type="submit" value="Go Back"></form>{content}'.$script.'<__body></__html>';
          }
				}
					else
					{
						$tpl_source = $templateobj->content;
					}
and after (new lines are changing numbers) line 697:

Code: Select all

				#Time to fill our template content
				#If it's in print mode, then just create a simple stupid template, or template without button :)
				if (isset($_GET["print"]))
				{
					if (isset($_GET["js"]) and $_GET["js"] == 1)
          $script = '<__script__ language="JavaScript">window.print();</__script>';
          if (isset($_GET["goback"]) and $_GET["goback"] == 0){
              $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;">{content}<__body></__html>';
            }else{
              $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;"><form action="index.php?page='.$tpl_name.'" method="post"><input type="submit" value="Go Back"></form>{content}'.$script.'<__body></__html>';
          }
				}
				else
				{
					$tpl_source = $templateobj->content;
				}
(before changes was here in both places only this code:

Code: Select all

					#Time to fill our template content
					#If it's in print mode, then just create a simple stupid template
					if (isset($_GET["print"]))
					{
						$tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;"><form action="index.php?page='.$tpl_name.'" method="post"><input type="submit" value="Go Back"></form>{content}<__body></__html>';
					}
					else
					{
						$tpl_source = $templateobj->content;
					}
roman
Forum Members
Forum Members
Posts: 77
Joined: Thu May 12, 2005 9:38 am
Location: slovakia

Re: Changing {print} tag to user friendly

Post by roman »

I was forgoten to write any example here and error with javascript. Here is right code fo lib/config.functions.php file.

Page with tag print, with parameters:
{print showbutton="true" goback="false" popup="true" script="true" text="some text"}
are here: http://www.ubg.sk/cms/index.php?page=O-firme


goback="false" - zou don't will be see Go back button on print page
popup="true" - open print page in new popup window
script="true" - use javascript to open dialog box for printing

BUG:
after line 376 in lib/config.functions.php

Code: Select all

#Time to fill our template content
#If it's in print mode, then just create a simple stupid template, or template without button :)
if (isset($_GET["print"]))
{
  $script = '';
  if (isset($_GET["js"]) and $_GET["js"] == "1")
    $script = '<__script__ language="JavaScript">window.print();</__script>';
  if (isset($_GET["goback"]) and $_GET["goback"] == 0){
    $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;">{content}'.$script.'<__body></__html>';
  }else{
    $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;"><form action="index.php?page='.$tpl_name.'" method="post"><input type="submit" value="Go Back"></form>{content}'.$script.'<__body></__html>';
  }
}
else
{
$tpl_source = $templateobj->content;
}
and after line 680 in lib/config.functions.php

Code: Select all

#Time to fill our template content
#If it's in print mode, then just create a simple stupid template, or template without button :)
if (isset($_GET["print"]))
{
  $script = '';
  if (isset($_GET["js"]) and $_GET["js"] == "1")
    $script = '<__script__ language="JavaScript">window.print();</__script>';
  if (isset($_GET["goback"]) and $_GET["goback"] == 0){
    $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;">{content}'.$script.'<__body></__html>';
  }else{
    $tpl_source = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".'<__html><head><title>{title}</title><meta name="robots" content="noindex"></meta>{stylesheet}{literal}<style type="text/css" media="print">#back {display: none;}</style>{/literal}</head></__body style="background-color: white; color: black; background-image: none;"><form action="index.php?page='.$tpl_name.'" method="post"><input type="submit" value="Go Back"></form>{content}'.$script.'<__body></__html>';
  }
}
else
{
$tpl_source = $templateobj->content;
}
URAN

Re: Changing {print} tag to user friendly

Post by URAN »

What version of CMSMS it for ?

Actually, my "print page" function is not works ... no blank page, etc.
roman
Forum Members
Forum Members
Posts: 77
Joined: Thu May 12, 2005 9:38 am
Location: slovakia

Re: Changing {print} tag to user friendly

Post by roman »

URAN wrote: What version of CMSMS it for ?

Actually, my "print page" function is not works ... no blank page, etc.
I think, yet this feature is in core - running in default instalation
Ted
Power Poster
Power Poster
Posts: 3329
Joined: Fri Jun 11, 2004 6:58 pm
Location: Fairless Hills, Pa USA

Re: Changing {print} tag to user friendly

Post by Ted »

Yeah, it was in version 0.12.
Post Reply

Return to “Developers Discussion”