Pergunta

Eu tenho uma representação em árvore de páginas em um aplicativo CMS.Eu entendo como persistir a árvore no banco de dados.No entanto, não tenho uma boa maneira de:

A) Reordene as subpáginas em uma página pai específica.
B) Fornecer uma implementação de UI que permita ao usuário alterar a ordem.

Alguma sugestão?

Foi útil?

Solução

Alterar a ordem em si exigirá que você armazene algum tipo de ordem junto com cada página do banco de dados.Apenas o valor atual mais alto/mais baixo +/- 1 provavelmente seria um bom ponto de partida.Uma vez que você tenha essa ordem, a reordenação se torna um caso de troca de dois valores ou alteração do valor de uma página para ficar entre duas outras (você poderia usar flutuadores, eu acho, mas pode ser necessário renumerar se você dividir demais vezes).

De qualquer forma, depois de conseguir isso, você precisará de uma IU.Eu vi uma abordagem muito simples de 'trocar isso pelo acima/abaixo', que pode ser um simples link da web ou uma chamada AJAX.Você também pode apresentar todos os valores da página ao usuário e pedir-lhe que os renumere conforme achar necessário.Se você quiser ser sofisticado, arrastar e soltar JavaScript pode ser uma boa abordagem.eu usei ExtJS e Mootools como enquadramentos neste tipo de área.Se você não precisa de todos os widgets Extjs, eu diria bem longe disso no futuro, e dê uma olhada em algo como o Mootools Demonstração de classificáveis ​​dinâmicos.

Outras dicas

A) Eu tenho um aplicativo CMS semelhante e armazeno um valor ordinal com a página de uma árvore específica e classifico esse valor - como muitas das minhas páginas aparecem em sites completamente diferentes, tenho que manter o número ordinal em uma página/árvore combinação.

B) Eu também gostaria de uma maneira melhor de fazer isso.Atualmente eles clicam no nó na visualização em árvore e na tela da página principal podem mover a página.Eu tentei arrastar e soltar com java script e outras soluções, mas meus usuários nunca conseguiram trabalhar com isso sem segurar muito as mãos.Estarei interessado nas respostas a esta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top