gallery / modul problem....

digifoho

Grünschnabel
hallo...

also ich hab da ein kleines/großes Problem...

Hab mir für das Opensorce-Script "gallery" das Modul "cart" runtergeladen und versuch dies zu erweitern.
Das Modul "cart" kann folgendes: Die Bilder von der Gallery in einen Warenkorb legen...
so und folgende Erweiterung versuch ich einfügen:

Das man die Bilder bestellen kann und zwar in unterschiedlichen Grössen.
Das heisst ich bau ein Formular dazu das mir die Name, Adresse etc. - Bildnummer und die gewünschte Größe per e-mail übermittelt. Nur ist das Modul mit tpl Datein aufgebaut...und ich komm da nicht zurecht.

link: Ihren Warenkorb anzeigen es sind auch zwei Bilder online zum testen

Kennt das Modul jemand und kann mir da jemand Rat geben?



das ist die Datei viewcart.tpl:
PHP:
{*
 * $Revision: 1.39 $
 * If you want to customize this file, do not edit it directly since future upgrades
 * may overwrite it.  Instead, copy it into a new directory called "local" and edit that
 * version.  Gallery will look for that file first and use it if it exists.
 *}

<div class="gbBlock gcBackground1">
  <h2> {g->text text="Items Currently in Your Cart"} </h2>
</div>

{if !empty($ViewCart.items)}
<form action="{g->url}" method="post">
  <div>
    {g->hiddenFormVars}
    <input type="hidden" name="{g->formVar var="controller"}" value="{$ViewCart.controller}"/>
    <input type="hidden" name="{g->formVar var="form[formName]"}" value="{$form.formName}"/>
  </div>
  <div class="gbBlock gcBackground2" style="text-align: right; white-space: nowrap">
    <select name="{g->formVar var="form[pluginId]"}">
      <option label="{g->text text="&laquo; cart actions &raquo;"}"
       value="" selected="selected">{g->text text="&laquo; cart actions &raquo;"}</option>
      <option label="{g->text text="Empty Cart"}"
       value="emptyCart"> {g->text text="Empty Cart"} </option>

      {foreach from=$ViewCart.plugins key=pluginId item=pluginData}
      <option label="{$pluginData.actionDisplayName}"
       value="{$pluginId}"> {$pluginData.actionDisplayName} </option>
      {/foreach}
    </select>
    <input type="submit" class="inputTypeSubmit"
     name="{g->formVar var="form[action][modify]"}" value="{g->text text="Go"}"/>
  </div>
{/if}
</form>
{if isset($status.cartModified)}
<div class="gbBlock"><h2 class="giSuccess">
  {g->text text="Cart updated successfully"}
</h2></div>
{/if}

<form action="main.php?g2_view=cart.ViewCart&send=ok" method="POST">

{if empty($ViewCart.items)}
<div class="gbBlock"><strong>
  <p> {g->text text="Your cart is empty."} </p>
  <p>
    {g->text text="To add items, browse the gallery and select 'Add to cart' from the item's action menu."}
  </p>
  </strong>
</div>
{else}

<div class="gbBlock">
  <table class="gbDataTable" width="400px"><tr>
    <th colspan="2" align="center"> {g->text text="Item"} </th>
    <th> Formate - Anzahl </th>
  </tr>
  {foreach from=$ViewCart.items item=item}
  <tr class="{cycle values="gbEven,gbOdd"}">
    <td>
      <center><a href="{g->url arg1="view=core.ShowItem" arg2="itemId=`$item.id`"}">
        {if isset($ViewCart.thumbnails[$item.id])}
  	{g->image item=$ViewCart.items[$item.id] image=$ViewCart.thumbnails[$item.id]
  		  maxSize=90}
        {else}
  	{g->text text="No thumbnail"}
        {/if}
      </a></center>
    </td><td>
      <ul>
        <li>
  	<strong>{g->text text="Title:"}</strong>
    {$item.title|markup}
        </li>
      </ul>
    </td><td align="center">
    
      10x15: <input type="text" value="0" name="10x15_{$item.title|markup}" size="2" /><br>
      13x18: <input type="text" value="0" name="13x18_{$item.title|markup}" size="2" /><br>
      15x21: <input type="text" value="0" name="15x21_{$item.title|markup}" size="2" /><br>
      20x30: <input type="text" value="0" name="20x30_{$item.title|markup}" size="2" /><br>
    </td>
  </tr>
  {/foreach}
{/if}
<tr><td></td><td></td><td><br> <center><input type="submit" value="--> next -->" /></center> </td></tr>
  </table>
</div>
<br><br>
</form>


und das die viewcart.inc

PHP:
<?php
/*
 * $RCSfile: ViewCart.inc,v $
 *
 * Gallery - a web based photo album viewer and editor
 * Copyright (C) 2000-2006 Bharat Mediratta
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or (at
 * your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 */
/**
 * @version $Revision: 1.19 $ $Date: 2006/01/10 04:38:59 $
 * @package Cart
 * @subpackage UserInterface
 * @author Bharat Mediratta <bharat@menalto.com>
 */

/**
 * Required classes
 */
GalleryCoreApi::requireOnce('modules/cart/classes/CartHelper.class');

/**
 * This view will allow users to view their individual carts
 *
 * @package Comment
 * @subpackage UserInterface
 */
 
class ViewCartView extends GalleryView {


    /**
     * @see GalleryView::loadTemplate
     */
    function loadTemplate(&$template, &$form) {
	global $gallery;

	list ($ret, $itemList) = CartHelper::loadCartItems();
	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
	}
	list ($ret, $cartItemIds) = CartHelper::fetchCartItemCounts();
	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
	}

	if ($form['formName'] != 'ViewCart') {
	    /* First time around, initialize the cart counts */
	    foreach ($cartItemIds as $itemId => $count) {
		$form['counts'][$itemId] = $count;
	    }
	    $form['formName'] = 'ViewCart';
	}
	$ViewCart = array();

	/* Bring in the root album information for the breadcrumb */
	list ($ret, $rootAlbumId) =
	    GalleryCoreApi::getPluginParameter('module', 'core', 'id.rootAlbum');
	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
	}
	list ($ret, $rootAlbum) = GalleryCoreApi::loadEntitiesById($rootAlbumId);
	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
	}
	$ViewCart['rootAlbum'] = (array)$rootAlbum;

	/* Find all our cart plugins */
	GalleryCoreApi::requireOnce('modules/cart/classes/CartPluginInterface_1_0.class');
	list ($ret, $ids) =
	    GalleryCoreApi::getAllFactoryImplementationIds('CartPluginInterface_1_0');
	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
	}
	$plugins = array();
	foreach ($ids as $id => $className) {
	    list ($ret, $instances[$id]) =
		GalleryCoreApi::newFactoryInstance('CartPluginInterface_1_0', $className);
	    if ($ret) {
		return array($ret->wrap(__FILE__, __LINE__), null);
	    }

	    /*
	     * Figure out what types each plugin can handle so that we can cue the UI
	     * to only send it the ones of the appropriate types.
	     */
	    $plugins[$id]['supportedItemTypes'] = $instances[$id]->getSupportedItemTypes();
	    list ($ret, $plugins[$id]['actionDisplayName']) =
		$instances[$id]->getActionDisplayName();
	    if ($ret) {
		return array($ret->wrap(__FILE__, __LINE__), null);
	    }
	}

	$items = array();
	$thumbnails = array();
	$itemTypeNames = array();
	if (!empty($cartItemIds)) {
	    foreach ($itemList as $item) {
		$items[$item->getId()] = (array)$item;

		/* TODO: This is a O(N^3) operation -- probably should be optimized */
		foreach ($plugins as $pluginId => $pluginData) {
		    foreach ($pluginData['supportedItemTypes'] as $type) {
			if ($type == '*') {
			    $plugins[$id]['supported'][$item->getId()] = 1;
			    break;
			} else {
			    if (GalleryUtilities::isA($item, $type)) {
				$plugins[$id]['supported'][$item->getId()] = 1;
				break;
			    }
			}
		    }
		}

		$itemTypeNames[$item->getId()] = $item->itemTypeName();
	    }

	    /* Fetch thumbnails */
	    list ($ret, $thumbnailList) =
		GalleryCoreApi::fetchThumbnailsByItemIds(array_keys($cartItemIds));
	    if ($ret) {
		return array($ret->wrap(__FILE__, __LINE__), null);
	    }
	    foreach ($thumbnailList as $thumbnail) {
		$thumbnails[$thumbnail->getParentId()] = (array)$thumbnail;
	    }
	}

	$ViewCart['items'] = $items;
	$ViewCart['itemTypeNames'] = $itemTypeNames;
	$ViewCart['thumbnails'] = $thumbnails;
	$ViewCart['plugins'] = $plugins;
	$ViewCart['controller'] = 'cart.ModifyCart';
	$template->setVariable('ViewCart', $ViewCart);



	$urlGenerator =& $gallery->getUrlGenerator();
	list ($ret, $navigationLinks) = $urlGenerator->getNavigationLinks();
	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
 }
	$template->setVariable('navigationLinks', $navigationLinks);

	list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'cart');

	if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
    }

    $template->title($module->translate('View Your Cart'));
    return array(null,
    	     array('body' => 'modules/cart/templates/ViewCart.tpl'));
    }
    /**
     * @see GalleryView::getViewDescription()
     */
    function getViewDescription() {
	list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'cart');

    if ($ret) {
	    return array($ret->wrap(__FILE__, __LINE__), null);
	}

	return array(null, $module->translate('view cart'));
    }

}
?>
 
Zuletzt bearbeitet:
1. Halte dich bitte wie die Forenregeln vorgeben an die deutsche Rechtschreibung, dazu zählt auch die Groß- & Kleinschreibung.
2. Benutze bitte die richtigen Highlight Tags, in deinem Fall [ php] [/ php] (Natürlich ohne Leerzeichen)
3. Für solche Module empfiehlt es sicher eher die offiziellen Supportforen der jeweiligen Software zu benutzen, z. B. das hier:
Forum | Gallery
 
zu 1. Sorry - erledigt. (restliche Rechtschreibfehler/Tippfehler geschenkt)
zu 2. Sorry - erledigt.
zu 3. Ich hab mich da auch schon umgesehen und nichts gefunden. Und mein English ist nicht das beste :(
 
tpl Dateien sind nichts anderes als Template Dateien und für Template Systeme gibt es keine General Tutorials, da jedes System unterschiedlich ist.
Das Problem ist, dass ich bezweifle dass es hier irgendwelche Spezialisten für dieses Gallery Project geben wird. Und man kann schwierig helfen, wenn man kein Backgroundwissen hat.
Und um die meisten Module zu verstehen brauch man eben dieses Wissen der Basisklasse was in deinem Fall die Gallery ist.

Ich kann dir nur raten, dich durch die Documentation zu arbeiten oder ggf. auf ein anderes System umzusteigen, auch wenn es schwierig sein wird ;-)

Hier was vorallem für dich interessant sein dürfte:
Gallery2:Tpl Reference - Gallery Codex

Übrigens benutzt deine Gallery das Smarty Template System, für das es auch eine deutsche Dokumentation gibt:
Smarty
 
danke felx für den Link!!
Der hilft ich glaub ich schaff das :)
Es ist gar nicht so schwer :) recht unkompliziert !!

DANKE DANKE DANKE DANKE
 
Zurück