Comunidad de diseño web y desarrollo en internet online

Problema de permisos en Flex 2

Citar            
MensajeEscrito el 29 Nov 2006 07:54 am
Bueno, para quedar bien con mi jefe, se me ocurrió montar una web en la intranet sencillita en la cual los Comerciales tuviesen todos los productos y se pudiesen descargar la imagen del producto en alta resolución, en baja resolución y la hoja de producto en pdf. Como tengo ganas de empezar a desarrollar en Flex, me dije "Vamo' a proba' con Flex".

asique el fabricantes.xml es algo así:

Código :

<?xml version="1.0" encoding="UTF-8"?>
<fabricantes>
   <fabricante label="Escoja un Fabricante">
      <producto name="Escoja un Fabricante">
         <img></img>
         <imgp></imgp>
         <pdf></pdf>
      </producto>
   </fabricante>
   <fabricante label="Plantronics">
      <producto name="Escoja un Producto">
         <img></img>
         <imgp></imgp>
         <pdf></pdf>
      </producto>
      <producto name="A100">
         <img>Datos/plantronics/a100.jpg</img>
         <imgb>Datos/plantronics/a100b.jpg</imgb>
         <imgp>Datos/plantronics/a100p.jpg</imgp>
         <pdf>Datos/plantronics/a100.pdf</pdf>
      </producto>
   </fabricante>
   <fabricante label="Panasonic">
      <producto name="Escoja un Producto">
         <img></img>
         <imgp></imgp>
         <pdf></pdf>
      </producto>
      <producto name="KX-TG7100">
         <img>Datos/panasonic/kxtg7100.jpg</img>
         <imgb>Datos/panasonic/kxtg7100b.jpg</imgb>
         <imgp>Datos/panasonic/kxtg7100p.jpg</imgp>
         <pdf>Datos/panasonic/kxtg7100.pdf</pdf>
      </producto>
   </fabricante>
</fabricantes>


Y el código en Flex es:

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:XML id="fabricantes" source="Datos/fabricantes.xml" format="e4x" xmlns="" />
<mx:Script>
   <![CDATA[
   import mx.controls.Alert;
   public function ira(urlair:String):void {
      if(urlair != ""){
         var u:URLRequest = new URLRequest(urlair); 
         navigateToURL(u,"_blank");
      } else {
         if(combo_fabricante.text == "Escoja un Fabricante"){
            Alert.show('Debe elegir un Fabricante primero.');
         } else if(combo_producto.text == "Escoja un Producto"){
            Alert.show('Debe elegir un Producto primero');
         } else {
            Alert.show('El archivo no esta disponible en este momento, pongase en contacto con el administrador');
         }
      }
   }
   ]]>
</mx:Script>
   <mx:Number id="fabricanteseleccionado">{ combo_fabricante.selectedIndex }</mx:Number>
   <mx:Number id="productosel">{ combo_producto.selectedIndex }</mx:Number>
   <mx:Panel width="455" height="355" layout="absolute" id="main" title="SCT Telecom - Base de Datos de Productos" horizontalAlign="center" verticalAlign="middle" horizontalCenter="0" verticalCenter="0">
      <mx:ComboBox change="{ combo_producto.dataProvider = fabricantes..fabricante[fabricanteseleccionado]..producto.@name }" x="265" y="10" id="combo_fabricante" dataProvider="{ fabricantes..fabricante.@label }"></mx:ComboBox>
      <mx:Label x="139" y="12" text="Escoja un Fabricante"/>
      <mx:Label x="148" y="46" text="Escoja un Producto"/>
      <mx:ComboBox id="combo_producto" x="265" y="44" change="{ imgp.source = fabricantes..fabricante[fabricanteseleccionado]..producto[productosel].imgp}"></mx:ComboBox>
      <mx:Image x="0" y="0" width="124" height="84" source="logosct.jpg"/>
      <mx:Image x="10" y="130" width="175" height="175" id="imgp" autoLoad="true"/>
      <mx:Button x="265" y="172" id="butpdf" label="PDF" width="109" click="{ ira(fabricantes..fabricante[fabricanteseleccionado]..producto[productosel].pdf) }"/>
      <mx:Button x="265" y="217" id="butimagen" label="Imágen Alta" width="109" click="{ ira(fabricantes..fabricante[fabricanteseleccionado]..producto[productosel].img) }"/>
      <mx:Button x="265" y="262" id="butimagenb" label="Imágen Baja" width="109" click="{ ira(fabricantes..fabricante[fabricanteseleccionado]..producto[productosel].imgb) }"/>
   </mx:Panel>
   
</mx:Application>


Y funciona de maravilla, se ve bonito y todo. El asunto es cuando copio el directorio a la intranet (en este caso el disco I:\ ). Y me salta esto:

Código :

SecurityError: Error #2148: El archivo SWF file://I:\sct\HOJAS DE PRODUCTO\Base de Datos de Productos\SCTPB.swf no puede acceder al recurso local Datos/plantronics/a100.pdf. Sólo los archivos SWF locales del sistema de archivos y de confianza pueden acceder a los recursos locales.
   at global/flash.net::navigateToURL()
   at SCTPB/ira()
   at SCTPB/__butpdf_click()


Asique consultando en la web de ayuda de Adobe me enteré que el problema se da cuando pones como objetivo enlaces/archivos que se encuentren en otro dominio que el swf que sean llamados a ventanas "_self", "_top" , etc, pero no a "_blank" o un nombre de ventana personalizada. Entonces dije "De P. Madre, lo corrijo...." Y el error seguía ahí. Asique investigando descubrí que al html tenía que ponerle dentro del codigo "embed" y como parámetro de "object" el legendario:

Código :

allowScriptAccess="always"


Asique llevo 2 días partiendome la cabeza contra el monitor y no encuentro el error. La verdad, me estan empezando a dar ataques psicóticos :lol: :lol: :lol:

A ver si la gente de CLab (que de aquí he aprendido mucho) tiene alguna idea de a porque pasa esto. Y porque al cambiar la carpeta completa de sitio considera que los archivos de pronto están en otro dominio :P, siendo que estan en una carpeta dentro del "bin".

Por D3N14M

106 de clabLevel

1 tutorial

Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 30 Nov 2006 09:24 am
Bueno, he encontrado una solución, aunque me parece un poco del estilo "Lo atamos con alambre", aunque funciona. Para resolver este problema (que espero que no sea el único %$&$%&$ al que le pasan estos errores XDXD), hay que seguir los siguientes sencillos pasos:

1º: Ir al menu Project (Proyecto) y hacer click en Properties (Propiedades).



2º: Entrar en el tab "Flex Compiler"



3º: Agregar al campo de texto "Additional compiler arguments" el siguiente texto:

Código :

-use-network=false



Y listo, la siguiente vez que compiles, Flex no pondrá quejas cuando intentes acceder a un enlace que se encuentre en otro dominio.

Eso sí, repito, me parece una solución un tanto "rústica", si alguien sabe la forma correcta de hacerlo (es decir, el código AS3 adecuado), por favor, hagalo saber. ;)

Por D3N14M

106 de clabLevel

1 tutorial

Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 03 Feb 2007 12:03 am
use tu codigo para probarlo pero me sale un error :S

Severity Description Resource In Folder Location Creation Time Id
2 Problem finding external XML: Datos/fabricantes.xml flex.mxml flex line 3 2 de febrero de 2007 18:51:15 157

Por tomili

36 de clabLevel



Genero:Masculino  

Arequipa-Perú

msie
Citar            
MensajeEscrito el 08 Jul 2008 04:57 pm
Usé tu "alambre" para atar mi proyecto, muchas gracias!

Por gmma

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Jul 2008 05:50 pm
No es un alambre, es la forma en que se cambia el Sandbox en Flex

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.