Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
WIP: update term
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Mar 7, 2016
1 parent f8ff5dd commit 4ccca2e
Show file tree
Hide file tree
Showing 13 changed files with 65 additions and 68 deletions.
2 changes: 1 addition & 1 deletion frontend/pom.xml
Expand Up @@ -11,7 +11,7 @@
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<node.version>v4.2.6</node.version>
<node.version>v5.6.0</node.version>
<npm.version>2.14.16</npm.version>
<web.target>${project.build.directory}/web</web.target>
<bundle.dest>${project.build.outputDirectory}/META-INF/resources</bundle.dest>
Expand Down
5 changes: 3 additions & 2 deletions frontend/src/main/web/index.html
Expand Up @@ -4,10 +4,11 @@
<meta name='viewport' content='width=device-width,initial-scale=1'>
<title>Zanata</title>
</head>

<!--base-url="http://localhost:3000/src/stores/testData"-->
<!--base-url="https://translate.zanata.org/zanata/rest/"-->
<body class="M(0) C(dark)">
<div id="root"
base-url="http://localhost:3000/src/stores/testData"
base-url="http://localhost:8080/zanata/rest/"
user='{"username": "test-user", "email":"zanata@zanata.org", "name": "admin-name", "imageUrl":"//www.gravatar.com/avatar/dda6e90e3f2a615fb8b31205e8b4894b?d=mm&r=g&s=115", "languageTeams": ["English, French, German, Yodish (Yoda English)"]}'
data='{"permission":{"updateGlossary":true, "insertGlossary":true, "deleteGlossary":true}, "dev": "true", "profileUser" : {"username": "test-user", "email":"zanata@zanata.org", "name":"admin-name","loggedIn":"true","imageUrl":"//www.gravatar.com/avatar/dda6e90e3f2a615fb8b31205e8b4894b?d=mm&r=g&s=115","languageTeams":["English", "French", "German", "Yodish (Yoda English)"]}}'
>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/main/web/package.json
Expand Up @@ -21,7 +21,7 @@
"babel-eslint": "^4.1.8",
"babel-jest": "^6.0.1",
"babel-loader": "^6.2.1",
"babel-plugin-lodash": "^2.0.1",
"babel-plugin-lodash": "2.1.0",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-stage-0": "^6.3.13",
Expand Down
54 changes: 36 additions & 18 deletions frontend/src/main/web/src/actions/glossary.js
Expand Up @@ -4,9 +4,8 @@ import { isEmpty, forOwn } from 'lodash'
import { arrayOf, normalize } from 'normalizr'
import { glossaryTerm } from '../schemas'
import { replaceRouteQuery } from '../utils/RoutingHelpers'
import Configs from '../constants/Configs';

// const API_ROOT = 'http://localhost:8080/zanata/rest/'
const API_ROOT = 'https://translate.zanata.org/zanata/rest/'
export const GLOSSARY_PAGE_SIZE = 1000

export const GLOSSARY_UPDATE_INDEX = 'GLOSSARY_UPDATE_INDEX'
Expand Down Expand Up @@ -65,7 +64,7 @@ export const glossaryInvalidateResults =
createAction(GLOSSARY_INVALIDATE_RESULTS)

export const updateGlossaryTerm = (term) => {
const endpoint = API_ROOT + 'glossary/entries/'
const endpoint = Configs.API_ROOT + 'glossary/entries/'
return {
[CALL_API]: {
endpoint,
Expand All @@ -84,18 +83,28 @@ export const updateGlossaryTerm = (term) => {
}
}

export const deleteGlossaryTerm = (id) => {
const endpoint = API_ROOT + 'glossary/entries/' + id
export const deleteGlossaryTerm = (dispatch, id) => {
const endpoint = Configs.API_ROOT + 'glossary/entries/' + id
return {
[CALL_API]: {
endpoint,
method: 'DELETE',
headers: {
'Accept': 'application/json'
'Accept': 'application/json',
'x-auth-token': Configs.auth ? Configs.auth.token : '',
'x-auth-user': Configs.auth ? Configs.auth.user : ''
},
types: [
GLOSSARY_DELETE_REQUEST,
GLOSSARY_DELETE_SUCCESS,
{
type: GLOSSARY_DELETE_SUCCESS,
payload: (action, state, res) => {
return res.json().then((json) => {
dispatch(getGlossaryStats(dispatch))
return json
})
}
},
GLOSSARY_DELETE_FAILURE
]
}
Expand All @@ -117,15 +126,17 @@ export const getGlossaryTerms = (state, newIndex) => {
const pageQuery = `&page=${page}&sizePerPage=${GLOSSARY_PAGE_SIZE}`
const filterQuery = filter ? `&filter=${filter}` : ''
const sortQuery = sort ? generateSortOrderParam(sort) : ''
const endpoint = API_ROOT + 'glossary/entries' + srcQuery +
const endpoint = Configs.API_ROOT + 'glossary/entries' + srcQuery +
localeQuery + pageQuery + filterQuery + sortQuery
console.log(endpoint)
return {
[CALL_API]: {
endpoint,
method: 'GET',
headers: {
'Accept': 'application/json'
'Accept': 'application/json',
'x-auth-token': Configs.auth ? Configs.auth.token : '',
'x-auth-user': Configs.auth ? Configs.auth.user : ''
},
types: [
GLOSSARY_TERMS_REQUEST,
Expand Down Expand Up @@ -186,17 +197,27 @@ export const glossaryGetTermsIfNeeded = (newIndex) => {
export const glossaryInvalidateStats =
createAction(GLOSSARY_INVALIDATE_STATS)

export const getGlossaryStats = () => {
export const getGlossaryStats = (dispatch) => {
return {
[CALL_API]: {
endpoint: API_ROOT + '/glossary/info',
endpoint: Configs.API_ROOT + 'glossary/info',
method: 'GET',
headers: {
'Accept': 'application/json'
'Accept': 'application/json',
'x-auth-token': Configs.auth ? Configs.auth.token : '',
'x-auth-user': Configs.auth ? Configs.auth.user : ''
},
types: [
GLOSSARY_STATS_REQUEST,
GLOSSARY_STATS_SUCCESS,
{
type: GLOSSARY_STATS_SUCCESS,
payload: (action, state, res) => {
return res.json().then((json) => {
dispatch(getGlossaryTerms(state))
return json
})
}
},
GLOSSARY_STATS_FAILURE
]
}
Expand All @@ -210,8 +231,7 @@ export const glossaryInitialLoad = () => {
return (dispatch, getState) => {
const query = getState().routing.location.query
dispatch(glossaryInitStateFromUrl(query))
dispatch(getGlossaryStats())
dispatch(getGlossaryTerms(getState()))
dispatch(getGlossaryStats(dispatch))
}
}

Expand Down Expand Up @@ -239,9 +259,7 @@ export const glossaryFilterTextChanged = (newFilter) => {

export const glossaryDeleteTerm = (id) => {
return (dispatch, getState) => {
dispatch(deleteGlossaryTerm(id))
dispatch(getGlossaryStats())
dispatch(getGlossaryTerms(getState()))
dispatch(deleteGlossaryTerm(dispatch, id))
}
}

Expand Down
3 changes: 2 additions & 1 deletion frontend/src/main/web/src/components/TableRow.js
Expand Up @@ -14,7 +14,8 @@ const classes = {
}
},
selected: {
bgc: 'Bgc(light)'
bgc: 'Bgc(light)',
custom: 'row--selected'
}
}

Expand Down
7 changes: 6 additions & 1 deletion frontend/src/main/web/src/constants/Configs.js
Expand Up @@ -6,7 +6,12 @@ var Configs = {
baseUrl: null, // base url for rest api
user: null, // see org.zanata.rest.editor.dto.User
data: null, // json object of data
urlPostfix: ''
urlPostfix: '',
auth: {
'token': 'b1f997395af864968fce5b62abdc340f',
'user': 'admin'
}
//auth : null
}

export default Configs
2 changes: 1 addition & 1 deletion frontend/src/main/web/src/containers/Glossary.js
Expand Up @@ -147,7 +147,7 @@ class Glossary extends Component {
</TableCell>
) : ''
}
<TableCell hideSmall>
<TableCell hideSmall className='Op(0) row--selected_Op(1) editable:h_Op(1) Trs(eo)'>
<ButtonLink>
<Icon name='info'/>
</ButtonLink>
Expand Down
5 changes: 2 additions & 3 deletions frontend/src/main/web/src/index.js
Expand Up @@ -35,7 +35,7 @@ const finalCreateStore = compose(
apiMiddleware,
routerMiddleware,
createLogger()
),
)
// DevTools.instrument()
)(createStore)

Expand Down Expand Up @@ -64,14 +64,13 @@ const store = ((initialState) => {
* from .json file in test directory.
*/
var mountNode = document.getElementById('root')
var baseUrl = mountNode.getAttribute('base-url')
var user = JSON.parse(mountNode.getAttribute('user'))
var data = JSON.parse(mountNode.getAttribute('data'))
var dev = data.dev

// Replace with redux state
// base rest url, e.g http://localhost:8080/rest
Configs.baseUrl = baseUrl
Configs.API_ROOT = mountNode.getAttribute('base-url')
Configs.data = data
// append with .json extension in 'dev' environment
Configs.urlPostfix = isUndefined(dev) ? '' : '.json?'
Expand Down
5 changes: 2 additions & 3 deletions frontend/src/main/web/src/legacy.js
Expand Up @@ -55,22 +55,21 @@ WebFont.load({
* from .json file in test directory.
*/
var mountNode = document.getElementById('root')
var baseUrl = mountNode.getAttribute('base-url')
var user = JSON.parse(mountNode.getAttribute('user'))
var data = JSON.parse(mountNode.getAttribute('data'))
var dev = data.dev

// Replace with redux state
// base rest url, e.g http://localhost:8080/rest
Configs.baseUrl = baseUrl
Configs.API_ROOT = mountNode.getAttribute('base-url')
Configs.data = data
// append with .json extension in 'dev' environment
Configs.urlPostfix = isUndefined(dev) ? '' : '.json?'
// see org.zanata.rest.editor.dto.User
Configs.user = user

let links = {
'context': Configs.baseUrl,
'context': Configs.API_ROOT,
'/login': Configs.data.loginUrl,
'/help': Configs.data.helpUrl,
'/terms': Configs.data.termsUrl,
Expand Down
10 changes: 5 additions & 5 deletions frontend/src/main/web/src/stores/GlossaryAPIStore.js
Expand Up @@ -5,7 +5,7 @@ import StringUtils from '../utils/StringUtils'

var GlossaryAPIStore = ({
loadLocalesStats: function () {
var url = Configs.baseUrl + "/glossary/info" + Configs.urlPostfix;
var url = Configs.API_ROOT + "/glossary/info" + Configs.urlPostfix;

return new Promise(function (resolve, reject) {
Request.get(url)
Expand Down Expand Up @@ -38,7 +38,7 @@ var GlossaryAPIStore = ({
},

glossaryAPIUrl: function (srcLocaleId, transLocale, filter, sort, page, pageSize) {
var url = Configs.baseUrl + "/glossary/entries" + Configs.urlPostfix + "?srcLocale=" + srcLocaleId;
var url = Configs.API_ROOT + "/glossary/entries" + Configs.urlPostfix + "?srcLocale=" + srcLocaleId;

if (!StringUtils.isEmptyOrNull(transLocale)) {
url = url + "&transLocale=" + transLocale;
Expand All @@ -62,7 +62,7 @@ var GlossaryAPIStore = ({
},

saveOrUpdateGlossary: function(entry) {
var url = Configs.baseUrl + "/glossary/entries" + Configs.urlPostfix;
var url = Configs.API_ROOT + "/glossary/entries" + Configs.urlPostfix;
return new Promise(function(resolve, reject) {
Request.post(url)
.set('Content-Type', 'application/json')
Expand All @@ -80,7 +80,7 @@ var GlossaryAPIStore = ({
* }
*/
deleteGlossary: function(data) {
var url = Configs.baseUrl + "/glossary/entries/" + data.id + Configs.urlPostfix;
var url = Configs.API_ROOT + "/glossary/entries/" + data.id + Configs.urlPostfix;

return new Promise(function(resolve, reject) {
Request.del(url)
Expand All @@ -93,7 +93,7 @@ var GlossaryAPIStore = ({
},

uploadFile: function(data, onProgressCallback) {
var url = Configs.baseUrl + "/glossary",
var url = Configs.API_ROOT + "/glossary",
uploadFile = data.uploadFile;

return new Promise(function(resolve, reject) {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/main/web/src/stores/UserMatrixStore.js
Expand Up @@ -49,7 +49,7 @@ function loadFromServer() {
}

function statsAPIUrl() {
return Configs.baseUrl + "/stats/user/" + Configs.data.profileUser.username + Configs.urlPostfix + "/";
return Configs.API_ROOT + "/stats/user/" + Configs.data.profileUser.username + Configs.urlPostfix + "/";
}

function handleServerResponse(serverResponse) {
Expand Down
Expand Up @@ -29,6 +29,7 @@
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.Provider;

import org.apache.commons.codec.binary.StringUtils;
import org.jboss.resteasy.annotations.interception.HeaderDecoratorPrecedence;

import com.google.common.base.Joiner;
Expand All @@ -44,6 +45,8 @@
@Provider
@HeaderDecoratorPrecedence
public class ZanataRestResponseInterceptor implements ContainerResponseFilter {
private static final String METHODS = "PUT, POST, DELETE, GET, OPTIONS";

public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {

Expand All @@ -54,7 +57,7 @@ public void filter(ContainerRequestContext requestContext, ContainerResponseCont
MultivaluedMap<String, Object> headers = responseContext.getHeaders();

headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", requestContext.getMethod());
headers.add("Access-Control-Allow-Methods", METHODS);
headers.add("Access-Control-Allow-Headers",
"X-Requested-With, Content-Type, Accept, " + Joiner.on(",").join(
requestHeaders));
Expand Down

0 comments on commit 4ccca2e

Please sign in to comment.