Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1731 → Rev 1732

/branches/v3/impl/src/java/pt/estgp/estgweb/services/users/UserRoleConfigService.java
478,9 → 478,11
"user.role.courseValidateProgramTPB=Comissão de Curso de Tecnologias de Produção de Biocombustíveis\n"+
"user.role.board.institution=Board de Direcção do Instituto Politecnico\n"+
"user.role.repositoryDocs=Administração do Repositório Digital\n"+
"user.role.repositoryDeposit=Depositante do Repositório Digital\n"+
 
 
 
 
//ESCOLAS
 
 
/branches/v3/impl/src/java/pt/estgp/estgweb/services/data/repositorydocuments/RepositoryDocumentService.java
362,7 → 362,7
collections.add((RepositoryDocumentCollectionImpl) col);
collections.addAll(loadChildsOrderedAsTree(col));
}
return RepositoryDocumentCollectionImpl.toJsonArray(collections);
return RepositoryDocumentCollectionImpl.toJsonArraySimpleFields(collections);
}
 
private ArrayList<RepositoryDocumentCollectionImpl> loadChildsOrderedAsTree(RepositoryDocumentCollection rootCol)
405,7 → 405,6
DaoFactory.getRepositoryDocumentInterfaceDaoImpl().delete(persistent);
}
 
 
public void saveRepositoryInterfaceData(Long id,String dataJson, UserSession userSession) throws IOException, TransformationException, JSONException, AccessDeniedException, ServiceException {
 
RepositoryInterface repositoryInterface = RepositoryInterface.loadFromJson(dataJson);
426,6 → 425,26
persistent.setRepositoryInterface(repositoryInterface);
}
 
public void addManagerToCollection(long collectionId, long managerId, UserSession sess)
{
RepositoryDocumentCollection col = DaoFactory.getRepositoryDocumentCollectionDaoImpl().get(collectionId);
User u = DaoFactory.getUserDaoImpl().get(managerId);
col.getCollectionManagers().add((UserImpl) u);
}
 
public void removeManagerInCollection(long collectionId, long managerId, UserSession sess)
{
RepositoryDocumentCollection col = DaoFactory.getRepositoryDocumentCollectionDaoImpl().get(collectionId);
for(User user : col.getCollectionManagers())
{
if(user.getId() == managerId)
{
col.getCollectionManagers().remove(user);
break;
}
}
}
 
public static void main(String[] args) throws TransformationException, JSONException, IOException
{
AbstractDao.getCurrentSession().beginTransaction();
/branches/v3/impl/src/java/pt/estgp/estgweb/services/data/repositorydocuments/interfaces/InterfaceBlock.java
13,7 → 13,9
String type = "block";
String title;
String description;
//HELPER para interface
 
 
boolean showTitle = true;
boolean showDescription = false;
 
225,6 → 227,8
return "block";
}
 
 
 
public void setType(String type){}
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/RepositoryDocumentCollectionImpl.java
25,15 → 25,39
 
 
static Genson genson;
static Genson gensonSimpleFields;
 
static {
Genson.Builder gensonBuilder = new Genson.Builder()
.exclude(Object.class)
.include(RepositoryDocumentCollectionImpl.class)
.include(String.class)
.include("name", RepositoryDocumentCollection.class)
.include("description",RepositoryDocumentCollection.class)
.include("legacyUrl", RepositoryDocumentCollection.class)
.include("treeName", RepositoryDocumentCollection.class)
.include("pathName", RepositoryDocumentCollection.class)
.include("treeHiffens", RepositoryDocumentCollection.class)
.include("collectionManagers", RepositoryDocumentCollection.class)
.include("id",UserImpl.class)
.include("name",UserImpl.class)
.include("sigesCode",SigesUserImpl.class)
.exclude("parent", RepositoryDocumentCollection.class);
 
genson = gensonBuilder.create();
 
Genson.Builder gensonBuilderSimpleFields = new Genson.Builder()
.exclude(Object.class)
.include(RepositoryDocumentCollectionImpl.class)
.include("name", RepositoryDocumentCollection.class)
.include("description",RepositoryDocumentCollection.class)
.include("legacyUrl", RepositoryDocumentCollection.class)
.include("treeName", RepositoryDocumentCollection.class)
.include("pathName", RepositoryDocumentCollection.class)
.include("treeHiffens", RepositoryDocumentCollection.class)
.exclude("parent", RepositoryDocumentCollection.class);
 
gensonSimpleFields = gensonBuilderSimpleFields.create();
 
}
public String toJson() throws IOException, TransformationException
{
53,6 → 77,10
return new JSONArray(genson.serialize(collections));
}
 
public static JSONArray toJsonArraySimpleFields(List<RepositoryDocumentCollectionImpl> collections) throws IOException, TransformationException, JSONException {
return new JSONArray(gensonSimpleFields.serialize(collections));
}
 
public static RepositoryDocumentCollectionImpl loadFromJson(String json) throws IOException, TransformationException {
return genson.deserialize(json, RepositoryDocumentCollectionImpl.class);
}
86,5 → 114,27
}
public void setTreeName(String name)
{}
 
 
public boolean isManager(UserSession userSession)
{
if(userSession.getUser() == null)
return false;
return checkCollectionManagerInTree(userSession.getUser());
}
 
private boolean checkCollectionManagerInTree(User u)
{
if(getCollectionManagers() != null)
{
for(User manager :getCollectionManagers())
{
if(manager.getId() == u.getId())
return true;
}
return getParent() != null && getParent().checkCollectionManagerInTree(u);
}
return false;
}
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/filters/filters/CheckRepositoryCollectionManager.java
New file
0,0 → 1,94
package pt.estgp.estgweb.filters.filters;
 
import org.apache.log4j.Logger;
import org.json.JSONArray;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.RepositoryDocument;
import pt.estgp.estgweb.domain.RepositoryDocumentCollectionImpl;
import pt.estgp.estgweb.domain.RepositoryDocumentImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.AdminControlFilter;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
 
public class CheckRepositoryCollectionManager extends AdminControlFilter {
private static final Logger logger = Logger.getLogger(CheckRepositoryCollectionManager.class);
 
private static final String ALL_ROLE = ConfigProperties.getProperty("user.super");
 
public void execute(ServiceRequest request, ServiceResponse response)
throws FilterException, Exception
{
 
}
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
 
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
 
Long targetCollectionId = (Long) request.getServiceParameters().getParameter("newCollectionId");
JSONArray docsIds = (JSONArray) request.getServiceParameters().getParameter("jsonArrayDocumentsIds");
String docJson = (String) request.getServiceParameters().getParameter("docJson");
 
if(userSession.getUser() == null)
{
logger.info("try access restricted area:" + request.getRequester());
throw new NeedAuthenticationException();
}
if(userSession.getUser().isSuperuserOrAdmin())
return;
 
 
if(docJson != null)
{
RepositoryDocumentImpl view = RepositoryDocumentImpl.loadFromJson(docJson);
targetCollectionId = view.getCollection().getId();
if(view.getCollection() == null || view.getCollection().getId() <= 0)
{
throw new NotAuthorizedException("Não pode depositar documentos sem colecção");
}
Long id = view.getId();
checkDocAndTargetCollectionManager(targetCollectionId, id,userSession);
return;
}
else if(docsIds != null && targetCollectionId != null)
{
for(int i = 0; i < docsIds.length(); i++)
{
long docId = docsIds.getLong(i);
checkDocAndTargetCollectionManager(targetCollectionId, docId,userSession);
}
return;
}
 
throw new NotAuthorizedException("Não tem permissão para fazer esta operação");
}
 
public void checkDocAndTargetCollectionManager(long targetColId, Long id,UserSession sess) throws NotAuthorizedException {
if(id != null && id > 0)
{
RepositoryDocument persistentDoc = DaoFactory.getRepositoryDocumentDaoImpl().get(id);
if(persistentDoc.getCollection() != null)
{
boolean isManager = persistentDoc.getCollection().isManager(sess);
if(!isManager)
throw new NotAuthorizedException("O seu perfil não lhe permite atualizar documentos da colecção " + persistentDoc.getCollection().getName());
}
else
{
throw new NotAuthorizedException("Não tem permissão para fazer esta operação, este documento necessita de colecção");
}
}
RepositoryDocumentCollectionImpl targetCollection = (RepositoryDocumentCollectionImpl) DaoFactory.getRepositoryDocumentCollectionDaoImpl().get(targetColId);
boolean isManager = targetCollection.isManager(sess);
if(!isManager)
throw new NotAuthorizedException("O seu perfil não lhe permite atualizar documentos da colecção " + targetCollection.getName());
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/repositorydocs/RepositoryDocController.java
35,7 → 35,7
 
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
String[] names = new String[]{"docJson"};
Object[] args = new Object[]{docJson,uploadedProvisorios};
JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "SaveRepositoryDocument", args, names);
if(persistent.get("title") != null)
52,7 → 52,7
JSONObject similar = new JSONObject();
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
String[] names = new String[]{"docJson"};
Object[] args = new Object[]{docJson};
JSONArray found = (JSONArray) sm.execute(RequestUtils.getRequester(request, response), "CheckRepositoryDocumentExistence", args, names);
similar.put("found",found);
103,7 → 103,7
JSONArray documentIds = new JSONArray(request.getParameter("documentIds"));
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
String[] names = new String[]{"newCollectionId","jsonArrayDocumentsIds"};
Object[] args = new Object[]{collectionId,documentIds};
sm.execute(RequestUtils.getRequester(request, response), "ChangeDocumentCollection", args, names);
return true;
510,5 → 510,30
return sectionsObj;
}
 
 
public boolean addManagerToCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable
{
Long collectionId = Long.parseLong(request.getParameter("collectionId"));
Long managerId = Long.parseLong(request.getParameter("managerId"));
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{collectionId,managerId};
sm.execute(RequestUtils.getRequester(request, response), "RepositoryDocumentsAddManagerToCollection", args, names);
addMessageAsString(request,"Utilizador adicionado com sucesso");
return true;
}
 
public boolean removeManagerInCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable
{
Long collectionId = Long.parseLong(request.getParameter("collectionId"));
Long managerId = Long.parseLong(request.getParameter("managerId"));
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{collectionId,managerId};
sm.execute(RequestUtils.getRequester(request, response), "RepositoryDocumentsRemoveManagerInCollection", args, names);
addMessageAsString(request,"Utilizador removido com sucesso");
return true;
}
 
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/utils/AbstractWidgetAjaxController.java
7,6 → 7,7
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
48,6 → 49,7
try
{
String serviceJson = request.getParameter("serviceJson");
logger.info("Calling abstract widget service: " + serviceJson);
 
Method serviceChild = this.getClass().getMethod(serviceJson,new Class[]{ActionForm.class,HttpServletRequest.class,HttpServletResponse.class});
 
59,12 → 61,27
}
catch(InvocationTargetException e)
{
prepareError(e.getCause(),request,response);
 
Throwable cause = e;
if(e.getTargetException() != null)
{
cause = e.getTargetException();
if(e.getTargetException().getCause() != null)
cause = e.getTargetException().getCause();
}
prepareError(cause,request,response);
return mapping.findForward("JSON_WidgetAjax_RESPONSE_ERROR");
}
catch(Throwable e)
{
prepareError(e,request,response);
if(e instanceof FilterChainFailedException)
{
logger.error(e,e);
}
else
{
prepareError(e,request,response);
}
return mapping.findForward("JSON_WidgetAjax_RESPONSE_ERROR");
}
}
79,6 → 96,7
try
{
String serviceJson = request.getParameter("serviceJson");
logger.info("Calling abstract widget service: " + serviceJson);
Method serviceChild = this.getClass().getMethod(serviceJson,new Class[]{ActionForm.class,HttpServletRequest.class,HttpServletResponse.class});
 
Boolean responseBoolean = (Boolean) serviceChild.invoke(this, form, request, response);
115,12 → 133,26
}
catch(InvocationTargetException e)
{
prepareError(e.getCause(),request,response);
Throwable cause = e.getCause();
if(e.getTargetException() != null)
{
cause = e.getTargetException();
if(e.getTargetException().getCause() != null)
cause = e.getTargetException().getCause();
}
prepareError(cause,request,response);
return mapping.findForward("JSON_WidgetAjax_RESPONSE_ERROR");
}
catch(Throwable e)
{
prepareError(e,request,response);
if(e instanceof FilterChainFailedException)
{
logger.error(e,e);
}
else
{
prepareError(e,request,response);
}
return mapping.findForward("JSON_WidgetAjax_RESPONSE_ERROR");
}
 
/branches/v3/impl/src/hbm/pt/estgp/estgweb/domain/RepositoryFile.hbm.xml
107,7 → 107,7
</set>
<set name="collectionManagers" table="repositorycollectionmanagers">
<key column="collection_id"/>
<many-to-many column="user_id" class="pt.estgp.estgweb.domain.User"/>
<many-to-many column="user_id" class="pt.estgp.estgweb.domain.UserImpl"/>
</set>
<subclass name="pt.estgp.estgweb.domain.RepositoryDocumentCollectionImpl" discriminator-value="RepositoryDocumentCollectionImpl"/>
</class>
/branches/v3/impl/src/web/tools/searchUserTabAjax.jsp
New file
0,0 → 1,17
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="bacoTags" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="logic" uri="/WEB-INF/tlds/struts-logic.tld" %>
<%@ taglib prefix="baco" uri="/WEB-INF/tlds/baco.tld" %>
 
<%
String callBackTargetFunction = request.getParameter("callback-target-function");
String callBackTargetFunctionTokenParameter = request.getParameter("callback-target-function-token-parameter");
 
request.setAttribute("callBackTargetFunction",callBackTargetFunction);
request.setAttribute("callBackTargetFunctionTokenParameter",callBackTargetFunctionTokenParameter);
%>
 
<bacoTags:angularInjectAppFromAjax ngApp="NgSearchTabApp" injectAngular="true"/>
 
 
<bacoTags:searchUserTab dismissAsModalWhenUserAdd="true" callbackTargetFunctionTokenized="${callBackTargetFunction}" callbackTargetToken="${callBackTargetFunctionTokenParameter}" title="Procurar Utilizador" useAngularAppId="NgSearchTabApp" useModals="false"/>
/branches/v3/impl/src/web/examples/examples.jsp
40,6 → 40,7
 
<li><html:link page="/examples/tagsTemplates/bodyTag.jsp">Utilização de um template com body (BodyTag)</html:link></li>
<li><html:link page="/examples/tagsTemplates/objectAttributeTag.jsp">Utilização de um template passando um objecto complexo /objectAttributeTag)</html:link></li>
<li><html:link page="/examples/tagsTemplates/nestedTagsAngular/nestedTagsComAngular.jsp">Tags encadeadas com angular js</html:link></li>
</ul>
/branches/v3/impl/src/web/examples/utilitariosInterface/utils.jsp
2,6 → 2,7
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib tagdir="/WEB-INF/tags/vfs" prefix="bacoVfsTags" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %>
<html>
 
<head>
98,11 → 99,33
</script>
 
 
<h3>Pesquisar um Utilizador e adicioona-lo com um token de resposta. </h3>
 
 
<script>
function pesquisaCallBack(id,name,sigesCode,token)
{
alert("ID:" + id + ", name:" + name + ", sigesCode:" + sigesCode + ", token:" + token);
 
}
</script>
 
<bacoTags:searchUserTabAjax btnIconClass="glyphicon glyphicon-search"
btnClass="btn btn-info"
btnLabel="Procurar Utilizador"
callbackTargetToken="123"
callbackTargetFunctionTokenized="pesquisaCallBack"
title="Procurar Utilizador Titulo"/>
 
<br/>
<br/>
 
 
 
 
 
 
 
</div>
</body>
</html>
/branches/v3/impl/src/web/examples/tagsTemplates/nestedTagsAngular/nestedTagsComAngular.jsp
New file
0,0 → 1,39
<%@ page contentType="text/html; charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib tagdir="/WEB-INF/tags/examples" prefix="exampleTags" %>
 
<exampleTags:nestedInterfaceAngularTag angularAppId="nestedTagsApp">
 
<jsp:attribute name="scripts">
<script>
$(document).ready(function(){
var $scope = angular.element($("#nestedTagsApp")).scope();
 
$scope.data2 = {
"nome2" : "nome2 exemplo"
};
$scope.testa2 = function()
{
$scope.data2.nome2 = "novo nome 2";
}
$scope.$apply();
});
</script>
</jsp:attribute>
<jsp:body>
<div class="lead">
Olá Mundo eu sou o corpo da interface embutida
</div>
 
<p>
Nome 2 : <input type="text" ng-model="data2.nome2">
<button type="button" class="btn btn-default" ng-click="testa2()">Muda nome 2</button>
</p>
 
<h3>Data 2 embutido</h3>
 
<pre>
{{ data2 | json }}
</pre>
</jsp:body>
</exampleTags:nestedInterfaceAngularTag>
/branches/v3/impl/src/web/user/home/panels/institutionTools.jsp
11,11 → 11,13
<div class="panel-heading">Ferramentas Institucionais</div>
<div class="panel-body">
<div class="text-info">
Para administrar a ferramenta do repositório digital necessita da permissão
repositoryDocs = Administração do Repositório Digital.
<p>Para administrar a ferramenta do repositório digital necessita da permissão
repositoryDocs = Administração do Repositório Digital.</p>
<p>Para ser depositante do Repositório numa dada colecção necessita de role: repositoryDeposit
e ser gestor da colecção ou de uma colecção pai de uma dada colecção</p>
</div>
<div class="list-group">
<baco:hasRole role="admin,all,repositoryDocs">
<baco:hasRole role="admin,all,repositoryDocs,repositoryDeposit">
<div class="list-group-item"><html:link action="/user/repositoryEditDocument"><bean:message key="repository.document.add"/></html:link></div>
<div class="list-group-item"><html:link action="/user/repositoryEditCollections"><bean:message key="repositorycol"/></html:link></div>
<div class="list-group-item"><html:link action="/user/repositoryBrowseCollections"><bean:message key="repositorycolbrowser"/></html:link></div>
/branches/v3/impl/src/web/user/repositoryDocuments/adminCollectionsTree.jsp
110,7 → 110,7
GLOBAL_BacoAngularAppDependencies.push('treeAppPageContent');
 
<!-- estes codigos todos do remove e do toggle e etc's não mechi em nada limitei-me a copiar dos gajos-->
treeAppPageContent.controller('treeAppPageContentController', function ($scope) {
treeAppPageContent.controller('treeAppPageContentController', function ($scope,$filter) {
 
$scope.data = ${collectionsJson};
 
192,7 → 192,7
 
}
};
$scope.remove = function (scope)
$scope.removeCollection = function (scope)
{
var nodeData = scope.$modelValue;
alert("removendo item com id " + nodeData.id);
321,7 → 321,75
node.modified = "true";
}
 
$scope.addManager = function(id,name,sigesCode,token)
{
var coleccao = $scope.findCollection($scope.data,token);
 
if(!coleccao.collectionManagers)
{
coleccao.collectionManagers = [];
}
widgetSimpleCallWithActionParameters(
"<%=request.getContextPath()%>/user/repositoryDoc.do",
"addManagerToCollection",
{
"collectionId": token,
"managerId": id
},
"#treeAppPageContent",
function()
{
coleccao.collectionManagers.push(
{
"id" : id,
"name" : name,
"sigesCode" : sigesCode
}
);
$scope.$apply();
}
);
 
//alert("ID:" + id + ", name:" + name + ", sigesCode:" + sigesCode + ", token:" + token);
}
 
$scope.removeManager = function(collection,manager,index)
{
widgetSimpleCallWithActionParameters(
"<%=request.getContextPath()%>/user/repositoryDoc.do",
"removeManagerInCollection",
{
"collectionId": token,
"managerId": manager
},
"#treeAppPageContent",
function()
{
collection.collectionManagers.splice(index, 1);
$scope.$apply();
}
);
}
 
$scope.findCollection = function(collections,id)
{
var collection = null;
var i = 0;
for(i = 0; i < collections.length;i++)
{
if(collections[i].id == id)
return collections[i];
if(collections[i].childs)
{
var innerCol = $scope.findCollection(collections[i].childs,id);
if(innerCol != null)
return innerCol;
}
}
 
return null;
}
 
}
);
 
383,18 → 451,50
</div>
 
<span ng-if="node.nodrop">* No drop</span> <span ng-if="node.nodrag">* No drag</span>
 
 
 
</div>
<!--BOTOES DE REMOVE E NEW SUBITEMS CHAMAM FUNCOES DO SCOPE-->
<div class="col-md-2">
<select ng-change="setModified(node)" class="chosenOff" ng-model="node.visible" ng-options="o.v as o.n for o in [{ n: 'Visivel', v: true }, { n: 'Invisivel', v: false }]">
</select>
<a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="remove(this)">
<a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="removeCollection(this)">
<span class="glyphicon glyphicon-remove"></span>
</a>
<a class="pull-right btn btn-primary btn-xs" data-nodrag ng-click="newSubItem(this)" style="margin-right: 8px;">
<span class="glyphicon glyphicon-plus"></span>
</a>
</div>
<div class="col-md-3">
<bacoTags:searchUserTabAjax btnIconClass="glyphicon glyphicon-search"
btnClass="btn btn-info"
btnLabel="Adicionar Gestor de Colecção"
callbackTargetToken="{{node.id}}"
callbackTargetFunctionTokenized="searchCallback"
title="Procurar Gestor de Colecção"/>
</div>
<div class="col-md-9" ng-if="node.collectionManagers">
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>SIGES</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="manager in node.collectionManagers">
<td>{{manager.id}}</td>
<td>{{manager.name}}</td>
<td>{{manager.sigesCode}}</td>
<td><button class="btn btn-danger btn-xs" ng-click="removeManager(node,manager,$index)"><span class="glyphicon glyphicon-remove"></span></button></td>
</tr>
</tbody>
</table>
 
</div>
</div>
 
<!-- 1) UMA LISTA PARA O NODROP data-nodrop-enabled="true" 2) (EM BAIXO) OUTRA PARA OS QUE DEIXAM FAZER DROP DROP-->
409,6 → 509,19
</ol>
</script>
 
<script>
function searchCallback(id,name,sigesCode,token)
{
var $scope = angular.element("#treeAppPageContent").scope();
$scope.addManager(id,name,sigesCode,token);
$scope.$apply();
 
 
}
</script>
 
<bacoTags:callAjaxModal targetUrl="/tools/searchUserTabAjax.jsp" title="TESTE AJAX" btnClass="btn btn-default" callbackTargetFunction="teste" callbackTargetFunctionTokenParameter="tt" btnLabel="Procurar"/>
 
<div class="panel panel-default">
<div class="panel-heading clearfix">
Administração de Coleções do Repositório de Documentos Digitais
434,9 → 547,9
</div>
 
</div>
<%-- <div class="col-sm-12">
<div class="col-sm-12">
<pre class="code">{{ data | json }}</pre>
</div>--%>
</div>
</div>
 
 
/branches/v3/impl/src/web/user/repositoryDocuments/adminBuiltInterfaces.jsp
104,6 → 104,10
show: 'true'
});
}
$scope.getUrl = function(node)
{
return "<%=siteUrl%>/repositoryInterface/" + node.slug;
}
 
 
 
151,6 → 155,7
</th>
<th>Remover</th>
<th>URL</th>
<th>IR</th>
</tr>
</thead>
<tbody>
187,6 → 192,9
<td>
<button ng-click="url(i)" class="btn btn-default"><span class="glyphicon glyphicon-globe"></span></button>
</td>
<td>
<a class="btn btn-default" ng-href="{{getUrl(i)}}"><span class="glyphicon glyphicon-play"></span></a>
</td>
</tr>
</tbody>
</table>
/branches/v3/impl/src/web/user/repositoryDocuments/adminInterfaceBuilder.jsp
336,7 → 336,7
 
 
 
<%-- <pre class="code">{{ data | json }}</pre>--%>
<pre class="code">{{ data | json }}</pre>
 
</div>