Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 08. Juli 2013 08:02

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Hallo!

Ihr habt mir vor geraumer Zeit hiermit geholfen - http://forum.cmsmadesimple.de/viewtopic.php?id=911&p=2 - hier ging es um das automatische Verbinden einer Gallery mit einer Seite - wie kann man das an einem Newsbeitrag anwenden. Ich möchte es meiner Kundin so einfach wie möglich machen. Es sollte in den News einfach ein Dropdown geben, in der man die passende Gallery auswählt - danach sollte einfach nach dem Beitrag der Gallerytag eingefügt werden - kann mir da jemand helfen?

Vielen Dank!

Beitrag geändert von brandy (18. Juli 2013 22:17)

Offline

#2 08. Juli 2013 20:43

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

Hm. Das geht mit module_custom und ein wenig konfigurieren.

Installiere mal die ToolBox. Da ist die Galleryfunktion enthalten.
Danach lies mal folgende Threads:
http://forum.cmsmadesimple.de/viewtopic.php?id=629
http://forum.cmsmadesimple.de/viewtopic.php?id=2933

Füge folgende zwei Plugins zu deinem ./plugins Ordner hinzu:

======= Datei function.btReplaceAsDropdown.php =======
<?php

function smarty_function_btReplaceAsDropdown($params, &$template)
{
  $smarty = $template->smarty;
	$gCms = cmsms();
	global $id;
	
	$data = array();
	foreach (explode(",", $params["dropdown"]) as $cLine) {
	    list ($cKey, $cValue) = explode(':', $cLine, 2);
	    $data[$cKey] = $cValue;
	}
	
  preg_match_all('/\s+([^=]+)="([^"]*)"/', $params['field'], $matches);
  if ($matches) {
    foreach ($matches[1] as $key => $value) {
      $field_params[$value] = $matches[2][$key];
    }
    if ($field_params) {
			$text = '<select class="cms_dropdown" name="'.$field_params['name'].'"';
			$text .= '>';
			$count = 0;
			if (is_array($data) && count($data) > 0)
			{
				foreach ($data as $key=>$value)
				{
				  //		  $value = cms_htmlentities($value);
				$text .= '<option value="'.$key.'"';
					if ($field_params['value'] == $key)
					{
						$text .= ' ' . 'selected="selected"';
					}
					$text .= '>';
					$text .= $value;
					$text .= '</option>';
					$count++;
				}
			}
			$text .= '</select>'."\n";
    }
	}
	
	echo $text;	
	
}
======= Datei function.btArrayToString.php =======
<?php
function smarty_function_btArrayToString($params, &$template)
{
  $smarty = $template->smarty;
  $output = implode(', ', array_map(function ($v, $k) { return $k . ':' . $v; }, $params['array'], array_keys($params['array'])));
  $smarty->assign(trim($params['assign']),$output);
}

Erstelle ein eigenes Template im module_custom Ordner.

Hier ist nun ein wenig gebastel angezeigt:

{capture}{tbGetGalleryTree}{/capture}
{foreach from=$custom_fields item='field'}
	{if trim($field->prompt) == "Gallery"}
    <div class="pageoverflow">
       <p class="pagetext">{$field->prompt}</p>
       <p class="pageinput">  
      {btArrayToString array=$tbGetGalleryTreeArray assign=dropdownstring}
      {btReplaceAsDropdown field=$field->field dropdown=$dropdownstring}
       </p>
</div>
  {/if}
{/foreach}
{/if}

Das ganze ist ungetestet, müsste aber in etwa so funktionieren.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#3 09. Juli 2013 08:46

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Erstmal vielen Dank!

Ich hab mir jetzt mal die Dateien auf den Server gespielt. Wie funktioniert das aber mit dem module_custom Ordner - wo muss ich diesen anlegen?
Danke!

Offline

#4 09. Juli 2013 08:53

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.058

Re:

http://docs.cmsmadesimple.org/customizi … -templates

Oder hier mal im Forum suchen.
Gibt da einige Beispiele.
Ist kein großes Voodoo.
Einfach nur Templates und Sprachdateien.

Offline

#5 09. Juli 2013 10:09

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

brandy schrieb:

Erstmal vielen Dank!

Ich hab mir jetzt mal die Dateien auf den Server gespielt. Wie funktioniert das aber mit dem module_custom Ordner - wo muss ich diesen anlegen?
Danke!

Zwei Links dazu sind oben bereits in meinem Post.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#6 09. Juli 2013 10:15

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Gut, module_custom ist mal klar - hab mir jetzt das editarticle.tpl geschnappt und deinen Code eingebaut - wo soll dieser Code dann hin - habs jetzt mal nach

{else}
	{$status}
{/if}

gesetzt.

Offline

#7 09. Juli 2013 13:36

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

Dort wo du das Drop-Down plaziert haben willst. Irgendwo im Template.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#8 09. Juli 2013 14:01

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Meine editarticle sieht jetzt folgendermaßen aus:

<div id="editarticle_result"></div>

{$startform}
<div class="pageoverflow">
  <p class="pagetext">&nbsp;</p>
  <p class="pageinput">{$hidden}{$submit}{$cancel}{if isset($apply)}{$apply}{/if}</p>
</div>

{if isset($start_tab_headers)}
{$start_tab_headers}
{$tabheader_article}
{$tabheader_preview}
{$end_tab_headers}

{$start_tab_content}
{$start_tab_article}
{/if}
<div id="edit_article">
{if $inputauthor}
	<div class="pageoverflow">
		<p class="pagetext">*{$authortext}:</p>
		<p class="pageinput">{$inputauthor}</p>
	</div>
{/if}
	<div class="pageoverflow">
		<p class="pagetext">*{$titletext}:</p>
		<p class="pageinput">{$inputtitle}</p>
	</div>
	<div class="pageoverflow">
		<p class="pagetext">*{$categorytext}:</p>
		<p class="pageinput">{$inputcategory}</p>
	</div>
{if !isset($hide_summary_field) or $hide_summary_field == '0'}
	<div class="pageoverflow">
		<p class="pagetext">{$summarytext}:</p>
		<p class="pageinput">{$inputsummary}</p>
	</div>
{/if}
	<div class="pageoverflow">
		<p class="pagetext">*{$contenttext}:</p>
		<p class="pageinput">{$inputcontent}</p>
	</div>
	<div class="pageoverflow">
		<p class="pagetext">{$extratext}:</p>
		<p class="pageinput">{$inputextra}</p>
		
	</div>
        <div class="pageoverflow">
                <p class="pagetext">{$urltext}:</p>
                <p class="pageinput">{$inputurl}</p>
        </div>

	<div class="pageoverflow">
		<p class="pagetext">{$postdatetext}:</p>
		<p class="pageinput">{html_select_date prefix=$postdateprefix time=$postdate start_year="-10" end_year="+15"} {html_select_time prefix=$postdateprefix time=$postdate}</p>
	</div>
{if isset($statustext)}
	<div class="pageoverflow">
		<p class="pagetext">*{$statustext}:</p>
		<p class="pageinput">{$status}</p>
	</div>
{else}
	{$status}
{/if}

{capture}{tbGetGalleryTree}{/capture}
{foreach from=$custom_fields item='field'}
	{if trim($field->prompt) == "Gallery"}
    <div class="pageoverflow">
       <p class="pagetext">{$field->prompt}</p>
       <p class="pageinput">  
      {btArrayToString array=$tbGetGalleryTreeArray assign=dropdownstring}
      {btReplaceAsDropdown field=$field->field dropdown=$dropdownstring}
       </p>
</div>
  {/if}
{/foreach}


	<div class="pageoverflow">
		<p class="pagetext">{$useexpirationtext}:</p>
		<p class="pageinput"><input type="checkbox" name="{$actionid}useexp" {if $useexp == 1}checked="checked"{/if} onclick="togglecollapse('expiryinfo');" class="pagecheckbox"/></p>
	</div>
	<div id="expiryinfo" {if $useexp != 1}style="display: none;"{/if}>
	<div class="pageoverflow">
		<p class="pagetext">{$startdatetext}:</p>
		<p class="pageinput">{html_select_date prefix=$startdateprefix time=$startdate start_year="-10" end_year="+15"} {html_select_time prefix=$startdateprefix time=$startdate}</p>
	</div>
	<div class="pageoverflow">
		<p class="pagetext">{$enddatetext}:</p>
		<p class="pageinput">{html_select_date prefix=$enddateprefix time=$enddate start_year="-10" end_year="+15"} {html_select_time prefix=$enddateprefix time=$enddate}</p>
	</div>
	</div>
{if isset($custom_fields)}
{foreach from=$custom_fields item='field'}
        <div class="pageoverflow">
           <p class="pagetext">{$field->prompt}</p>
           <p class="pageinput">{$field->field}</p>
        </div>
{/foreach}
{/if}
</div>
{if isset($end_tab_article)}{$end_tab_article}{/if}

{if isset($start_tab_preview)}
{$start_tab_preview}
<script type="text/javascript">{literal}
jQuery(document).ready(function(){
  jQuery('[name=m1_apply]').live('click',function(){
    if( typeof tinyMCE != 'undefined') tinyMCE.triggerSave();
    var data = jQuery('form').find('input:not([type=submit]), select, textarea').serializeArray();
    data.push({'name': 'm1_ajax', 'value': 1});
    data.push({'name': 'm1_apply', 'value': 1});
    data.push({'name': 'showtemplate', 'value': 'false'});
    var url = jQuery('form').attr('action');
    jQuery.post(url,data,function(resultdata,text){
      var resp = jQuery(resultdata).find('Response').text();
      var details = jQuery(resultdata).find('Details').text();
      var htmlShow = '';
      if( resp == 'Success' && details != '' )
      {
	 htmlShow = '<div class="pagemcontainer"><p class="pagemessage">'+details+'<\/p><\/div>';
      }
      else
      {
	 htmlShow = '<div class="pageerrorcontainer"><ul class="pageerror">';
	 htmlShow += details;
	 htmlShow += '<\/ul><\/div>';
      }
      jQuery('#editarticle_result').html(htmlShow);
    },'xml');
    return false;
  });

  function news_dopreview()
  {
    if( typeof tinyMCE != 'undefined') tinyMCE.triggerSave();
    var data = jQuery('form').find('input:not([type=submit]), select, textarea').serializeArray();
    data.push({'name': 'm1_ajax', 'value': 1});
    data.push({'name': 'm1_preview', 'value': 1});
    data.push({'name': 'showtemplate', 'value': 'false'});
    data.push({'name': 'm1_previewpage', 'value': jQuery('#preview_returnid').val()});
    data.push({'name': 'm1_detailtemplate', 'value': jQuery('#preview_template').val()});
    var url = jQuery('form').attr('action');
    jQuery.post(url,data,function(resultdata,text){
      var resp = jQuery(resultdata).find('Response').text();
      var details = jQuery(resultdata).find('Details').text();
      var htmlShow = '';
      if( resp == 'Success' && details != '' )
      {
	 // preview worked... now the details should contain the url
         details = details.replace(/amp;/g,'');
         jQuery('#previewframe').attr('src',details);
      }
      else
      {
	 if( details == '' ) details = 'An unknown error occurred';

	 // preview save did not work.
	 htmlShow = '<div class="pageerrorcontainer"><ul class="pageerror">';
	 htmlShow += details;
	 htmlShow += '<\/ul><\/div>';
         jQuery('#editarticle_result').html(htmlShow);
      }
    },'xml');
  }

  jQuery('#preview').click(function(){
    news_dopreview();
    return false;
  });

  jQuery('#preview_returnid,#preview_template').change(function(){
    news_dopreview();
    return false;
  });
});
{/literal}</script>

{* display a warning *}
<div class="pagewarning">{$warning_preview}</div>
<fieldset>
  <label for="preview_template">{$prompt_detail_template}:</label>&nbsp;
  <select id="preview_template" name="preview_template">
  {html_options options=$detail_templates selected=$cur_detail_template}
  </select>&nbsp;

  <label for="preview_returnid">{$prompt_detail_page}:</label>&nbsp;
  {$preview_returnid}
</fieldset>
<br/>
<iframe id="previewframe" style="height: 800px; width: 100%; border: 1px solid black; overflow: auto;" src=""></iframe>
{$end_tab_preview}
{$end_tab_content}
{/if}

<div class="pageoverflow">
  <p class="pagetext">&nbsp;</p>
  <p class="pageinput">{$hidden}{$submit}{$cancel}{if isset($apply)}{$apply}{/if}</p>
</div>
{$endform}

Muss ich die zwei PHP-Dateien noch irgendwie einbinden, weil momentan funktionierts noch nicht!
Danke!

Offline

#9 09. Juli 2013 14:31

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

Die zwei PHP Dateien gehören ins ./plugin Verzeichnis. Der Namen der PHP Datei steht jeweils oben ===== name der datei ======.  Dieser Teil darf nicht in die Datei eingefügt werden.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#10 09. Juli 2013 14:33

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Hab ich so gemacht - wollt mich nur absichern ;-)

Wo gibts da sonst mögliche Probleme - hab nämlich noch kein neues Feld - Danke!

Beitrag geändert von brandy (09. Juli 2013 15:24)

Offline

#11 09. Juli 2013 15:34

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

Hast du ein entsprechendes Feld im Newsmodul angelegt?


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#12 09. Juli 2013 18:47

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Nein...
Welches Feld lege ich an - unter Extrafelder gibt es kein Dropdown?

Danke!

Offline

#13 10. Juli 2013 04:32

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

Ein normales Textfeld. Da es eben keine Dropdown Möglichkeit gibt,  nehmen wir hier ein normales Textfeld und bauen es mit der "btReplaceAsDropdown" Funktion in ein Dropdown um.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#14 10. Juli 2013 06:53

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Ok, ich hab jetzt ein Textfeld eingebaut, das "Gallery" heißt. Er macht mir auch was, jedoch nicht das was es sein soll - Wenn ich das Feld anlege, fehlt bei der Artikelbearbeitung praktisch das Template (Hintergrund weiß, nichts ausgerichtet usw.). Es steht noch die Überschrift des angelegten Feldes (Gallery), dann fehlt jedoch das Entsprechende Text- bzw. Dropdownfeld...
Danke!

Offline

#15 10. Juli 2013 08:21

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 265

Re:

Hab das auch mal nachvollzogen und bestätige brandys Problem. Bei mir stehen folgende Fehlermeldungen im Template:

[== Fehlermeldung ==]
Warning: array_keys() expects parameter 1 to be array, null given in /home/hinzundkunz/public_html/plugins/function.btArrayToString.php on line 5

Warning: array_map(): Argument #2 should be an array in /home/hinzundkunz/public_html/plugins/function.btArrayToString.php on line 5

Warning: implode(): Invalid arguments passed in /home/hinzundkunz/public_html/plugins/function.btArrayToString.php on line 5

Fatal error: Call to undefined function assign() in /home/hinzundkunz/public_html/plugins/function.btArrayToString.php on line 6

In Zeile 5 und 6 des plugins steht:

[== function.btArrayToString.php ==]
$output = implode(', ', array_map(function ($v, $k) { return $k . ':' . $v; }, $params['array'], array_keys($params['array'])));
  $smarty-assign(trim($params['assign']),$output);

Core 1.11.6
News 2.12.12
Gallery 1.6.1
ToolBox 1.3.5

Offline

#16 13. Juli 2013 07:17

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

So, nun habe ich Zeit gefunden das ganze selber zu testen und zu korrigieren. Hier nun eine lauffähige Version:

==== Datei function.btReplaceAsDropdown.php --> speichern im ./plugins Ordner ====

<?php

function smarty_function_btReplaceAsDropdown($params, &$template)
{
  $smarty = $template->smarty;
	$gCms = cmsms();
	global $id;
	
	$data = array();
	foreach (explode(",", $params["dropdown"]) as $cLine) {
	    list ($cKey, $cValue) = explode(':', $cLine, 2);
	    $data[$cKey] = $cValue;
	}
	
  preg_match_all('/\s+([^=]+)="([^"]*)"/', $params['field'], $matches);
  if ($matches) {
    foreach ($matches[1] as $key => $value) {
      $field_params[$value] = $matches[2][$key];
    }
    if ($field_params) {
			$text = '<select class="cms_dropdown" name="'.$field_params['name'].'"';
			$text .= '>';
			$count = 0;
			if (is_array($data) && count($data) > 0)
			{
				foreach ($data as $key=>$value)
				{
				  //		  $value = cms_htmlentities($value);
				$text .= '<option value="'.$key.'"';
					if ($field_params['value'] == $key)
					{
						$text .= ' ' . 'selected="selected"';
					}
					$text .= '>';
					$text .= $value;
					$text .= '</option>';
					$count++;
				}
			}
			$text .= '</select>'."\n";
    }
	}
	
	echo $text;	
	
}
==== Datei function.btArrayToString.php --> speichern im ./plugins Ordner ====

<?php
function smarty_function_btArrayToString($params, &$template)
{
  $smarty = $template->smarty;
  $output = implode(', ', array_map(function ($v, $k) { return $k . ':' . $v; }, $params['array'], array_keys($params['array'])));
  $smarty->assign(trim($params['assign']),$output);
}

Nun in der News ein Extrafeld mit den Namen "Gallery" erfassen. Als Typ "Einzeiliges Textfeld" wählen

==== Datei editarticle.tpl --> speichern im ./module_custom/News/templates Ordner ====
<div id="editarticle_result"></div>

{$startform}
<div class="pageoverflow">
  <p class="pagetext">&nbsp;</p>
  <p class="pageinput">{$hidden}{$submit}{$cancel}{if isset($apply)}{$apply}{/if}</p>
</div>

{if isset($start_tab_headers)}
{$start_tab_headers}
{$tabheader_article}
{$tabheader_preview}
{$end_tab_headers}

{$start_tab_content}
{$start_tab_article}
{/if}
<div id="edit_article">

{capture}{tbGetGalleryTree}{/capture}
{foreach from=$custom_fields item='field'}
	{if trim($field->prompt) == "Gallery"}
    <div class="pageoverflow">
       <p class="pagetext">{$field->prompt}</p>
       <p class="pageinput">  
      {btArrayToString array=$tbGalleryTreeArray assign=dropdownstring}
      {btReplaceAsDropdown field=$field->field dropdown=$dropdownstring}
       </p>
</div>
  {/if}
{/foreach}




{if $inputauthor}
	<div class="pageoverflow">
		<p class="pagetext">*{$authortext}:</p>
		<p class="pageinput">{$inputauthor}</p>
	</div>
{/if}
	<div class="pageoverflow">
		<p class="pagetext">*{$titletext}:</p>
		<p class="pageinput">{$inputtitle}</p>
	</div>
	<div class="pageoverflow">
		<p class="pagetext">*{$categorytext}:</p>
		<p class="pageinput">{$inputcategory}</p>
	</div>
{if !isset($hide_summary_field) or $hide_summary_field == '0'}
	<div class="pageoverflow">
		<p class="pagetext">{$summarytext}:</p>
		<p class="pageinput">{$inputsummary}</p>
	</div>
{/if}
	<div class="pageoverflow">
		<p class="pagetext">*{$contenttext}:</p>
		<p class="pageinput">{$inputcontent}</p>
	</div>
	<div class="pageoverflow">
		<p class="pagetext">{$extratext}:</p>
		<p class="pageinput">{$inputextra}</p>
		
	</div>
        <div class="pageoverflow">
                <p class="pagetext">{$urltext}:</p>
                <p class="pageinput">{$inputurl}</p>
        </div>

	<div class="pageoverflow">
		<p class="pagetext">{$postdatetext}:</p>
		<p class="pageinput">{html_select_date prefix=$postdateprefix time=$postdate start_year="-10" end_year="+15"} {html_select_time prefix=$postdateprefix time=$postdate}</p>
	</div>
{if isset($statustext)}
	<div class="pageoverflow">
		<p class="pagetext">*{$statustext}:</p>
		<p class="pageinput">{$status}</p>
	</div>
{else}
	{$status}
{/if}
	<div class="pageoverflow">
		<p class="pagetext">{$useexpirationtext}:</p>
		<p class="pageinput"><input type="checkbox" name="{$actionid}useexp" {if $useexp == 1}checked="checked"{/if} onclick="togglecollapse('expiryinfo');" class="pagecheckbox"/></p>
	</div>
	<div id="expiryinfo" {if $useexp != 1}style="display: none;"{/if}>
	<div class="pageoverflow">
		<p class="pagetext">{$startdatetext}:</p>
		<p class="pageinput">{html_select_date prefix=$startdateprefix time=$startdate start_year="-10" end_year="+15"} {html_select_time prefix=$startdateprefix time=$startdate}</p>
	</div>
	<div class="pageoverflow">
		<p class="pagetext">{$enddatetext}:</p>
		<p class="pageinput">{html_select_date prefix=$enddateprefix time=$enddate start_year="-10" end_year="+15"} {html_select_time prefix=$enddateprefix time=$enddate}</p>
	</div>
	</div>
{*if isset($custom_fields)}
{foreach from=$custom_fields item='field'}
        <div class="pageoverflow">
           <p class="pagetext">{$field->prompt}</p>
           <p class="pageinput">{$field->field}</p>
        </div>
{/foreach}
{/if*}
</div>
{if isset($end_tab_article)}{$end_tab_article}{/if}

{if isset($start_tab_preview)}
{$start_tab_preview}
<script type="text/javascript">{literal}
jQuery(document).ready(function(){
  jQuery('[name=m1_apply]').live('click',function(){
    if( typeof tinyMCE != 'undefined') tinyMCE.triggerSave();
    var data = jQuery('form').find('input:not([type=submit]), select, textarea').serializeArray();
    data.push({'name': 'm1_ajax', 'value': 1});
    data.push({'name': 'm1_apply', 'value': 1});
    data.push({'name': 'showtemplate', 'value': 'false'});
    var url = jQuery('form').attr('action');
    jQuery.post(url,data,function(resultdata,text){
      var resp = jQuery(resultdata).find('Response').text();
      var details = jQuery(resultdata).find('Details').text();
      var htmlShow = '';
      if( resp == 'Success' && details != '' )
      {
	 htmlShow = '<div class="pagemcontainer"><p class="pagemessage">'+details+'<\/p><\/div>';
      }
      else
      {
	 htmlShow = '<div class="pageerrorcontainer"><ul class="pageerror">';
	 htmlShow += details;
	 htmlShow += '<\/ul><\/div>';
      }
      jQuery('#editarticle_result').html(htmlShow);
    },'xml');
    return false;
  });

  function news_dopreview()
  {
    if( typeof tinyMCE != 'undefined') tinyMCE.triggerSave();
    var data = jQuery('form').find('input:not([type=submit]), select, textarea').serializeArray();
    data.push({'name': 'm1_ajax', 'value': 1});
    data.push({'name': 'm1_preview', 'value': 1});
    data.push({'name': 'showtemplate', 'value': 'false'});
    data.push({'name': 'm1_previewpage', 'value': jQuery('#preview_returnid').val()});
    data.push({'name': 'm1_detailtemplate', 'value': jQuery('#preview_template').val()});
    var url = jQuery('form').attr('action');
    jQuery.post(url,data,function(resultdata,text){
      var resp = jQuery(resultdata).find('Response').text();
      var details = jQuery(resultdata).find('Details').text();
      var htmlShow = '';
      if( resp == 'Success' && details != '' )
      {
	 // preview worked... now the details should contain the url
         details = details.replace(/amp;/g,'');
         jQuery('#previewframe').attr('src',details);
      }
      else
      {
	 if( details == '' ) details = 'An unknown error occurred';

	 // preview save did not work.
	 htmlShow = '<div class="pageerrorcontainer"><ul class="pageerror">';
	 htmlShow += details;
	 htmlShow += '<\/ul><\/div>';
         jQuery('#editarticle_result').html(htmlShow);
      }
    },'xml');
  }

  jQuery('#preview').click(function(){
    news_dopreview();
    return false;
  });

  jQuery('#preview_returnid,#preview_template').change(function(){
    news_dopreview();
    return false;
  });
});
{/literal}</script>

{* display a warning *}
<div class="pagewarning">{$warning_preview}</div>
<fieldset>
  <label for="preview_template">{$prompt_detail_template}:</label>&nbsp;
  <select id="preview_template" name="preview_template">
  {html_options options=$detail_templates selected=$cur_detail_template}
  </select>&nbsp;

  <label for="preview_returnid">{$prompt_detail_page}:</label>&nbsp;
  {$preview_returnid}
</fieldset>
<br/>
<iframe id="previewframe" style="height: 800px; width: 100%; border: 1px solid black; overflow: auto;" src=""></iframe>
{$end_tab_preview}
{$end_tab_content}
{/if}

<div class="pageoverflow">
  <p class="pagetext">&nbsp;</p>
  <p class="pageinput">{$hidden}{$submit}{$cancel}{if isset($apply)}{$apply}{/if}</p>
</div>
{$endform}

--> Die entscheidende Ergänzung im editarticle.tpl ist folgende

{capture}{tbGetGalleryTree}{/capture}
{foreach from=$custom_fields item='field'}
	{if trim($field->prompt) == "Gallery"}
    <div class="pageoverflow">
       <p class="pagetext">{$field->prompt}</p>
       <p class="pageinput">  
      {btArrayToString array=$tbGalleryTreeArray assign=dropdownstring}
      {btReplaceAsDropdown field=$field->field dropdown=$dropdownstring}
       </p>
</div>
  {/if}
{/foreach}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#17 14. Juli 2013 20:55

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

@nockenfell: Vielen Dank! Bekomm jetzt den Galeriepfad ausgegeben!

Wie kommt das Ganze aber zur Ausgabe?
Finde im Zusammenfassungstemplate nirgends eine Abfrage für ein Extrafeld...

Danke nochmals!

Offline

#18 15. Juli 2013 06:49

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

{Gallery dir=$entry->fields.Gallery->value}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#19 15. Juli 2013 08:45

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.316
Webseite

Re:

ohne es testen zu wollen. was genau macht das jetzt? ich nehme an wenn man nen newsbeitrag verfasst, erscheint ein dropdownfeld bei dem man aus einem gallery-album wählen kann?

Offline

#20 15. Juli 2013 08:59

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

Genau


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#21 15. Juli 2013 13:44

faglork
CMSMS-Profi
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.157
Webseite

Re:

Ich versteh das alles nicht.

Das Newsmodul verwendet doch den Wsyiwyg-Editor. Da kann man doch einfach das Gallery-Auswahl-Plugin anschalten und fertich ...

Oder habe ich da was kolossal missverstanden?

Servus,
Alex

Beitrag geändert von faglork (15. Juli 2013 13:45)

Offline

#22 15. Juli 2013 14:03

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

faglork schrieb:

Ich versteh das alles nicht.

Das Newsmodul verwendet doch den Wsyiwyg-Editor. Da kann man doch einfach das Gallery-Auswahl-Plugin anschalten und fertich ...

Oder habe ich da was kolossal missverstanden?

Auch eine Möglichkeit. Wenn allerdings hier Designtechnisch enge Grenzen gesetzt werden sollen, ist die Möglichkeit via Extrafeld besser.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#23 15. Juli 2013 15:25

mike-r
CMSMS-Profi
Registriert: 21. Dezember 2010
Beiträge: 898
Webseite

Re:

faglork schrieb:

Da kann man doch einfach das Gallery-Auswahl-Plugin anschalten und fertich ...

Kleine Zwischenfrage: ich habe den gerade mal bei einer Installation aktiv gesetzt, bekomme aber keinen Button. Muss ich den noch in die Werkzeugleiste einfügen und wenn ja mit welchem Aufruf?

Edit: ja, stundenlanges Ausprobieren ersetzt jedes Manual,  "gallery_picker" muss noch in die Werkzeugleiste.

Beitrag geändert von mike-r (15. Juli 2013 15:27)


Unablässige Tools für's Webdevelopement/ Fehlerfindung: CSS Validierungsservice, Bildschirmlineal, Firebug, Tidy, Deutsche CSS-Referenz

Offline

#24 15. Juli 2013 15:29

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.807
Webseite

Re:

In dem du in den TinyMCE-Einstellungen unter "Profile" folgendes ergänzt:

gallery_picker

--> einfach dort einfügen wo du ihn in der Werkzeugleiste haben willst.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox, Revisions

Offline

#25 15. Juli 2013 20:34

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 675
Webseite

Re:

Kleiner Einwurf:
Funktioniert das ganze bei MicroTiny auch?

Zurück zum Ausgangsthema:
Die Lösung von nockenfell funktioniert schon mal - aber noch nicht ganz. Ich bekomme nur die ersten 3 Top-Galerien angezeigt. Er greift nicht auf die angegebene Unterkategorie zu - was hats da?

Offline

Fußzeile des Forums

Powered by FluxBB