NodeModal
João Borsoi, #249, novembro 2016Palavras-chave: modal
Descrição
Este serviço consiste numa função que abre um modal na aplicação, contendo o formulário para cadastro ou edição de uma pasta ou documento da biblioteca do avalanche.
Os campos do formulário em caso de uma pasta são sempre os mesmos. Os campos do formulário de um documento está associado ao tipo do documento, identficado pela pasta na qual ele se encontra ou onde será criado.
Opções
parâmetro | tipo | obrigatório | padrão | descrição |
docId | inteiro | não | docId do documento para ser recuperado | |
folderId | inteiro | não | folderId da pasta para ser recuperada | |
path | texto | não | / | Caminho da pasta onde se deseja recuperar o formulário para cadastro de uma nova pasta ou documento. Deve ser usado quando não se utiliza os parâmetros docId e folderId |
folder | booleano | não | falso | Indica quando deve-se recuperar o formulário de uma nova pasta. Se for falso será recuperado o formulário de um novo documento. Deve ser usado em conjunto com o parãmetro path, quando não se utiliza os parâmetros docId e folderId |
title | texto | sim | Texto de título do modal | |
excludeFields | array | não | Array contendo nome de campos a serem excluídos do formulário | |
extraFields | objeto | não | Objeto com campos adicionais com respectivos valores para serem enviados quando o formulário for salvo. | |
nodeService | objeto | não | Documents ou Folders | Indica referência ao serviço do tipo $resource que deve ser usado pelo modal para realizar as operações CRUD. |
docLinks | booleano | não | falso | Indica quando a leitura de um documento da biblioteca deve retornar sua lista de links (array contendo nome das pastas onde o documento se encontra na biblioteca) |
extraParams | objeto | não | Parâmetros adicionais para serem passados quando o formulário for salvo (ação save do $resource utilizado) | |
node | objeto | não | Dados do documento ou pasta para ser exibido no modal. Neste caso os dados não serão recuperados pelo serviço $resource. | |
formTemplate | texto | não | avForm.html | Nome do template a ser utilizado pelo formulário |
contentTemplate | texto | não | avNodeModal.html | Nome do template a ser utilizado pelo modal |
buttons | objeto | não | {history:true, remove:true, ok: true} | Objeto indicando quando cada botão do modal deverá ser exibido |
labels | objeto | não | recupera labels de acordo com a língua do backend | Labels para serem usados no formulário (ex: adminCancelTag). |
taToolbar | array | não | Indica lista de botões a serem exibidos em campos do tipo avHtmlArea que utilizam o compontente textAngular. Se não estiver definido procura por definições do avalancheConfig | |
modalSize | texto | não | Opções para o tamanho do modal: sm, lg ou xlg | |
onOpen | função | Evento disparado ao abrir o modal Sintaxe: function(scope) |
||
onBeforeSave | função | Evento disparado antes de iniciar salvamento do documento ou pasta Sintaxe: function() |
||
onSave | função | Evento disparado quando o documento ou pasta são salvos Sintaxe: function(node) |
||
onSaveError | função | Evento disparado caso haja algum erro ao salvar um documento ou pasta, quando o modal é exibido novamente. Sintaxe: function() |
||
onBeforeDelete | função | Evento disparado antes de remover o documento ou pasta. Deve retornar as informações para desfazer operação caso o usuário opte por cancelar a remoção. Sintaxe: function() |
||
onUndoUndelete | função | Evento disparado caso o usuário cancele a operação de remover. O parâmetro undoData indica as informações para desfazer a remoção, retornadas pela função onBeforeDelete Sintaxe: function(undoData) |
||
onDelete | função | Evento disparado quando o documento ou pasta é removido Sintaxe: function() |
Exemplo
$scope.openDoc = function(path, item) {
var params = {
title: 'Documento',
path: path,
buttons: { history: false, remove: true },
excludeFields: ['userId','groupId','userRight','groupRight',
'otherRight','creationDate','lastChanged',
'lastChangedUserId','keywords','contentType',
'authors','descr','publicationDate',
'pendingApproval'],
taToolbar: [['bold', 'italics', 'underline', 'undo', 'redo', 'clear'],
['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],
['insertImage','insertLink','insertVideo']],
onSave: function(node) {
$scope.itens[$scope.itens.indexOf(item)] = node.attrs;
},
onBeforeDelete: function() {
return $scope.itens.splice($scope.itens.indexOf(item),1);
},
onUndoDelete: function(undoData) {
$scope.itens.push(undoData[0]);
}
}
if(item) {
params.docId = item.docId;
}
NodeModal(params);
}