| « Tópico anterior |
|
|
Desenvolvimento e design |
|
|
Próximo tópico » |
Entre com seu usuário e senha ou registre-se no site para participar do forum.
| Autor | Mensagem |
|
William Jose
|
Segunda-Feira, 9 de Novembro de 2009, 7:46:12
Procura por Atributos dum formularioAlo pessoal...Sou novato no Ez Publish, e gostaria q me ajudassem. Quero fazer pesquisas atravez dum formulario de insercoes que criei ja. 'E assim... 1. Criei um formulario como uma classe de "content"; 2. Ja fiz os overrides todos templates necessarios para que use o meu formulario; 3. O formulario 'e sobre insercoes de dados pessoais relativos aos trabalhadores de uma empersa. 4. Os dados inseridos e feito Submit.. para a criacao de um novo trabalhador, consigo ver apartir da interface administrativa do ez publish Setup ---> Collected Information. 5. Alterei o template do advanced Search, esta agora apenas com um text box e um selection box (para seleccionar os parametros pelo qual deve ser procurado o trabalhador... ex: nome, idade, etc...) O que eu gostaria de saber é o seguinte: 1. Que ficheiros mais ou templates que eu preciso mexer para fazer o que pretendo? 2. Como faco para que apartir do que seja escrito no Text box do advanced search, seja pesquisado o(s) trabalhador(es), apartir do selection feito (selection box - atributo de pesuisa)? Agradecia vossas respostas!!! PLEASE HELP...! |
|
|
Segunda-Feira, 9 de Novembro de 2009, 17:46:33
Oi William,
Pelo que percebi, você está utilizando a coleta de informações para gerar conteúdo, desta forma fica dificil alcançar o seu objetivo. A coleta de informações tem como alvo fazer enquetes simples e formulários de contato, onde esse registro possa ser enviado por email. Sugiro o seguinte: Desmarque os itens como coleta de informações e habilite os usuários que vão cadastrar o conteúdo para que tenham as permissões necessárias para criar e/ou editar estes conteúdos. Caso você deseje que os usuários não precisem de registro no site, basta que estas permissões sejam atribuídas aos usuários anônimos. Não esqueça de marcar os atributos que você deseja procurar como "Procuráveis". Boa sorte |
|
|
Quarta-Feira, 11 de Novembro de 2009, 6:51:19
Ola Renen... obrigado pela sua dica.
Ja o fiz, dei as devidas permissoes aos usuarios anonimos. Mas, se tiro dos campos do formulario o "information collector", nao mostra no formulario os campos para ser preenchidos (text boxs)... apenas mostra os titulos dos campos. entao voltei a colocar o "information collector". Eu estou com problemas em fazer o search dos trabalhadores inseridos pelos users. Estou tentando alterar o proprio template do advancedsearch (porque 'e muito semelhante ao que eu preciso), apenas dexei um campo de procura e o selection box (alterei os values do selection para atributos que eu preciso, pelo qual seja feita a pesquisa do trabalhador, nome, idade, etc...) Alguma ajuda para o q devo acrescentar ou alterar no codigo do advancedsearch.tpl para que retorne m todas informacoes duma insercao feita dum trabalhador??? E sera que o advancedsearch.tlp 'e unico template que preciso alterar, para o que pretendo? ou devo mexe em mais alguns files?!?! PLEASE...! |
|
|
Quarta-Feira, 11 de Novembro de 2009, 18:22:25
Oi Willian,
Faça conforme havia sugerido antes em desmarcar os atributos como coletor de informações, ele não serve para o que você deseja, a não ser que você crie uma extensão para pesquisar da forma desejada nas informações coletadas. Utilize um botão de adicionar e outro de edição O de adicionar:
<form method="post" action={"content/action/"|ezurl}>
<input type="submit" name="NewButton" value="Novo Cadastro" />
<input type="hidden" name="ContentNodeID" value="{$node.node_id}" />
<input type="hidden" name="ContentObjectID" value="{$node.contentobject_id}" />
<input type="hidden" name="NodeID" value="{$node.node_id}" />
<input type="hidden" name="ClassIdentifier" value="forum_reply" />
</form>
O de editar:
<form method="post" action={"content/action/"|ezurl}>
<input type="hidden" name="ContentObjectID" value="{$node.object.id}" />
<input type="submit" name="EditButton" value="{'Edit'|i18n('design/base')}" />
</form>
Você também pode criar override de templates para a edição. Abs |
|
|
Quinta-Feira, 12 de Novembro de 2009, 5:15:22
Alo Renan... obrigado mais uma vez pela resposta.
Isso que m disse eu ja fiz. Aqui vai o meu codigo do template do formulario de insercao que criei. O butao d submit tem ai como m disse. Esse objecto 'e criado. Mas o q eu preciso, 'e depois das insercoes feitas atraves desse formulario, como eu procuro por ela atravez do search? Eu vou lhe enviar enviar aqui o codigo do advancedsearch.tpl q alterei tmbm... para ver o que to a fazer de errado, ou o que deveria fazer. Aguardando resposta....
{* formulario_facilitador_form - Full view *}
<div class="border-box">
<div class="border-tl"><div class="border-tr">
<div class="border-tc"></div></div></div>
<div class="border-ml"><div class="border-mr">
<div class="border-mc float-break">
<div class="content-view-full">
<div class="class-membership-application-form">
<div class="attribute-header">
<h1>{$node.name|wash()}</h1> </div>
{* validation *}
{include name=Validation uri='design:content/collectedinfo_validation.tpl' class='message-warning' validation=$validation collection_attributes=$collection_attributes}
<form method="post" action={"content/action"|ezurl}>
{* nome_facilitador *} <h4>{$node.data_map.nome_facilitador.contentclass_attribute.name}</h4> <div class="attribute-nome-facilitador"> {attribute_view_gui attribute=$node.data_map.nome_facilitador} </div>
{* organizacao_facilitador *} <h4>{$node.data_map.organizacao_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-organizacao_facilitador">
{attribute_view_gui attribute=$node.data_map.organizacao_facilitador} </div>
{* endereco_facilitador *} <h4>{$node.data_map.endereco_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-endereco_facilitador">
{attribute_view_gui attribute=$node.data_map.endereco_facilitador}
</div>
{* telef_facilitador *} <h4>{$node.data_map.telef_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-telef_facilitador">
{attribute_view_gui attribute=$node.data_map.telef_facilitador}
</div>
{* cell1_facilitador *} <h4>
{$node.data_map.cell1_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-cell1_facilitador">
{attribute_view_gui attribute=$node.data_map.cell1_facilitador}
</div>
{* cell2_facilitador *} <h4>
{$node.data_map.cell2_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-cell2_facilitador">
{attribute_view_gui attribute=$node.data_map.cell2_facilitador}
</div>
{* email_facilitador *} <h4>
{$node.data_map.email_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-email_facilitador">
{attribute_view_gui attribute=$node.data_map.email_facilitador}
</div>
{* observacoes_facilitador *} <h4>
{$node.data_map.observacoes_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-observacoes_facilitador">
{attribute_view_gui attribute=$node.data_map.observacoes_facilitador}
</div>
{* actividade_facilitador *} <h4>
{$node.data_map.actividade_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-actividade_facilitador">
{attribute_view_gui attribute=$node.data_map.actividade_facilitador}
</div>
{* linguas_facilitador *} <h4>{$node.data_map.linguas_facilitador.contentclass_attribute.name}</h4> <div class="attribute-linguas_facilitador">
{attribute_edit_gui attribute=$node.data_map.linguas_facilitador}
</div>
{* experiencia_facilitador *} <h4>{$node.data_map.experiencia_facilitador.contentclass_attribute.name}</h4> <div class="attribute-experiencia_facilitador">
{attribute_edit_gui attribute=$node.data_map.experiencia_facilitador}
</div>
{* referencia_facilitador *} <h4>{$node.data_map.referencia_facilitador.contentclass_attribute.name}</h4> <div class="attribute-referencia_facilitador">
{attribute_edit_gui attribute=$node.data_map.referencia_facilitador}
</div>
{* metodologia_facilitador *} <h4>{$node.data_map.metodologia_facilitador.contentclass_attribute.name}</h4> <div class="attribute-metodologia_facilitador">
{attribute_edit_gui attribute=$node.data_map.metodologia_facilitador}
</div>
{* avaliacao_facilitador *} <h4>
{$node.data_map.avaliacao_facilitador.contentclass_attribute.name}
</h4> <div class="attribute-avaliacao_facilitador">
{attribute_edit_gui attribute=node.data_map.avaliacao_facilitador}
</div>
{* fotografia_facilitador *} <h4>{$node.data_map.fotografia_facilitador.contentclass_attribute.name}</h4> <div class="attribute-fotografia_facilitador">
{attribute_edit_gui attribute=$node.data_map.fotografia_facilitador}
</div>
<div class="content-action">
<input type="submit" class="defaultbutton" name="ActionCollectInformation" value="{"Submeter formulario"|i18n("design/ezwebin/full/feedback_form"----------------------------------------------------------------------------------------------------
{* search/facilitadores.tpl *}
{let search=false()
search_nome_facilitador=concat('Content_search_attribute_fulltext_classattribute_id[]'|urlencode,'=',344,
'&','Content_search_attribute_fulltext_value[]'|urlencode,'=',
$search_array_by_class_attribute_id['344']['value'],'&')
search_organizacao=concat('Content_search_attribute_fulltext_classattribute_id[]'|urlencode,'=',345,
'&','Content_search_attribute_fulltext_value[]'|urlencode,'=',
$search_array_by_class_attribute_id['345']['value'],'&')
search_metodologia=concat('Content_search_attribute_fulltext_classattribute_id[]'|urlencode,'=',358,
'&','Content_search_attribute_fulltext_value[]'|urlencode,'=',
$search_array_by_class_attribute_id['358']['value'],'&')
search_experiencia=concat('Content_search_attribute_fulltext_classattribute_id[]'|urlencode,'=',356,
'&','Content_search_attribute_fulltext_value[]'|urlencode,'=',
$search_array_by_class_attribute_id['356']['value'],'&')
search_lingua=concat('Content_search_attribute_fulltext_classattribute_id[]'|urlencode,'=',354,
'&','Content_search_attribute_fulltext_value[]'|urlencode,'=',
$search_array_by_class_attribute_id['354']['value'],'&')
}
{def $search=false()}
{if $use_template_search}
{set $page_limit=10}
{switch match=$search_page_limit}
{case match=1}
{set $page_limit=5}
{/case}
{case match=2}
{set $page_limit=10}
{/case}
{case match=3}
{set $page_limit=20}
{/case}
{case match=4}
{set $page_limit=30}
{/case}
{case match=5}
{set $page_limit=50}
{/case}
{/switch}
{set $search=fetch(content,search,
hash(text,$search_text,
section_id,$search_section_id,
subtree_array,$search_sub_tree,
class_id,$search_contentclass_id,
class_attribute_id,$search_contentclass_attribute_id,
offset,$view_parameters.offset,
publish_date,$search_date,
limit,$page_limit))}
{set $search_result=$search['SearchResult']}
{set $search_count=$search['SearchCount']}
{set $stop_word_array=$search['StopWordArray']}
{set $search_data=$search}
{/if}
<div class="border-box">
<div class="border-tl"><div class="border-tr"><div class="border-tc"></div></div></div>
<div class="border-ml"><div class="border-mr"><div class="border-mc float-break">
<div class="content-advancedsearch">
<form name="searchform" id="searchform" action={"/content/advancedsearch"|ezurl} method="get">
<div class="attribute-header">
<h1 class="long">{'Pesquisa do Facilitador'|i18n( 'design/ezwebin/content/advancedsearch' )}</h1>
</div>
<div class="block">
<label>{'Palavra/Frase a pesquisar'|i18n( 'design/ezwebin/content/advancedsearch' )}</label><div class="labelbreak"></div>
<input class="box" type="text" size="40" name="SearchText" value="{$full_search_text|wash}" />
</div>
<div class="block">
<div class="element">
<label>{'Pesquisar por:'|i18n( 'design/ezwebin/content/advancedsearch' )}</label><div class="labelbreak"></div>
<select name="SearchOp">
<option value="1" {if eq( $search_op, '1' )}selected="selected"{/if}>{'Nome'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="2" {if eq( $search_op, '2' )}selected="selected"{/if}>{'Organizacao'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="3" {if eq( $search_op, '3' )}selected="selected"{/if}>{'Experiencia'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="4" {if eq( $search_op, '4' )}selected="selected"{/if}>{'Metodologia'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="5" {if eq( $search_op, '5' )}selected="selected"{/if}>{'Lingua'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
</select>
</div>
{if $use_template_search}
<div class="element">
<label>{'Display per page'|i18n('design/ezwebin/content/advancedsearch')}</label><div class="labelbreak"></div>
<select name="SearchPageLimit">
<option value="1" {if eq( $search_page_limit,1 )}selected="selected"{/if}>{'5 items'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="2" {if or( array( 1, 2, 3, 4, 5 )|contains( $search_page_limit )|not, eq( $search_page_limit, 2 ) )}selected="selected"{/if}>{'10 items'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="3" {if eq( $search_page_limit, 3 )}selected="selected"{/if}>{'20 items'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="4" {if eq( $search_page_limit, 4 )}selected="selected"{/if}>{'30 items'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
<option value="5" {if eq( $search_page_limit, 5 )}selected="selected"{/if}>{'50 items'|i18n( 'design/ezwebin/content/advancedsearch' )}</option>
</select>
</div>
{/if}
{foreach $search_sub_tree as $sub_tree}
<input type="hidden" name="SubTreeArray[]" value="{$sub_tree}" />
{/foreach}
<div class="break"></div>
</div>
<div class="buttonblock">
<input class="button" type="submit" name="SearchButton" value="{'Pesquisar'|i18n('design/ezwebin/content/advancedsearch')}" />
</div>
{if or( $search_text, eq( ezini( 'SearchSettings', 'AllowEmptySearch', 'site.ini'), 'enabled' ) )}
<br/>
{switch name=Sw match=$search_count}
{case match=0}
<div class="warning">
<h2>{'No results were found when searching for "%1"'|i18n( 'design/ezwebin/content/advancedsearch', , array( $search_text|wash ) )}</h2>
</div>
{/case}
{case}
<div class="feedback">
<h2>{'Search for "%1" returned %2 matches'|i18n( 'design/ezwebin/content/advancedsearch',,array( $search_text|wash, $search_count ) )}</h2>
</div>
{/case}
{/switch}
{if $search_result|count()}
{foreach $search_result as $element}
{node_view_gui view=line content_node=$element}
{/foreach}
{/if}
{/if}
{include name=navigator
uri='design:navigator/google.tpl'
page_uri='/content/advancedsearch'
page_uri_suffix=concat('?SearchText=',$search_text|urlencode,'&PhraseSearchText=',$phrase_search_text|urlencode,'&SearchContentClassID=',$search_contentclass_id,'&SearchContentClassAttributeID=',$search_contentclass_attribute_id,'&SearchSectionID=',$search_section_id,$search_timestamp|gt(0)|choose('',concat('&SearchTimestamp=',$search_timestamp)),$search_sub_tree|gt(0)|choose( '', concat( '&', 'SubTreeArray[]'|urlencode, '=', $search_sub_tree|implode( concat( '&', 'SubTreeArray[]'|urlencode, '=' ) ) ) ),'&SearchOp=',$search_op,'&SearchPageLimit=',$search_page_limit)
item_count=$search_count
view_parameters=$view_parameters
item_limit=$page_limit}
</form>
</div>
</div></div></div>
<div class="border-bl"><div class="border-br"><div class="border-bc"></div></div></div>
</div>
|
|
|
Quinta-Feira, 12 de Novembro de 2009, 15:21:27
O que você precisa é respirar fundo e entender os conceitos usando a documentação, pois nós poderiamos ajudar no teu problema e colocar para funcionar de imediato, mas para você conseguir enxergar por si mesmo creio que o caminho é ir para as bases.
A busca dentro do eZ Publish é como qualquer outra função fetch para pegar e filtrar dados. http://ez.no/doc/ez_publish/techn...dules/content/fetch_functions/search A função de listagem serve como bom ponto de partida para entender as fetch functions. http://ez.no/doc/ez_publish/techn...modules/content/fetch_functions/list Confira a lista dos tipos de atributos pesquisáveis http://ez.no/doc/ez_publish/technical_manual/4_x/reference/datatypes |
|
|
Sexta-Feira, 13 de Novembro de 2009, 9:08:43
Alo Renan... mais uma vez, thanks pelas suas dicas...
Vi os links k m passou e ja ntendi minimamente como se faz os fetchs e search. O prolblema, 'e que antes eu nao tinha entendido dessa de entrar em modo de edicao para a criacao de um novo objecto apartir de formulario... e pensei que como ja xtava no "collected infrmation" o objecto ja xtivesse criado... (agora ntendi o q vce kiz dizer com "entrou em modo de edicao?" Agora ja criei o botao de adicionar.. (Novo Cadastro), que entra no modo de edicao. Desmarkei d todos campos o "information collector". Ja entro no modo de edicao, mas como o edit.tpl que 'e usado por defeito apresenta informacoes (desnecessarias para o user) acima do campo que eu nao necessito, queria usar o meu template de formulario que lhe passei ai anteriormente (Formulario_facilitador). Fiz o override para usar-lo no modo de edicao. todos campos que estavam como attribute_view_gui attribute <code> troquei para <code> attribute_edit_gui attribute <code> Mas quando entro la apartir do butao "Novo Cadastro", nao mostra nenhum dos campos de input. e apenas mostra o butao de "submeter formulario"...!!! O que deve ser??? Alguma dica? |
|
|
Sexta-Feira, 13 de Novembro de 2009, 12:03:11
Oi William,
Creio q seu você precisa fazer antes um override do template de edição, isto é, do content/edit.tpl Dá uma olhada na documentação para as condições deste override. http://ez.no/doc/ez_publish/techn...ference/template_override_conditions Não esquece de habilitar a saída do debug e listar os templates utilizados. Abs |
|
|
Sábado, 21 de Novembro de 2009, 9:12:15
Alo Renan... ja consgui fazer quase a maioria das coisas que keria, gracas a suas ajudas. THANKS.
Agora to com um otro probleminha.. nao sei se poderia m ajudar a resolver. E' o seguinte... Estou usando um codigo javascript num dos templates e pretendo alterar o valor da variavel $search_op sempre que for chamada a funcao. E pretendo usar essa variavel $search_op (ja alterada), fora desse javascript. Assim como fiz no codigo abaixo, a variavel retorna m o caracter "i". Pretendo que ela m retorne o valor que o "i" contem. Alguma dica como faco?! PLEASE.
<script type="text/javascript"> <!--
{def $search_op = 0}
function changeLocation(menuObj)
{literal}{{/literal}
var i = menuObj.selectedIndex;
if(i > 0)
{literal}{{/literal}
alert(i);
{set $search_op = i }
{literal}}{/literal}
{literal}}{/literal}
-->
</script>
|
|
|
Segunda-Feira, 23 de Novembro de 2009, 18:25:56
Acho melhor você pensar em utilizar ajax, pois para alterar a opção dinamicamente usando uma interação de linguagens entre cliente (javascript) e servidor (ez template) é inviável sem o refresh da página a não ser com ajax. Seria essa a sua questão?
Abs |
|
|
Terça-Feira, 1 de Dezembro de 2009, 9:43:27
Alo Renan, to com uns problemas quanto a implementacao de uns fetchs condicionais
ja tentei d muitas formas mas nada feito... Vce pode m dar o seu MSN para eu lhe xclarecer as minhas duvidas e para uma interacao mais rapida? PLEASE. 'E k ja to a correr fora do tempo para entregar ess trabalho. Agradecia se podesse m mandar o seu MSN ou add me: william_jose1@live.com abs. |
|
|
Terça-Feira, 1 de Dezembro de 2009, 12:31:08
Oi William,
Aqui na empresa o pessoal proibe o uso de msn e afins, portanto o jeito é ir por aqui mesmo. Abs |
|
|
Quarta-Feira, 2 de Dezembro de 2009, 9:54:05
Ola Renan.. Ok, ntendo. Bem, ntao aki vao os problemas:
1. Tenho um Folder, q contem contem objectos do tipo "facilitador", criados apartir da submissao dakele formulario (axu k deve se lembrar, tem codigo acima num dos posts). Fiz um fetch do folder pelo node id do folder, que m retorna como resultado os filhos do folder (todos facilitadores inseridos). Agora dentro dum ciclo pretendo correr todos os objectos "facilitador", mas quero os condeudos de um certo campo em todos os "facilitador" (q sao difrentes).
{def $meuFolder=fetch('content','node',hash('node_id',66))}
{let $children=fetch(content, list, hash(parent_node_id, $meuFolder.node_id,
sort_by, $meuSearch.sort_array))}
{foreach $children as $element}
<h2>{$element.object.nome_facilitador....???}</h2> ---->>> Aqui pretendo mostrar conteudo do
campo "nome_facilitador" (em suma,
nome de cada facilitador inserido). Como
posso fazer isso?
{node_view_gui view=line content_node=$element}
{/foreach}
2. Otro problema 'e como atribuir o valor do conteudo dum campo de texto (HMTL) para uma variavel do eZpublish, ao se submeter um form?
<div class="block">
<label>{'Nome'|i18n( 'design/ezwebin/content/advancedsearch' )}</label><div class="labelbreak"></div>
{def $attr1=fetch( 'content', 'class_attribute', hash( 'attribute_id', 344 ) )}
<input type="hidden" name="Content_search_attribute_fulltext_classattribute_id[]" value="344" />
<input class="box" type="text" size="40" name="SearchText1" value="{$full_search_text|wash}" id="nome_facilitador"/>
</div>
{def v1 = [*o que estiver escrito no campo "Searchtext1"] } ---->>> como posso fazer isso?
Por enquanto sao essas duvidas que preciso xclarecer. Agradeco a sua colaboracao ja em adiantado. Abs. |
|
|
Segunda-Feira, 7 de Dezembro de 2009, 20:11:31
Oi William
1 - Para dar a saída dos conteúdos que você deseja utilizar, utilize o operador attribute( show ) para inspecionar os atributos de um array ou objeto, depois basta "pegar" o que precisa.
{$elemento|attribute( show }</h2>
Doc: http://ez.no/doc/ez_publish/techn...te_operators/miscellaneous/attribute 2 - Para atribuir um campo de formulário quando postado para uma variável do eZ Publish, você utiliza o operador ezhttp:
{def $v1 = ezhttp( 'Searchtext1', 'get' )}
O Nome do primeiro parâmetro é o nome do campo do formulário que queremos pegar, o segundo é o tipo desse formulário, ou seja: get ou post. Doc: http://ez.no/doc/ez_publish/techn...ta_and_information_extraction/ezhttp |