Upload Script - Uploadify

Hey Stefan, habe ich versucht, leider bleibt die Variable leer: public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); $config = Shopware()-\>Plugins()-\>Frontend()-\>OrderUpload()-\>Config(); $view-\>OrderUploadConfig = $config; Shopware()-\>Session()-\>bestellnummer = $view-\>ordernumber; if ($request-\>getActionName()=="finish"){ $view-\>addTemplateDir(dirname(\_\_FILE\_\_).'/Views/'); $view-\>extendsTemplate('frontend/plugins/OrderUpload/template/index.tpl'); } }

Das war doch nur ein Beispiel von mir?! Von welchem Template sprechen wir denn? Wo wird dein Upload-Widget aktiv?? Da musst du in das Original-Template schauen und prüfen unter welchem Namen, die Bestellnummer dort bereitgestellt wird

Ich hab doch nachgeschaut! Wir sprechen von Checkout/Finish.tpl Wenn ich auf der Seite bin, sehe ich mit Firebug, dass in der Variable Ordernumber die Bestellnummer steht. Ich könnte auch sBasket.Ordernumber nehmen.

Die Variable heißt doch dort $sOrderNumber ?? checkout/finish.tpl - Zeile 47

Firebug zeigt mir Zwei an, ordernumber und sOrderNumber. Ich habe es nur mit der Ersten versucht. Sollte ja eig. auch gehen. Dann versuch ich es mal mit sOrderNumber.

Das müsste so dann aber eigentlich funktionieren. Shopware()->Session()->bestellnummer = $view->ordernumber; Bau mal ein die(Shopware()-\>Session()-\>bestellnummer); darunter ein.

mhhh, irgendwo passt da noch was nicht. Packe ich die() in die Bootstrap, so sehe ich die Bestellnummer: public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); $config = Shopware()-\>Plugins()-\>Frontend()-\>OrderUpload()-\>Config(); $view-\>OrderUploadConfig = $config; if ($request-\>getActionName()=="finish"){ Shopware()-\>Session()-\>bestellnummer = $view-\>ordernumber; die(Shopware()-\>Session()-\>bestellnummer); $view-\>addTemplateDir(dirname(\_\_FILE\_\_).'/Views/'); $view-\>extendsTemplate('frontend/plugins/OrderUpload/template/index.tpl'); } } Ruf ich den Wert nun im Controller ab und schicken diesen per Email an mich, so bleibt die Variable leer: [code]<?php class Shopware_Controllers_Frontend_OrderUpload extends Enlight_Controller_Action
{

	public function indexAction()
		{
			
		}
	
	public function uploadAction()
		{
		$this->View()-\>setTemplate(); $config = Shopware()-\>Plugins()-\>Frontend()-\>OrderUpload()-\>Config(); $file = $\_FILES['Filedata']['tmp\_name']; $fileExtension = explode(".",$\_FILES['Filedata']['name']); $fileExtension = $fileExtension[count($fileExtension)-1]; mail("ottscho@ottscho.de","fileextension",print\_r($fileExtension,true)); mail("ottscho@ottscho.de","test2",print\_r($file,true)); $bestellnummer = Shopware()-\>Session()-\>bestellnummer; mail("ottscho@ottscho.de","bestellnummer",print\_r($bestellnummer,true)); if (!in\_array($fileExtension,array("jpg","tif","pdf","png"))){ mail("ottscho@ottscho.de","fehler",print\_r($file,true)); throw new Enlight\_Exception("Invalid file type"); } $uploadDirectory = Shopware()-\>DocPath().$config-\>directory; mail("ottscho@ottscho.de","pfad",print\_r($uploadDirectory,true)); $filenew = $uploadDirectory."/".md5(uniqid(rand())).".".$fileExtension; mail("ottscho@ottscho.de","file",print\_r($file,true)); mail("ottscho@ottscho.de","newfile",print\_r($filenew,true)); move\_uploaded\_file($file,$filenew); echo '1'; } } ?\> [/code]

hat hier noch jmd einen Tipp?

Das Upload-Script wird ja intern durch Flash aufgerufen - dort wird vermutlich eine neue Session gestartet, deshalb funktioniert das so niciht. Du müsstest die aktuelle Session-ID mit an das Upload-Script übergeben. Also die ID im Template bereitstellen: $view-\>sessionID = session\_id(); Und dann im Template an die URL anhängen, mit der du das UPload-Script definierst. Also irgendwo teilst du dem Flash-Uploader ja mit, welche UPload-URL benutzt werden soll. Dort ?sCoreId={$sessionID} anfügen - dann müsste das funktionieren. Wobei, dann könntest du auf diesen Umweg verzichten und eigentlich die Bestellnummer auch direkt als Parameter an das Upload-Script übergeben :wink:

[quote=“Stefan Hamann”]Das Upload-Script wird ja intern durch Flash aufgerufen - dort wird vermutlich eine neue Session gestartet, deshalb funktioniert das so niciht. Du müsstest die aktuelle Session-ID mit an das Upload-Script übergeben. Also die ID im Template bereitstellen: $view-\>sessionID = session\_id(); Und dann im Template an die URL anhängen, mit der du das UPload-Script definierst. Also irgendwo teilst du dem Flash-Uploader ja mit, welche UPload-URL benutzt werden soll. Dort ?sCoreId={sessionID} anfügen - dann müsste das funktionieren. Wobei, dann könntest du auf diesen Umweg verzichten und eigentlich die Bestellnummer auch direkt als Parameter an das Upload-Script übergeben ;)[/quote] richtig ;) Das Problem ist, sobald ich in der JS Datei an die URL was anhänge, kackt Flash ab. habe ich schon versucht. Das Problem ist, dass die JS Datei komplett ohne Umbrüche und Leerzeichen ist! Kann man die irgendwie automatisch strukturieren? [code] /\* Uploadify v1.6.2 Copyright (C) 2009 by Ronnie Garcia Co-developed by Travis Nickels 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 3 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, see <http:></http:>. \*/ var flashVer=-1;if(navigator.plugins!=null&&navigator.plugins.length\>0){if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){var swVer2=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";var flashDescription=navigator.plugins["Shockwave Flash"+swVer2].description;var descArray=flashDescription.split(" ");var tempArrayMajor=descArray[2].split(".");var versionMajor=tempArrayMajor[0];var versionMinor=tempArrayMajor[1];var versionRevision=descArray[3];if(versionRevision==""){versionRevision=descArray[4]}if(versionRevision[0]=="d"){versionRevision=versionRevision.substring(1)}else{if(versionRevision[0]=="r"){ersionRevision=versionRevision.substring(1);if(versionRevision.indexOf("d")\>0){versionRevision=versionRevision.substring(0,versionRevision.indexOf("d"))}}}var flashVer=versionMajor+"."+versionMinor+"."+versionRevision}}else{if(.browser.msie){var version;var axo;var e;try{axo=new ActiveXObject(“ShockwaveFlash.ShockwaveFlash.7”);version=axo.GetVariable("$version")}catch(e){}flashVer=version.replace(“WIN “,””).replace(",",".")}}flashVer=flashVer.split(".")[0];if(jQuery){(function(a){a.extend(a.fn,{fileUpload:function(b){if(flashVer>=9){a(this).each(function(){settings=a.extend({uploader:“uploader.swf”,script:“uploader.php”,folder:"",height:30,width:110,cancelImg:“cancel.png”,wmode:“opaque”,scriptAccess:“sameDomain”,fileDataName:“Filedata”,displayData:“percentage”,onInit:function(){},onSelect:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){}},b);var d=location.pathname;d=d.split("/");d.pop();d=d.join("/")+"/";var f="&pagepath="+d;if(settings.buttonImg){f+="&buttonImg="+escape(settings.buttonImg)}if(settings.buttonText){f+="&buttonText="+escape(settings.buttonText)}if(settings.rollover){f+="&rollover=true"}f+="&script="+settings.script;f+="&folder="+escape(settings.folder);if(settings.scriptData){var g="";for(var c in settings.scriptData){g+="&"+c+"="+settings.scriptData[c]}f+="&scriptData="+escape(g)}f+="&btnWidth="+settings.width;f+="&btnHeight="+settings.height;f+="&wmode="+settings.wmode;if(settings.hideButton){f+="&hideButton=true"}if(settings.fileDesc){f+="&fileDesc="+settings.fileDesc+"&fileExt="+settings.fileExt}if(settings.multi){f+="&multi=true"}if(settings.auto){f+="&auto=true"}if(settings.sizeLimit){f+="&sizeLimit="+settings.sizeLimit}if(settings.simUploadLimit){f+="&simUploadLimit="+settings.simUploadLimit}if(settings.checkScript){f+="&checkScript="+settings.checkScript}if(settings.fileDataName){f+="&fileDataName="+settings.fileDataName}if(a.browser.msie){flashElement=’

'}else{flashElement=''}if(settings.onInit()!==false){a(this).css("display","none");if(a.browser.msie){a(this).after('

‘);document.getElementById(a(this).attr(“id”)+“Uploader”).outerHTML=flashElement}else{a(this).after(flashElement)}a("#"+a(this).attr(“id”)+“Uploader”).after(’

‘)}a(this).bind(“rfuSelect”,{action:settings.onSelect},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l=“KB”;if(k>1000){k=Math.round(k*0.001*100)*0.01;l=“MB”}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"…"}else{fileName=i.name}a("#"+a(this).attr(“id”)+“Queue”).append(’

[](javascript:$(’#’+a(this).attr()
‘+fileName+" ("+k+l+’) 

‘)}});if(typeof(settings.onSelectOnce)==“function”){a(this).bind(“rfuSelectOnce”,settings.onSelectOnce)}a(this).bind(“rfuCheckExist”,{action:settings.onCheck},function(m,l,j,k,o){var i=new Object();i.folder=d+k;for(var h in j){i[h]=j[h];if(o){var n=h}}a.post(l,i,function®{for(var p in r){if(m.data.action(m,l,j,k,o)!==false){var q=confirm(“Do you want to replace the file '”+r[p]+"’?");if(!q){document.getElementById(a(m.target).attr(“id”)+“Uploader”).cancelFileUpload§}}}if(o){document.getElementById(a(m.target).attr(“id”)+“Uploader”).startFileUpload(n,true)}else{document.getElementById(a(m.target).attr(“id”)+“Uploader”).startFileUpload(null,true)}},“json”)});a(this).bind(“rfuCancel”,{action:settings.onCancel},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr(“id”)+h).fadeOut(250,function(){a("#"+a(this).attr(“id”)+h).remove()})}});a(this).bind(“rfuClearQueue”,{action:settings.onClearQueue},function(){if(event.data.action()!==false){a("#"+a(this).attr(“id”)+“Queue”).contents().fadeOut(250,function(){a("#"+a(this).attr(“id”)+“Queue”).empty()})}});a(this).bind(“rfuError”,{action:settings.onError},function(k,h,j,i){if(k.data.action(k,h,j,i)!==false){a("#"+a(this).attr(“id”)+h+" .fileName").text(i.type+" Error - “+j.name);a(”#"+a(this).attr(“id”)+h).css({border:“3px solid #FBCBBC”,“background-color”:"#FDE5DD"})}});a(this).bind(“rfuProgress”,{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr(“id”)+h+“ProgressBar”).css(“width”,k.percentage+"%");if(j.data.toDisplay==“percentage”){displayData=" - “+k.percentage+”%"}if(j.data.toDisplay==“speed”){displayData=" - “+k.speed+“KB/s”}if(j.data.toDisplay==null){displayData=” “}a(”#"+a(this).attr(“id”)+h+" .percentage").text(displayData)}});a(this).bind(“rfuComplete”,{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr(“id”)+h).fadeOut(250,function(){a("#"+a(this).attr(“id”)+h).remove()});a("#"+a(this).attr(“id”)+h+" .percentage").text(" - Completed")}});if(typeof(settings.onAllComplete)==“function”){a(this).bind(“rfuAllComplete”,settings.onAllComplete)}})}},fileUploadSettings:function(b,c){a(this).each(function(){document.getElementById(a(this).attr(“id”)+“Uploader”).updateSettings(b,c)})},fileUploadStart:function(b){a(this).each(function(){document.getElementById(a(this).attr(“id”)+“Uploader”).startFileUpload(b,false)})},fileUploadCancel:function(b){a(this).each(function(){document.getElementById(a(this).attr(“id”)+“Uploader”).cancelFileUpload(b)})},fileUploadClearQueue:function(){a(this).each(function(){document.getElementById(a(this).attr(“id”)+“Uploader”).clearFileUploadQueue()})}})})(jQuery)}; [/code]

So, habe nun eine Seite gefunden, welche den Code wieder strukturiert: http://jsbeautifier.org/ Jetzt macht die JS Datei auch einen Sinn.

Mhhh, leider komme ich nicht weiter. Ich versuche nun die Variable über GET an den Controller zu übergeben. Soweit sieht alles okay aus. <embed width="110" height="30" type="application/x-shockwave-flash" wmode="opaque" allowscriptaccess="sameDomain" name="fileUploadUploader" class="fileUploaderBtn" id="fileUploadUploader" quality="high" src="/engine/Shopware/Plugins/Community/Frontend/OrderUpload/Views/frontend/plugins/OrderUpload/_resources/uploadify/uploader.swf?fileUploadID=fileUpload&amp;pagepath=/shopware.php/sViewport,checkout/&amp;buttonText=Datei%20suchen...&amp;script=http://www.shopware.vm/shopware.php/sViewport,OrderUpload/sAction,upload&amp;folder=&amp;ordernumber=123123123&amp;btnWidth=110&amp;btnHeight=30&amp;wmode=opaque&amp;fileDesc=Supported%20Files&amp;fileExt=*.ai;*.psd;*.ps;*.jpg;*.tif;*.pdf;*.png;*.zip;*.rar&amp;auto=true&amp;fileDataName=Filedata">

Aber im Controller kommt nichts an :frowning:
Jmd eine Idee woran das liegen könnte?

Controller:

[code]

<?php class Shopware_Controllers_Frontend_OrderUpload extends Enlight_Controller_Action { public function indexAction() { } public function uploadAction() { $ordernumber = strval($this->Request()->ordernumber); mail("ottscho@ottscho.de","get1",print_r('get1: '.$_GET['ordernumber'],true)); mail("ottscho@ottscho.de","get2",print_r('get2: '.strval($this->Request()->ordernumber),true)); $this->View()->setTemplate(); $config = Shopware()->Plugins()->Frontend()->OrderUpload()->Config(); $file = $_FILES['Filedata']['tmp_name']; $fileExtension = explode(".",$_FILES['Filedata']['name']); $fileExtension = $fileExtension[count($fileExtension)-1]; mail("ottscho@ottscho.de","fileextension",print_r($fileExtension,true)); mail("ottscho@ottscho.de","test2",print_r($file,true)); $bestellnummer = Shopware()->Session()->bestellnummer; mail("ottscho@ottscho.de","bestellnummer",print_r("bestellnummer: ".$bestellnummer,true)); $uploadDirectory = Shopware()->DocPath().$config->directory; mail("ottscho@ottscho.de","pfad",print_r($uploadDirectory,true)); $filenew = $uploadDirectory."/".$ordernumber."_".md5(uniqid(rand())).".".$fileExtension; mail("ottscho@ottscho.de","file",print_r($file,true)); mail("ottscho@ottscho.de","newfile",print_r($filenew,true)); move_uploaded_file($file,$filenew); echo '1'; } } ?> [/code]

Probiere es mal so: http://www.shopware.vm/shopware.php/sVi … …weiter….

Es geht :slight_smile: Super, du bist heute mein persönlicher Held. Endlich kann ich das Thema beenden…