70
|
|
|
|
|
|
|
The C option tells PhotoGallery to use 'My Photos' as the title </td>
</tr>
<tr>
<td class="h" >
<a name="71">71</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> rather than the default value. See below for more information </td>
</tr>
<tr>
<td class="h" >
<a name="72">72</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> about C<title> and other options. </td>
</tr>
<tr>
<td class="h" >
<a name="73">73</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="74">74</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 photos_dir (required) </td>
</tr>
<tr>
<td class="h" >
<a name="75">75</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="76">76</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This parameter is used to specify where all of your photos are </td>
</tr>
<tr>
<td class="h" >
<a name="77">77</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> located. </td>
</tr>
<tr>
<td class="h" >
<a name="78">78</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="79">79</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Previous limitations of this directory have been lifted. </td>
</tr>
<tr>
<td class="h" >
<a name="80">80</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="81">81</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Your photos directory can have any number of images and sub-directories </td>
</tr>
<tr>
<td class="h" >
<a name="82">82</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> of images. This is applied recursively so a gallery can have any number </td>
</tr>
<tr>
<td class="h" >
<a name="83">83</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> of sub-galleries. </td>
</tr>
<tr>
<td class="h" >
<a name="84">84</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="85">85</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 script_name </td>
</tr>
<tr>
<td class="h" >
<a name="86">86</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="87">87</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This parameter uses C<$0> by default, you can change it (or set it to the </td>
</tr>
<tr>
<td class="h" >
<a name="88">88</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> empty string) if you neeed to. It is needed for creating self referencial </td>
</tr>
<tr>
<td class="h" >
<a name="89">89</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> links. </td>
</tr>
<tr>
<td class="h" >
<a name="90">90</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="91">91</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 title </td>
</tr>
<tr>
<td class="h" >
<a name="92">92</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="93">93</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> By default every page will start with the title "My Photo Gallery". </td>
</tr>
<tr>
<td class="h" >
<a name="94">94</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> You can specify your own using the title parameter. </td>
</tr>
<tr>
<td class="h" >
<a name="95">95</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="96">96</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 thumb_size </td>
</tr>
<tr>
<td class="h" >
<a name="97">97</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="98">98</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> By default PhotoGallery displays thumbnail images that are 100 x 100 </td>
</tr>
<tr>
<td class="h" >
<a name="99">99</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> on the index page. You can change this by specifying a number </td>
</tr>
<tr>
<td class="h" >
<a name="100">100</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> (in pixels) for this option. </td>
</tr>
<tr>
<td class="h" >
<a name="101">101</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="102">102</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 preview_thumbs </td>
</tr>
<tr>
<td class="h" >
<a name="103">103</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="104">104</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Before viewing the entire contents of a gallery, you are shown a few </td>
</tr>
<tr>
<td class="h" >
<a name="105">105</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> preview image. The default number of thumbnails is C<4>. You </td>
</tr>
<tr>
<td class="h" >
<a name="106">106</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> can change it by specifying your own value in the instance script. </td>
</tr>
<tr>
<td class="h" >
<a name="107">107</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="108">108</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 graphics_lib </td>
</tr>
<tr>
<td class="h" >
<a name="109">109</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="110">110</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> You can specifify which graphics library you wish to use to size your </td>
</tr>
<tr>
<td class="h" >
<a name="111">111</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> thumbnails. Included in this package are C<Magick> (Image::Magick) and </td>
</tr>
<tr>
<td class="h" >
<a name="112">112</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> the default: C<GD>. You can also create your own if you wish. </td>
</tr>
<tr>
<td class="h" >
<a name="113">113</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="114">114</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 index_template </td>
</tr>
<tr>
<td class="h" >
<a name="115">115</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="116">116</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This application uses L<HTML::Template> to generate its HTML pages. If </td>
</tr>
<tr>
<td class="h" >
<a name="117">117</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> you would like to customize the HTML you can copy the default form </td>
</tr>
<tr>
<td class="h" >
<a name="118">118</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> template and edit it to suite your needs. The default form template </td>
</tr>
<tr>
<td class="h" >
<a name="119">119</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> is called 'photos_index.tmpl' and you can get it from the distribution </td>
</tr>
<tr>
<td class="h" >
<a name="120">120</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> or from wherever this module ended up in your C<@INC>. Pass in the </td>
</tr>
<tr>
<td class="h" >
<a name="121">121</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> path to your custom template as the value of this parameter. </td>
</tr>
<tr>
<td class="h" >
<a name="122">122</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="123">123</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> See L<HTML::Template> for more information about the template syntax. </td>
</tr>
<tr>
<td class="h" >
<a name="124">124</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="125">125</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 single_template </td>
</tr>
<tr>
<td class="h" >
<a name="126">126</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="127">127</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> The default template for an individual photo is called </td>
</tr>
<tr>
<td class="h" >
<a name="128">128</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> 'photos_single.tmpl' and you can get it from the distribution or from </td>
</tr>
<tr>
<td class="h" >
<a name="129">129</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> wherever this module ended up in your C<@INC>. Pass in the path to </td>
</tr>
<tr>
<td class="h" >
<a name="130">130</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> your custom template as the value of this parameter. </td>
</tr>
<tr>
<td class="h" >
<a name="131">131</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="132">132</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> See L<HTML::Template> for more information about the template syntax. </td>
</tr>
<tr>
<td class="h" >
<a name="133">133</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="134">134</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 max_width </td>
</tr>
<tr>
<td class="h" >
<a name="135">135</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="136">136</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Setting this value will force the browser to scale images down to this </td>
</tr>
<tr>
<td class="h" >
<a name="137">137</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> particular width and proportioned height. This is done by setting the width </td>
</tr>
<tr>
<td class="h" >
<a name="138">138</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> and height attributes on the image tag, thus saving the image will retain the </td>
</tr>
<tr>
<td class="h" >
<a name="139">139</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> full resolution. </td>
</tr>
<tr>
<td class="h" >
<a name="140">140</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="141">141</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 max_height </td>
</tr>
<tr>
<td class="h" >
<a name="142">142</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="143">143</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Setting this value will force the browser to scale images down to this </td>
</tr>
<tr>
<td class="h" >
<a name="144">144</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> particular height and proportioned width. This is done by setting the width </td>
</tr>
<tr>
<td class="h" >
<a name="145">145</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> and height attributes on the image tag, thus saving the image will retain the </td>
</tr>
<tr>
<td class="h" >
<a name="146">146</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> full resolution. </td>
</tr>
<tr>
<td class="h" >
<a name="147">147</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="148">148</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 cache_root </td>
</tr>
<tr>
<td class="h" >
<a name="149">149</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="150">150</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Specifies where the file cache data will be stored. Defaults to FileCache </td>
</tr>
<tr>
<td class="h" >
<a name="151">151</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> under the OS-specific temporary filesdirectory (e.g. /tmp/FileCache). You </td>
</tr>
<tr>
<td class="h" >
<a name="152">152</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> may want to move this to make the cache persist. Under selinux, however, </td>
</tr>
<tr>
<td class="h" >
<a name="153">153</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> be careful to put it in a webserver-writable directory. </td>
</tr>
<tr>
<td class="h" >
<a name="154">154</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="155">155</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 cache_namespace </td>
</tr>
<tr>
<td class="h" >
<a name="156">156</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="157">157</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Specifies the namespace for this gallery's cache data. Defaults to the </td>
</tr>
<tr>
<td class="h" >
<a name="158">158</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> gallery title - or 'default'. Changing this will orphan the cache data. </td>
</tr>
<tr>
<td class="h" >
<a name="159">159</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="160">160</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 cache_dirumask </td>
</tr>
<tr>
<td class="h" >
<a name="161">161</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="162">162</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Specifies the umask value to use when cache directories are created. Defaults </td>
</tr>
<tr>
<td class="h" >
<a name="163">163</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> to 0007 to avoid cache poisioning attacks. </td>
</tr>
<tr>
<td class="h" >
<a name="164">164</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="165">165</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 cache_datumask </td>
</tr>
<tr>
<td class="h" >
<a name="166">166</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="167">167</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Specifies the umask value to use when cache data is written. Defaults to 006 </td>
</tr>
<tr>
<td class="h" >
<a name="168">168</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> to avoid cache poisioning attacks. Note that this becomes the umask for all </td>
</tr>
<tr>
<td class="h" >
<a name="169">169</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> files written by this script. (See Cache::FileCache documentation for why.) </td>
</tr>
<tr>
<td class="h" >
<a name="170">170</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="171">171</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 CAPTIONS </td>
</tr>
<tr>
<td class="h" >
<a name="172">172</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="173">173</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> You can include captions for your photos by creating a tab-separated </td>
</tr>
<tr>
<td class="h" >
<a name="174">174</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> database named C<captions.txt> in your C<photos_dir>. The filename </td>
</tr>
<tr>
<td class="h" >
<a name="175">175</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> should be specified relative of your C<photos_dir>. </td>
</tr>
<tr>
<td class="h" >
<a name="176">176</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="177">177</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> 1.jpg This is a caption. </td>
</tr>
<tr>
<td class="h" >
<a name="178">178</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Test Gallery/1.jpg This is another caption. </td>
</tr>
<tr>
<td class="h" >
<a name="179">179</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="180">180</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 METHODS </td>
</tr>
<tr>
<td class="h" >
<a name="181">181</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="182">182</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="183">183</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="184">184</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#184-1">
1
</a>
</td>
<td >
</td>
<td >
45816
</td>
<td class="s"> use base qw( CGI::Application ); </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
3
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
1289
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="185">185</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="186">186</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#186-1">
1
</a>
</td>
<td >
</td>
<td >
40357
</td>
<td class="s"> use strict; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
6
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
45
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="187">187</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#187-1">
1
</a>
</td>
<td >
</td>
<td >
6
</td>
<td class="s"> use warnings; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
8
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
193
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="188">188</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="189">189</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#189-1">
1
</a>
</td>
<td >
</td>
<td >
6
</td>
<td class="s"> use File::Basename; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
2
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
211
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="190">190</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#190-1">
1
</a>
</td>
<td >
</td>
<td >
1940
</td>
<td class="s"> use Cache::FileCache; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
144755
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
52
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="191">191</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#191-1">
1
</a>
</td>
<td >
</td>
<td >
965
</td>
<td class="s"> use MIME::Types; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
6119
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
44
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="192">192</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#192-1">
1
</a>
</td>
<td >
</td>
<td >
1152
</td>
<td class="s"> use File::Find::Rule; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
14728
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
11
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="193">193</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#193-1">
1
</a>
</td>
<td >
</td>
<td >
1084
</td>
<td class="s"> use File::ShareDir; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
21737
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
94
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="194">194</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#194-1">
1
</a>
</td>
<td >
</td>
<td >
1176
</td>
<td class="s"> use HTTP::Date (); </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
216664
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4601
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="195">195</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="196">196</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> our $VERSION = '0.16'; </td>
</tr>
<tr>
<td class="h" >
<a name="197">197</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="198">198</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 setup( ) </td>
</tr>
<tr>
<td class="h" >
<a name="199">199</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="200">200</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This method sets the default options and makes sure all required </td>
</tr>
<tr>
<td class="h" >
<a name="201">201</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> parameteres are set. </td>
</tr>
<tr>
<td class="h" >
<a name="202">202</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="203">203</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="204">204</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="205">205</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub setup { </td>
</tr>
<tr>
<td class="h" >
<a name="206">206</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#206-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#206-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="207">207</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="208">208</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->mode_param( 'mode' ); </td>
</tr>
<tr>
<td class="h" >
<a name="209">209</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->run_modes( </td>
</tr>
<tr>
<td class="h" >
<a name="210">210</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> index => 'gallery_index', </td>
</tr>
<tr>
<td class="h" >
<a name="211">211</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> thumb => 'thumbnail', </td>
</tr>
<tr>
<td class="h" >
<a name="212">212</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> full => 'show_image', </td>
</tr>
<tr>
<td class="h" >
<a name="213">213</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> view => 'single_index', </td>
</tr>
<tr>
<td class="h" >
<a name="214">214</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> AUTOLOAD => 'gallery_index' </td>
</tr>
<tr>
<td class="h" >
<a name="215">215</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="216">216</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->start_mode( 'index' ); </td>
</tr>
<tr>
<td class="h" >
<a name="217">217</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->error_mode( 'handle_error' ); </td>
</tr>
<tr>
<td class="h" >
<a name="218">218</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="219">219</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # setup defaults </td>
</tr>
<tr>
<td class="h" >
<a name="220">220</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="221">221</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#221-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( thumb_size => 100 ) </td>
</tr>
<tr>
<td class="h" >
<a name="222">222</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless defined $self->param( 'thumb_size' ); </td>
</tr>
<tr>
<td class="h" >
<a name="223">223</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#223-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( preview_thumbs => 4 ) </td>
</tr>
<tr>
<td class="h" >
<a name="224">224</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless defined $self->param( 'preview_thumbs' ); </td>
</tr>
<tr>
<td class="h" >
<a name="225">225</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#225-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( title => 'My Photo Gallery' ) </td>
</tr>
<tr>
<td class="h" >
<a name="226">226</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless defined $self->param( 'title' ); </td>
</tr>
<tr>
<td class="h" >
<a name="227">227</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#227-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( graphics_lib => 'GD' ) </td>
</tr>
<tr>
<td class="h" >
<a name="228">228</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless defined $self->param( 'graphics_lib' ); </td>
</tr>
<tr>
<td class="h" >
<a name="229">229</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#229-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( script_name => $0 ) </td>
</tr>
<tr>
<td class="h" >
<a name="230">230</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless defined $self->param( 'script_name' ); </td>
</tr>
<tr>
<td class="h" >
<a name="231">231</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="232">232</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # check required params </td>
</tr>
<tr>
<td class="h" >
<a name="233">233</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="234">234</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#234-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die </td>
</tr>
<tr>
<td class="h" >
<a name="235">235</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> "PARAMS => { photos_dir => '/path/to/photos' } not set in your instance script!" </td>
</tr>
<tr>
<td class="h" >
<a name="236">236</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless defined $self->param( 'photos_dir' ); </td>
</tr>
<tr>
<td class="h" >
<a name="237">237</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="238">238</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # fixes $0 for win32 </td>
</tr>
<tr>
<td class="h" >
<a name="239">239</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="240">240</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#240-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( script_name => basename( $self->param( 'script_name' ) ) ) </td>
</tr>
<tr>
<td class="h" >
<a name="241">241</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if $self->param( 'script_name' ); </td>
</tr>
<tr>
<td class="h" >
<a name="242">242</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="243">243</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="244">244</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 get_photos( $dir ) </td>
</tr>
<tr>
<td class="h" >
<a name="245">245</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="246">246</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This method finds all of the C<image/*> files in the specified </td>
</tr>
<tr>
<td class="h" >
<a name="247">247</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> directory. </td>
</tr>
<tr>
<td class="h" >
<a name="248">248</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="249">249</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="250">250</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="251">251</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub get_photos { </td>
</tr>
<tr>
<td class="h" >
<a name="252">252</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#252-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#252-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="253">253</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $dir = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="254">254</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $types = $self->mime_types; </td>
</tr>
<tr>
<td class="h" >
<a name="255">255</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="256">256</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my @photos = sort File::Find::Rule->maxdepth( 1 )->file->exec( </td>
</tr>
<tr>
<td class="h" >
<a name="257">257</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub { </td>
</tr>
<tr>
<td class="h" >
<a name="258">258</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#258-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $name = pop; </td>
</tr>
<tr>
<td class="h" >
<a name="259">259</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#259-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return 0 if basename( $name ) eq 'favicon.ico'; </td>
</tr>
<tr>
<td class="h" >
<a name="260">260</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $mime = $types->mimeTypeOf( $name ); </td>
</tr>
<tr>
<td class="h" >
<a name="261">261</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#261-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#261-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return 1 if $mime && $mime->mediaType eq 'image'; </td>
</tr>
<tr>
<td class="h" >
<a name="262">262</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="263">263</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> )->in( $dir ); </td>
</tr>
<tr>
<td class="h" >
<a name="264">264</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="265">265</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return @photos; </td>
</tr>
<tr>
<td class="h" >
<a name="266">266</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="267">267</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="268">268</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 mime_types( ) </td>
</tr>
<tr>
<td class="h" >
<a name="269">269</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="270">270</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This method will create (if needed) and return a new L<MIME::Types> object. </td>
</tr>
<tr>
<td class="h" >
<a name="271">271</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="272">272</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="273">273</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="274">274</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub mime_types { </td>
</tr>
<tr>
<td class="h" >
<a name="275">275</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#275-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#275-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="276">276</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="277">277</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#277-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless ( $self->{ _mime_types } ) { </td>
</tr>
<tr>
<td class="h" >
<a name="278">278</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $types = MIME::Types->new( only_complete => 1 ); </td>
</tr>
<tr>
<td class="h" >
<a name="279">279</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $types->create_type_index; </td>
</tr>
<tr>
<td class="h" >
<a name="280">280</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{ _mime_types } = $types; </td>
</tr>
<tr>
<td class="h" >
<a name="281">281</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="282">282</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="283">283</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $self->{ _mime_types }; </td>
</tr>
<tr>
<td class="h" >
<a name="284">284</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="285">285</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="286">286</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 gfx_lib( ) </td>
</tr>
<tr>
<td class="h" >
<a name="287">287</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="288">288</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This method will create (if needed) and return the graphics adaptor specified by </td>
</tr>
<tr>
<td class="h" >
<a name="289">289</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> the user (default is GD). </td>
</tr>
<tr>
<td class="h" >
<a name="290">290</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="291">291</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="292">292</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="293">293</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub gfx_lib { </td>
</tr>
<tr>
<td class="h" >
<a name="294">294</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#294-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#294-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="295">295</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="296">296</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#296-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless ( $self->{ _gfx_lib } ) { </td>
</tr>
<tr>
<td class="h" >
<a name="297">297</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lib = 'CGI::Application::PhotoGallery::' </td>
</tr>
<tr>
<td class="h" >
<a name="298">298</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> . $self->param( 'graphics_lib' ); </td>
</tr>
<tr>
<td class="h" >
<a name="299">299</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> eval "require $lib"; </td>
</tr>
<tr>
<td class="h" >
<a name="300">300</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{ _gfx_lib } = $lib->new; </td>
</tr>
<tr>
<td class="h" >
<a name="301">301</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="302">302</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="303">303</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $self->{ _gfx_lib }; </td>
</tr>
<tr>
<td class="h" >
<a name="304">304</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="305">305</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="306">306</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 cache( ) </td>
</tr>
<tr>
<td class="h" >
<a name="307">307</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="308">308</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This method will create (if needed) and return a L<Cache::FileCache> object, </td>
</tr>
<tr>
<td class="h" >
<a name="309">309</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="310">310</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="311">311</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="312">312</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub cache { </td>
</tr>
<tr>
<td class="h" >
<a name="313">313</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#313-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#313-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="314">314</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="315">315</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#315-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless ( $self->{ _cache } ) { </td>
</tr>
<tr>
<td class="h" >
<a name="316">316</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my %options = ( namespace => $self->param( 'title' ), </td>
</tr>
<tr>
<td class="h" >
<a name="317">317</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> directory_umask => 0007 ); </td>
</tr>
<tr>
<td class="h" >
<a name="318">318</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="319">319</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#319-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $options{ 'cache_root' } = $self->param( 'cache_root' ) </td>
</tr>
<tr>
<td class="h" >
<a name="320">320</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if defined $self->param( 'cache_root' ); </td>
</tr>
<tr>
<td class="h" >
<a name="321">321</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#321-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $options{ 'namespace' } = $self->param( 'cache_namespace' ) </td>
</tr>
<tr>
<td class="h" >
<a name="322">322</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if defined $self->param( 'cache_namespace' ); </td>
</tr>
<tr>
<td class="h" >
<a name="323">323</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#323-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $options{ 'directory_umask' } = $self->param( 'cache_dirumask' ) </td>
</tr>
<tr>
<td class="h" >
<a name="324">324</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if defined $self->param( 'cache_dirumask' ); </td>
</tr>
<tr>
<td class="h" >
<a name="325">325</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#325-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( defined $self->param( 'cache_datumask' ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="326">326</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> umask $self->param( 'cache_datumask' ); </td>
</tr>
<tr>
<td class="h" >
<a name="327">327</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="328">328</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="329">329</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> umask 006; </td>
</tr>
<tr>
<td class="h" >
<a name="330">330</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="331">331</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{ _cache } = Cache::FileCache->new( \%options ); </td>
</tr>
<tr>
<td class="h" >
<a name="332">332</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="333">333</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="334">334</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $self->{ _cache }; </td>
</tr>
<tr>
<td class="h" >
<a name="335">335</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="336">336</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="337">337</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="338">338</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 RUN MODES </td>
</tr>
<tr>
<td class="h" >
<a name="339">339</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="340">340</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 gallery_index( ) </td>
</tr>
<tr>
<td class="h" >
<a name="341">341</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="342">342</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Reads in the contents of your C<photos_dir> and generates an index of photos. </td>
</tr>
<tr>
<td class="h" >
<a name="343">343</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="344">344</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="345">345</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="346">346</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub gallery_index { </td>
</tr>
<tr>
<td class="h" >
<a name="347">347</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#347-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#347-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="348">348</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $types = $self->mime_types; </td>
</tr>
<tr>
<td class="h" >
<a name="349">349</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $query = $self->query; </td>
</tr>
<tr>
<td class="h" >
<a name="350">350</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="351">351</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $limit = $self->param( 'preview_thumbs' ); </td>
</tr>
<tr>
<td class="h" >
<a name="352">352</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $photo_dir = $self->param( 'photos_dir' ); </td>
</tr>
<tr>
<td class="h" >
<a name="353">353</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#353-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $user_dir = $self->query->param( 'dir' ) || ''; </td>
</tr>
<tr>
<td class="h" >
<a name="354">354</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="355">355</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $user_dir =~ s/\.\.//g; </td>
</tr>
<tr>
<td class="h" >
<a name="356">356</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $user_dir =~ s/\/$//; </td>
</tr>
<tr>
<td class="h" >
<a name="357">357</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="358">358</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $parent = $user_dir; </td>
</tr>
<tr>
<td class="h" >
<a name="359">359</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $parent =~ s{^(.*?)/([^/]+?)/?$}{$1/}; </td>
</tr>
<tr>
<td class="h" >
<a name="360">360</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="361">361</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $directory = $photo_dir . $user_dir; </td>
</tr>
<tr>
<td class="h" >
<a name="362">362</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#362-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die "ERROR: File not found." unless -e $directory; </td>
</tr>
<tr>
<td class="h" >
<a name="363">363</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#363-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die "ERROR: '$directory' is not a directory" unless -d $directory; </td>
</tr>
<tr>
<td class="h" >
<a name="364">364</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="365">365</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $output; </td>
</tr>
<tr>
<td class="h" >
<a name="366">366</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cache = $self->cache; </td>
</tr>
<tr>
<td class="h" >
<a name="367">367</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $key = $directory; </td>
</tr>
<tr>
<td class="h" >
<a name="368">368</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lastmod = ( stat( $directory ) )[ 9 ]; </td>
</tr>
<tr>
<td class="h" >
<a name="369">369</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cstamp = "$directory/.cachetime"; </td>
</tr>
<tr>
<td class="h" >
<a name="370">370</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="371">371</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#371-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $output = $cache->get( $key ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="372">372</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cachetime = $cache->get( $cstamp ); </td>
</tr>
<tr>
<td class="h" >
<a name="373">373</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#373-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#373-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $cachetime && $cachetime == $lastmod ) { </td>
</tr>
<tr>
<td class="h" >
<a name="374">374</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $reqmod; </td>
</tr>
<tr>
<td class="h" >
<a name="375">375</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#375-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( my $header = $query->http( 'If-Modified-Since' ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="376">376</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $reqmod = HTTP::Date::str2time( </td>
</tr>
<tr>
<td class="h" >
<a name="377">377</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ( split( /;/, $header, 2 ) )[ 0 ] ); </td>
</tr>
<tr>
<td class="h" >
<a name="378">378</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="379">379</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#379-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#379-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $reqmod && $reqmod == $lastmod ) { </td>
</tr>
<tr>
<td class="h" >
<a name="380">380</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( { -status => '304 Not Modified' } ); </td>
</tr>
<tr>
<td class="h" >
<a name="381">381</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return; </td>
</tr>
<tr>
<td class="h" >
<a name="382">382</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="383">383</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="384">384</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="385">385</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_add( </td>
</tr>
<tr>
<td class="h" >
<a name="386">386</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { -last_modified => HTTP::Date::time2str( $lastmod ) } ); </td>
</tr>
<tr>
<td class="h" >
<a name="387">387</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $output; </td>
</tr>
<tr>
<td class="h" >
<a name="388">388</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="389">389</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="390">390</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="391">391</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my @dirs = sort File::Find::Rule->directory->mindepth( 1 )->maxdepth( 1 ) </td>
</tr>
<tr>
<td class="h" >
<a name="392">392</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ->in( $directory ); </td>
</tr>
<tr>
<td class="h" >
<a name="393">393</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="394">394</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my @galleries; </td>
</tr>
<tr>
<td class="h" >
<a name="395">395</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> for my $dir ( $directory, @dirs ) { </td>
</tr>
<tr>
<td class="h" >
<a name="396">396</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my @files = map { s/^$photo_dir//; { filename => $_ }; } </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="397">397</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->get_photos( $dir ); </td>
</tr>
<tr>
<td class="h" >
<a name="398">398</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="399">399</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # only limit the number of photos on sub-galleries </td>
</tr>
<tr>
<td class="h" >
<a name="400">400</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#400-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $dir ne $directory ) { </td>
</tr>
<tr>
<td class="h" >
<a name="401">401</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#401-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> @files = @files[ 0 .. $limit - 1 ] if @files > $limit; </td>
</tr>
<tr>
<td class="h" >
<a name="402">402</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="403">403</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="404">404</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ( my $location = $dir ) =~ s/^$photo_dir//; </td>
</tr>
<tr>
<td class="h" >
<a name="405">405</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> push @galleries, </td>
</tr>
<tr>
<td class="h" >
<a name="406">406</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { </td>
</tr>
<tr>
<td class="h" >
<a name="407">407</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> dir => $location, </td>
</tr>
<tr>
<td class="h" >
<a name="408">408</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> title => basename( $dir ), </td>
</tr>
<tr>
<td class="h" >
<a name="409">409</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> photos => \@files </td>
</tr>
<tr>
<td class="h" >
<a name="410">410</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> }; </td>
</tr>
<tr>
<td class="h" >
<a name="411">411</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="412">412</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="413">413</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $current = shift( @galleries ); </td>
</tr>
<tr>
<td class="h" >
<a name="414">414</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="415">415</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#415-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $html = $self->load_tmpl( </td>
</tr>
<tr>
<td class="h" >
<a name="416">416</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( 'index_template' ) </td>
</tr>
<tr>
<td class="h" >
<a name="417">417</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> || $self->_dist_file( 'photos_index.tmpl' ), </td>
</tr>
<tr>
<td class="h" >
<a name="418">418</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> associate => $self, </td>
</tr>
<tr>
<td class="h" >
<a name="419">419</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> global_vars => 1, </td>
</tr>
<tr>
<td class="h" >
<a name="420">420</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> loop_context_vars => 1, </td>
</tr>
<tr>
<td class="h" >
<a name="421">421</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die_on_bad_params => 0 </td>
</tr>
<tr>
<td class="h" >
<a name="422">422</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="423">423</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="424">424</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $html->param( </td>
</tr>
<tr>
<td class="h" >
<a name="425">425</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> photos => $current->{ photos }, </td>
</tr>
<tr>
<td class="h" >
<a name="426">426</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> gallery_name => </td>
</tr>
<tr>
<td class="h" >
<a name="427">427</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#427-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ( $user_dir ? $current->{ title } : $self->param( 'title' ) ), </td>
</tr>
<tr>
<td class="h" >
<a name="428">428</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> galleries => \@galleries, </td>
</tr>
<tr>
<td class="h" >
<a name="429">429</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> parent => $parent, </td>
</tr>
<tr>
<td class="h" >
<a name="430">430</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="431">431</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="432">432</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_add( </td>
</tr>
<tr>
<td class="h" >
<a name="433">433</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { -last_modified => HTTP::Date::time2str( $lastmod ) } ); </td>
</tr>
<tr>
<td class="h" >
<a name="434">434</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $output = $html->output; </td>
</tr>
<tr>
<td class="h" >
<a name="435">435</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $cache->set( $key => $output ); </td>
</tr>
<tr>
<td class="h" >
<a name="436">436</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $cache->set( $cstamp => $lastmod ); </td>
</tr>
<tr>
<td class="h" >
<a name="437">437</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="438">438</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $output; </td>
</tr>
<tr>
<td class="h" >
<a name="439">439</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="440">440</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="441">441</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 thumbnail( ) </td>
</tr>
<tr>
<td class="h" >
<a name="442">442</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="443">443</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Generates a thumbnail for the requested image using the selected graphics </td>
</tr>
<tr>
<td class="h" >
<a name="444">444</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> library. </td>
</tr>
<tr>
<td class="h" >
<a name="445">445</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="446">446</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="447">447</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="448">448</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub thumbnail { </td>
</tr>
<tr>
<td class="h" >
<a name="449">449</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#449-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#449-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="450">450</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $query = $self->query; </td>
</tr>
<tr>
<td class="h" >
<a name="451">451</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $dir = $self->param( 'photos_dir' ); </td>
</tr>
<tr>
<td class="h" >
<a name="452">452</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $photo = $query->param( 'photo' ); </td>
</tr>
<tr>
<td class="h" >
<a name="453">453</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $size = $self->param( 'thumb_size' ); </td>
</tr>
<tr>
<td class="h" >
<a name="454">454</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="455">455</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#455-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die 'ERROR: Missing photo query argument.' unless $photo; </td>
</tr>
<tr>
<td class="h" >
<a name="456">456</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="457">457</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $path = "$dir$photo"; </td>
</tr>
<tr>
<td class="h" >
<a name="458">458</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cache = $self->cache; </td>
</tr>
<tr>
<td class="h" >
<a name="459">459</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $key = "$path$size"; </td>
</tr>
<tr>
<td class="h" >
<a name="460">460</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lastmod = ( stat( $path ) )[ 9 ]; </td>
</tr>
<tr>
<td class="h" >
<a name="461">461</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="462">462</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $data; </td>
</tr>
<tr>
<td class="h" >
<a name="463">463</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#463-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $data = $cache->get( $key ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="464">464</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $reqmod; </td>
</tr>
<tr>
<td class="h" >
<a name="465">465</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#465-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( my $header = $query->http( 'If-Modified-Since' ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="466">466</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $reqmod </td>
</tr>
<tr>
<td class="h" >
<a name="467">467</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> = HTTP::Date::str2time( ( split( /;/, $header, 2 ) )[ 0 ] ); </td>
</tr>
<tr>
<td class="h" >
<a name="468">468</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="469">469</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="470">470</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#470-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#470-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $reqmod && $reqmod == $lastmod ) { </td>
</tr>
<tr>
<td class="h" >
<a name="471">471</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( { -status => '304 Not Modified' } ); </td>
</tr>
<tr>
<td class="h" >
<a name="472">472</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return; </td>
</tr>
<tr>
<td class="h" >
<a name="473">473</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="474">474</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="475">475</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $data = undef; </td>
</tr>
<tr>
<td class="h" >
<a name="476">476</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="477">477</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="478">478</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="479">479</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#479-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> unless ( $data ) { </td>
</tr>
<tr>
<td class="h" >
<a name="480">480</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $gfx = $self->gfx_lib; </td>
</tr>
<tr>
<td class="h" >
<a name="481">481</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $data = $gfx->resize( $path, $size ); </td>
</tr>
<tr>
<td class="h" >
<a name="482">482</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $cache->set( $key => $data ); </td>
</tr>
<tr>
<td class="h" >
<a name="483">483</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="484">484</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="485">485</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( </td>
</tr>
<tr>
<td class="h" >
<a name="486">486</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { -type => $self->mime_types->mimeTypeOf( $path ), </td>
</tr>
<tr>
<td class="h" >
<a name="487">487</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> -last_modified => HTTP::Date::time2str( $lastmod ) </td>
</tr>
<tr>
<td class="h" >
<a name="488">488</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="489">489</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="490">490</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="491">491</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> binmode STDOUT; </td>
</tr>
<tr>
<td class="h" >
<a name="492">492</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $data; </td>
</tr>
<tr>
<td class="h" >
<a name="493">493</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="494">494</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="495">495</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 show_image( ) </td>
</tr>
<tr>
<td class="h" >
<a name="496">496</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="497">497</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Sends the contents of the image to the browser. </td>
</tr>
<tr>
<td class="h" >
<a name="498">498</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="499">499</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="500">500</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="501">501</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub show_image { </td>
</tr>
<tr>
<td class="h" >
<a name="502">502</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#502-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#502-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="503">503</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $query = $self->query; </td>
</tr>
<tr>
<td class="h" >
<a name="504">504</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $dir = $self->param( 'photos_dir' ); </td>
</tr>
<tr>
<td class="h" >
<a name="505">505</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $photo = $query->param( 'photo' ); </td>
</tr>
<tr>
<td class="h" >
<a name="506">506</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $path = "$dir$photo"; </td>
</tr>
<tr>
<td class="h" >
<a name="507">507</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="508">508</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#508-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die 'ERROR: Missing $photo query argument.' unless $photo; </td>
</tr>
<tr>
<td class="h" >
<a name="509">509</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="510">510</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lastmod = ( stat( $path ) )[ 9 ]; </td>
</tr>
<tr>
<td class="h" >
<a name="511">511</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="512">512</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $reqmod; </td>
</tr>
<tr>
<td class="h" >
<a name="513">513</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#513-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( my $header = $query->http( 'If-Modified-Since' ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="514">514</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $reqmod = HTTP::Date::str2time( ( split( /;/, $header, 2 ) )[ 0 ] ); </td>
</tr>
<tr>
<td class="h" >
<a name="515">515</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="516">516</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="517">517</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#517-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#517-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $reqmod && $reqmod == $lastmod ) { </td>
</tr>
<tr>
<td class="h" >
<a name="518">518</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( { -status => '304 Not Modified' } ); </td>
</tr>
<tr>
<td class="h" >
<a name="519">519</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return; </td>
</tr>
<tr>
<td class="h" >
<a name="520">520</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="521">521</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="522">522</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#522-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> open( PHOTO, $path ) or die "ERROR: Cannot open $path: $!"; </td>
</tr>
<tr>
<td class="h" >
<a name="523">523</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> binmode PHOTO; </td>
</tr>
<tr>
<td class="h" >
<a name="524">524</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $data = do { local $/; <PHOTO> }; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="525">525</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> close( PHOTO ); </td>
</tr>
<tr>
<td class="h" >
<a name="526">526</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="527">527</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( </td>
</tr>
<tr>
<td class="h" >
<a name="528">528</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { -type => $self->mime_types->mimeTypeOf( $path ), </td>
</tr>
<tr>
<td class="h" >
<a name="529">529</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> -last_modified => HTTP::Date::time2str( $lastmod ) </td>
</tr>
<tr>
<td class="h" >
<a name="530">530</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="531">531</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="532">532</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="533">533</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $data; </td>
</tr>
<tr>
<td class="h" >
<a name="534">534</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="535">535</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="536">536</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 single_index( ) </td>
</tr>
<tr>
<td class="h" >
<a name="537">537</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="538">538</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Fills and sends the template for viewing an individual image. </td>
</tr>
<tr>
<td class="h" >
<a name="539">539</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="540">540</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="541">541</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="542">542</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub single_index { </td>
</tr>
<tr>
<td class="h" >
<a name="543">543</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#543-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#543-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="544">544</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $query = $self->query(); </td>
</tr>
<tr>
<td class="h" >
<a name="545">545</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $dir = $self->param( 'photos_dir' ); </td>
</tr>
<tr>
<td class="h" >
<a name="546">546</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $photo = $query->param( 'photo' ); </td>
</tr>
<tr>
<td class="h" >
<a name="547">547</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $path = "$dir$photo"; </td>
</tr>
<tr>
<td class="h" >
<a name="548">548</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="549">549</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#549-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die 'ERROR: Missing photo query argument.' unless $photo; </td>
</tr>
<tr>
<td class="h" >
<a name="550">550</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#550-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die 'ERROR: File not found' unless -e $path; </td>
</tr>
<tr>
<td class="h" >
<a name="551">551</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="552">552</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $caption_path = "$dir/captions.txt"; </td>
</tr>
<tr>
<td class="h" >
<a name="553">553</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="554">554</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $output; </td>
</tr>
<tr>
<td class="h" >
<a name="555">555</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cache = $self->cache; </td>
</tr>
<tr>
<td class="h" >
<a name="556">556</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $key = "$path.#frame"; </td>
</tr>
<tr>
<td class="h" >
<a name="557">557</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lastmod = ( stat( $path ) )[ 9 ]; </td>
</tr>
<tr>
<td class="h" >
<a name="558">558</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="559">559</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # Directory change means links may have changed </td>
</tr>
<tr>
<td class="h" >
<a name="560">560</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # Caption file change is a content change </td>
</tr>
<tr>
<td class="h" >
<a name="561">561</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lastdir = ( stat( $dir ) )[ 9 ]; </td>
</tr>
<tr>
<td class="h" >
<a name="562">562</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#562-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $lastmod = $lastdir if ( $lastdir > $lastmod ); </td>
</tr>
<tr>
<td class="h" >
<a name="563">563</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lastcap = 0; </td>
</tr>
<tr>
<td class="h" >
<a name="564">564</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#564-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $lastcap = ( stat( $caption_path ) )[ 9 ] if ( -r $caption_path ); </td>
</tr>
<tr>
<td class="h" >
<a name="565">565</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#565-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $lastmod = $lastcap if ( $lastcap > $lastmod ); </td>
</tr>
<tr>
<td class="h" >
<a name="566">566</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cstamp = "$key#cachetime"; </td>
</tr>
<tr>
<td class="h" >
<a name="567">567</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="568">568</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#568-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $output = $cache->get( $key ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="569">569</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cachetime = $cache->get( $cstamp ); </td>
</tr>
<tr>
<td class="h" >
<a name="570">570</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#570-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#570-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $cachetime && $cachetime == $lastmod ) { </td>
</tr>
<tr>
<td class="h" >
<a name="571">571</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $reqmod; </td>
</tr>
<tr>
<td class="h" >
<a name="572">572</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#572-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( my $header = $query->http( 'If-Modified-Since' ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="573">573</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $reqmod = HTTP::Date::str2time( </td>
</tr>
<tr>
<td class="h" >
<a name="574">574</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ( split( /;/, $header, 2 ) )[ 0 ] ); </td>
</tr>
<tr>
<td class="h" >
<a name="575">575</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="576">576</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#576-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#576-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $reqmod && $reqmod == $lastmod ) { </td>
</tr>
<tr>
<td class="h" >
<a name="577">577</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( { -status => '304 Not Modified' } ); </td>
</tr>
<tr>
<td class="h" >
<a name="578">578</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return; </td>
</tr>
<tr>
<td class="h" >
<a name="579">579</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="580">580</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="581">581</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="582">582</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_add( </td>
</tr>
<tr>
<td class="h" >
<a name="583">583</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { -last_modified => HTTP::Date::time2str( $lastmod ) } ); </td>
</tr>
<tr>
<td class="h" >
<a name="584">584</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $output; </td>
</tr>
<tr>
<td class="h" >
<a name="585">585</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="586">586</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="587">587</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="588">588</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $gfx = $self->gfx_lib; </td>
</tr>
<tr>
<td class="h" >
<a name="589">589</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="590">590</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my ( $width, $height ) = eval { $gfx->size( $path ); }; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="591">591</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="592">592</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#592-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die "Unable to determine size of $path; file may be corrupt.\nError string: $@" if $@; </td>
</tr>
<tr>
<td class="h" >
<a name="593">593</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="594">594</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # get data for prev/next/parent links </td>
</tr>
<tr>
<td class="h" >
<a name="595">595</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my ( undef, $search_dir ) = fileparse( $path ); </td>
</tr>
<tr>
<td class="h" >
<a name="596">596</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my ( undef, $parent ) = fileparse( $photo ); </td>
</tr>
<tr>
<td class="h" >
<a name="597">597</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my @files = $self->get_photos( $search_dir ); </td>
</tr>
<tr>
<td class="h" >
<a name="598">598</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my ( $prev, $next ); </td>
</tr>
<tr>
<td class="h" >
<a name="599">599</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="600">600</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> while ( my $f = shift @files ) { </td>
</tr>
<tr>
<td class="h" >
<a name="601">601</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $f =~ s{^$dir}{}; </td>
</tr>
<tr>
<td class="h" >
<a name="602">602</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#602-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $f ne $photo ) { </td>
</tr>
<tr>
<td class="h" >
<a name="603">603</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $prev = $f; </td>
</tr>
<tr>
<td class="h" >
<a name="604">604</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> next; </td>
</tr>
<tr>
<td class="h" >
<a name="605">605</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="606">606</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="607">607</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $next = shift @files; </td>
</tr>
<tr>
<td class="h" >
<a name="608">608</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#608-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $next =~ s{^$dir}{} if $next; </td>
</tr>
<tr>
<td class="h" >
<a name="609">609</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> last; </td>
</tr>
<tr>
<td class="h" >
<a name="610">610</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="611">611</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="612">612</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="613">613</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#613-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $html = $self->load_tmpl( </td>
</tr>
<tr>
<td class="h" >
<a name="614">614</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( 'single_template' ) </td>
</tr>
<tr>
<td class="h" >
<a name="615">615</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> || $self->_dist_file( 'photos_single.tmpl' ), </td>
</tr>
<tr>
<td class="h" >
<a name="616">616</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> associate => $self, </td>
</tr>
<tr>
<td class="h" >
<a name="617">617</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> global_vars => 1, </td>
</tr>
<tr>
<td class="h" >
<a name="618">618</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die_on_bad_params => 0 </td>
</tr>
<tr>
<td class="h" >
<a name="619">619</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="620">620</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="621">621</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#621-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( defined( my $max_width = $self->param( 'max_width' ) ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="622">622</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#622-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $width > $max_width ) { </td>
</tr>
<tr>
<td class="h" >
<a name="623">623</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $scale = $max_width / $width; </td>
</tr>
<tr>
<td class="h" >
<a name="624">624</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $width = int( $width * $scale ); </td>
</tr>
<tr>
<td class="h" >
<a name="625">625</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $height = int( $height * $scale ); </td>
</tr>
<tr>
<td class="h" >
<a name="626">626</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="627">627</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="628">628</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="629">629</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#629-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( defined( my $max_height = $self->param( 'max_height' ) ) ) { </td>
</tr>
<tr>
<td class="h" >
<a name="630">630</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#630-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $height > $max_height ) { </td>
</tr>
<tr>
<td class="h" >
<a name="631">631</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $scale = $max_height / $height; </td>
</tr>
<tr>
<td class="h" >
<a name="632">632</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $width = int( $width * $scale ); </td>
</tr>
<tr>
<td class="h" >
<a name="633">633</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $height = int( $height * $scale ); </td>
</tr>
<tr>
<td class="h" >
<a name="634">634</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="635">635</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="636">636</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="637">637</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $html->param( </td>
</tr>
<tr>
<td class="h" >
<a name="638">638</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> photo => $photo, </td>
</tr>
<tr>
<td class="h" >
<a name="639">639</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> width => $width, </td>
</tr>
<tr>
<td class="h" >
<a name="640">640</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> height => $height, </td>
</tr>
<tr>
<td class="h" >
<a name="641">641</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> next => $next, </td>
</tr>
<tr>
<td class="h" >
<a name="642">642</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> prev => $prev, </td>
</tr>
<tr>
<td class="h" >
<a name="643">643</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> parent => $parent, </td>
</tr>
<tr>
<td class="h" >
<a name="644">644</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="645">645</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="646">646</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # get caption, if available </td>
</tr>
<tr>
<td class="h" >
<a name="647">647</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#647-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( -e $caption_path ) { </td>
</tr>
<tr>
<td class="h" >
<a name="648">648</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#648-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> open( CAPTIONS, $caption_path ) </td>
</tr>
<tr>
<td class="h" >
<a name="649">649</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> or die "ERROR: Cannot open caption file $caption_path: $!"; </td>
</tr>
<tr>
<td class="h" >
<a name="650">650</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> while ( my $caption = <CAPTIONS> ) { </td>
</tr>
<tr>
<td class="h" >
<a name="651">651</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#651-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $caption =~ /^\Q$photo\E\t(.+)$/ ) { </td>
</tr>
<tr>
<td class="h" >
<a name="652">652</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $html->param( caption => $1 ); </td>
</tr>
<tr>
<td class="h" >
<a name="653">653</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> last; </td>
</tr>
<tr>
<td class="h" >
<a name="654">654</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="655">655</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="656">656</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> close( CAPTIONS ); </td>
</tr>
<tr>
<td class="h" >
<a name="657">657</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="658">658</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="659">659</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_add( </td>
</tr>
<tr>
<td class="h" >
<a name="660">660</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { -last_modified => HTTP::Date::time2str( $lastmod ) } ); </td>
</tr>
<tr>
<td class="h" >
<a name="661">661</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $output = $html->output; </td>
</tr>
<tr>
<td class="h" >
<a name="662">662</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $cache->set( $key => $output ); </td>
</tr>
<tr>
<td class="h" >
<a name="663">663</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $cache->set( $cstamp => $lastmod ); </td>
</tr>
<tr>
<td class="h" >
<a name="664">664</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="665">665</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $output; </td>
</tr>
<tr>
<td class="h" >
<a name="666">666</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="667">667</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="668">668</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub _dist_file { </td>
</tr>
<tr>
<td class="h" >
<a name="669">669</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#669-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td class="s"> my ( $self, $file ) = @_; </td>
</tr>
<tr>
<td class="h" >
<a name="670">670</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return File::ShareDir::dist_file( 'CGI-Application-PhotoGallery', $file ); </td>
</tr>
<tr>
<td class="h" >
<a name="671">671</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="672">672</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="673">673</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 handle_error( ) </td>
</tr>
<tr>
<td class="h" >
<a name="674">674</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="675">675</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Renders a template for any failed action. </td>
</tr>
<tr>
<td class="h" >
<a name="676">676</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="677">677</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="678">678</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="679">679</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub handle_error { </td>
</tr>
<tr>
<td class="h" >
<a name="680">680</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#680-1">
0
</a>
</td>
<td class="c3" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--subroutine.html#680-1">
1
</a>
</td>
<td >
</td>
<td class="s"> my ( $self, $error ) = @_; </td>
</tr>
<tr>
<td class="h" >
<a name="681">681</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="682">682</a>
</td>
<td class="c0" >
0
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--branch.html#682-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ( $error =~ m{file not found}i ) { </td>
</tr>
<tr>
<td class="h" >
<a name="683">683</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( { -status => '404 Not Found' } ); </td>
</tr>
<tr>
<td class="h" >
<a name="684">684</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $error = 'ERROR: File not found.'; </td>
</tr>
<tr>
<td class="h" >
<a name="685">685</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="686">686</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="687">687</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # log non-404 errors </td>
</tr>
<tr>
<td class="h" >
<a name="688">688</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> warn $error; </td>
</tr>
<tr>
<td class="h" >
<a name="689">689</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $error =~ s{\n}{<br/>}g; </td>
</tr>
<tr>
<td class="h" >
<a name="690">690</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->header_props( { -status => '500 Error' } ); </td>
</tr>
<tr>
<td class="h" >
<a name="691">691</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="692">692</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="693">693</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-CGI-Application-PhotoGallery-pm--condition.html#693-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $html = $self->load_tmpl( </td>
</tr>
<tr>
<td class="h" >
<a name="694">694</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->param( 'error_template' ) || $self->_dist_file( 'error.tmpl' ), </td>
</tr>
<tr>
<td class="h" >
<a name="695">695</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> associate => $self, </td>
</tr>
<tr>
<td class="h" >
<a name="696">696</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> global_vars => 1, </td>
</tr>
<tr>
<td class="h" >
<a name="697">697</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> die_on_bad_params => 0 </td>
</tr>
<tr>
<td class="h" >
<a name="698">698</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ); </td>
</tr>
<tr>
<td class="h" >
<a name="699">699</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="700">700</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $html->param( error => $error ); </td>
</tr>
<tr>
<td class="h" >
<a name="701">701</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="702">702</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $html->output; </td>
</tr>
<tr>
<td class="h" >
<a name="703">703</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="704">704</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="705">705</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 SEE ALSO </td>
</tr>
<tr>
<td class="h" >
<a name="706">706</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="707">707</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =over 4 </td>
</tr>
<tr>
<td class="h" >
<a name="708">708</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="709">709</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =item * L<CGI::Application> </td>
</tr>
<tr>
<td class="h" >
<a name="710">710</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="711">711</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =item * L<HTML::Template> </td>
</tr>
<tr>
<td class="h" >
<a name="712">712</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="713">713</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =item * L<CGI::Application::MailPage> </td>
</tr>
<tr>
<td class="h" >
<a name="714">714</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="715">715</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =back </td>
</tr>
<tr>
<td class="h" >
<a name="716">716</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="717">717</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 AUTHOR </td>
</tr>
<tr>
<td class="h" >
<a name="718">718</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="719">719</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Brian Cassidy E<lt>bricas@cpan.orgE<gt> </td>
</tr>
<tr>
<td class="h" >
<a name="720">720</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="721">721</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 COPYRIGHT AND LICENSE </td>
</tr>
<tr>
<td class="h" >
<a name="722">722</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="723">723</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Copyright 2003-2013 by Brian Cassidy </td>
</tr>
<tr>
<td class="h" >
<a name="724">724</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="725">725</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This library is free software; you can redistribute it and/or modify </td>
</tr>
<tr>
<td class="h" >
<a name="726">726</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> it under the same terms as Perl itself. </td>
</tr>
<tr>
<td class="h" >
<a name="727">727</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="728">728</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="729">729</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="730">730</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> 1; </td>
</tr>
</table>
</body>
</html>
|