muba-posting 7.0.5 → 7.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Posting.js +23 -2
- package/PostingEdit.js +3 -3
- package/Preview.js +2 -2
- package/Publish1.js +69 -19
- package/Publish2.js +13 -7
- package/Publish2b.js +21 -16
- package/Publish3.js +57 -25
- package/Publish4.js +1 -0
- package/Publish5.js +34 -1
- package/Publish6.js +6 -1
- package/commonStyles.js +4 -0
- package/locales/ar.json +7 -2
- package/locales/en.json +7 -2
- package/locales/es.json +7 -2
- package/locales/fr.json +7 -2
- package/locales/it.json +7 -2
- package/locales/nl.json +7 -2
- package/package.json +1 -1
- package/shared/InputNumber.js +2 -2
package/Posting.js
CHANGED
|
@@ -35,6 +35,7 @@ const COUNTRY_PHONE = { method: 'GET', url: '/controller/countries/{countryCode}
|
|
|
35
35
|
const LOAD_PENDING_CREATED = { method: 'GET', url: '/controller/ads/pending-created/posting' };
|
|
36
36
|
const PAYMENT_ONLINE_ACTIVE = { method: 'GET', url: '/controller/payments-online/{countryCode}/active' };
|
|
37
37
|
const LOAD_LOCATIONS = { method: 'GET', url: '/controller/countries/{countryCode}/locations' };
|
|
38
|
+
const ALLOWED_TO_MODIFY = { method: 'GET', url: '/controller/posting/allowed-to-modify' };
|
|
38
39
|
const UPLOADED_FILES_KEY = 'uploadedFiles';
|
|
39
40
|
|
|
40
41
|
export default class Posting extends React.Component {
|
|
@@ -67,6 +68,7 @@ export default class Posting extends React.Component {
|
|
|
67
68
|
locationList: [],
|
|
68
69
|
showRatePopup: false,
|
|
69
70
|
originalAd: null,
|
|
71
|
+
allowedToModify: {},
|
|
70
72
|
postingAd: {
|
|
71
73
|
transaction: null,
|
|
72
74
|
adType: null,
|
|
@@ -237,6 +239,7 @@ export default class Posting extends React.Component {
|
|
|
237
239
|
}
|
|
238
240
|
}
|
|
239
241
|
}
|
|
242
|
+
this.getAllowedToModifyFields();
|
|
240
243
|
|
|
241
244
|
this._hideLoading()
|
|
242
245
|
BackHandler.addEventListener('hardwareBackPress', this.goBack);
|
|
@@ -289,6 +292,16 @@ export default class Posting extends React.Component {
|
|
|
289
292
|
}
|
|
290
293
|
}
|
|
291
294
|
|
|
295
|
+
async getAllowedToModifyFields() {
|
|
296
|
+
const responseJson = await this.props.request(this.props.context, ALLOWED_TO_MODIFY, { adId: this.state.postingAd.id });
|
|
297
|
+
if (responseJson.httpStatus === 200) {
|
|
298
|
+
delete responseJson.httpStatus
|
|
299
|
+
this.setState({
|
|
300
|
+
allowedToModify: { ...responseJson }
|
|
301
|
+
})
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
292
305
|
async loadAd() {
|
|
293
306
|
const bddAd = await this.getAd(this.state.adId);
|
|
294
307
|
delete bddAd.phones;
|
|
@@ -456,8 +469,8 @@ export default class Posting extends React.Component {
|
|
|
456
469
|
}
|
|
457
470
|
|
|
458
471
|
async checkPaymentOnline() {
|
|
459
|
-
const paymentOnlineActive = await this.props.request(this.props.context, PAYMENT_ONLINE_ACTIVE, { regionId: this.state.postingAd.region });
|
|
460
|
-
if (
|
|
472
|
+
const paymentOnlineActive = await this.props.request(this.props.context, PAYMENT_ONLINE_ACTIVE, { regionId: this.state.postingAd.region, adId: this.state.postingAd.id });
|
|
473
|
+
if (paymentOnlineActive.value === 'true') {
|
|
461
474
|
this._goToPage(Views.PAYMENT_ONLINE);
|
|
462
475
|
}
|
|
463
476
|
}
|
|
@@ -525,6 +538,7 @@ export default class Posting extends React.Component {
|
|
|
525
538
|
saveEditAd={() => this._saveEditAd()}
|
|
526
539
|
realEstateDeveloper={this.state.realEstateDeveloper}
|
|
527
540
|
businessId={this.state.businessId}
|
|
541
|
+
allowedToModify={this.state.allowedToModify}
|
|
528
542
|
showNoPromotions={() => this.popupNoPromotions.show()} />
|
|
529
543
|
:
|
|
530
544
|
null
|
|
@@ -543,6 +557,7 @@ export default class Posting extends React.Component {
|
|
|
543
557
|
hideLoading={() => this._hideLoading()}
|
|
544
558
|
hereApiKey={this.props.hereApiKey}
|
|
545
559
|
fullPosting={this.state.fullPosting}
|
|
560
|
+
allowedToModify={this.state.allowedToModify}
|
|
546
561
|
businessId={this.state.businessId} />
|
|
547
562
|
:
|
|
548
563
|
null
|
|
@@ -561,6 +576,7 @@ export default class Posting extends React.Component {
|
|
|
561
576
|
loadLocations={this.loadLocations}
|
|
562
577
|
fullPosting={this.state.fullPosting}
|
|
563
578
|
businessId={this.state.businessId}
|
|
579
|
+
allowedToModify={this.state.allowedToModify}
|
|
564
580
|
locationList={this.state.locationList} />
|
|
565
581
|
:
|
|
566
582
|
null
|
|
@@ -577,6 +593,7 @@ export default class Posting extends React.Component {
|
|
|
577
593
|
context={this.props.context}
|
|
578
594
|
showLoading={() => this._showLoading()}
|
|
579
595
|
hideLoading={() => this._hideLoading()}
|
|
596
|
+
allowedToModify={this.state.allowedToModify}
|
|
580
597
|
fullPosting={this.state.fullPosting} />
|
|
581
598
|
:
|
|
582
599
|
null
|
|
@@ -592,6 +609,7 @@ export default class Posting extends React.Component {
|
|
|
592
609
|
showLoading={() => this._showLoading()}
|
|
593
610
|
hideLoading={() => this._hideLoading()}
|
|
594
611
|
fullPosting={this.state.fullPosting}
|
|
612
|
+
allowedToModify={this.state.allowedToModify}
|
|
595
613
|
maxPictures={this.state.maxPictures} />
|
|
596
614
|
:
|
|
597
615
|
null
|
|
@@ -607,6 +625,7 @@ export default class Posting extends React.Component {
|
|
|
607
625
|
context={this.props.context}
|
|
608
626
|
showLoading={() => this._showLoading()}
|
|
609
627
|
hideLoading={() => this._hideLoading()}
|
|
628
|
+
allowedToModify={this.state.allowedToModify}
|
|
610
629
|
fullPosting={this.state.fullPosting} />
|
|
611
630
|
:
|
|
612
631
|
null
|
|
@@ -623,6 +642,7 @@ export default class Posting extends React.Component {
|
|
|
623
642
|
context={this.props.context}
|
|
624
643
|
showLoading={() => this._showLoading()}
|
|
625
644
|
hideLoading={() => this._hideLoading()}
|
|
645
|
+
allowedToModify={this.state.allowedToModify}
|
|
626
646
|
fullPosting={this.state.fullPosting} />
|
|
627
647
|
:
|
|
628
648
|
null
|
|
@@ -660,6 +680,7 @@ export default class Posting extends React.Component {
|
|
|
660
680
|
showTopBar={() => this.props.showTopBar()}
|
|
661
681
|
hideTopBar={() => this.props.hideTopBar()}
|
|
662
682
|
close={this.goBack}
|
|
683
|
+
showFree={true}
|
|
663
684
|
goBack={() => this.goBack()} />
|
|
664
685
|
:
|
|
665
686
|
null
|
package/PostingEdit.js
CHANGED
|
@@ -57,15 +57,15 @@ export default class PostingEdit extends React.Component {
|
|
|
57
57
|
</View>
|
|
58
58
|
<Text style={commonStyles.editIconText}>{strings('edit.transaction')}</Text>
|
|
59
59
|
</TouchableOpacity>
|
|
60
|
-
{this.props.postingAd.promotionId ?
|
|
60
|
+
{this.props.postingAd.promotionId ?
|
|
61
61
|
null
|
|
62
|
-
|
|
62
|
+
:
|
|
63
63
|
<TouchableOpacity style={[commonStyles.col, commonStyles.col4, commonStyles.homeLinkBox]} activeOpacity={0.5} onPress={() => this.navigateToPublish2()}>
|
|
64
64
|
<View style={commonStyles.homeIcon} >
|
|
65
65
|
<Image source={require('./assets/images/location.png')} style={commonStyles.homeIconImage} />
|
|
66
66
|
</View>
|
|
67
67
|
<Text style={commonStyles.editIconText}>{strings('edit.location')}</Text>
|
|
68
|
-
</TouchableOpacity>
|
|
68
|
+
</TouchableOpacity>
|
|
69
69
|
}
|
|
70
70
|
<TouchableOpacity style={[commonStyles.col, commonStyles.col4, commonStyles.homeLinkBox]} activeOpacity={0.5} onPress={() => this.props.goToPage(Views.PUBLISH_3)}>
|
|
71
71
|
<View style={commonStyles.homeIcon} >
|
package/Preview.js
CHANGED
|
@@ -91,7 +91,7 @@ export default class Preview extends React.Component {
|
|
|
91
91
|
</View>
|
|
92
92
|
: null}
|
|
93
93
|
|
|
94
|
-
{this.props.businessId ?
|
|
94
|
+
{this.props.businessId && !this.state.showPaymentOnline ?
|
|
95
95
|
<View style={commonStyles.promoBox}>
|
|
96
96
|
<View style={commonStyles.row}>
|
|
97
97
|
<View style={this.state.superPremiumActive ? [commonStyles.col, commonStyles.col6, commonStyles.promoColPremium, commonStyles.disabled] : [commonStyles.col, commonStyles.col6, commonStyles.promoColPremium]}>
|
|
@@ -181,7 +181,7 @@ export default class Preview extends React.Component {
|
|
|
181
181
|
</View>
|
|
182
182
|
</View>
|
|
183
183
|
}
|
|
184
|
-
{
|
|
184
|
+
{this.state.showPaymentOnline ?
|
|
185
185
|
<View style={commonStyles.previewHighlightContainer}>
|
|
186
186
|
<TouchableOpacity style={[commonStyles.previewHighlightButton, commonStyles.alignCenter]} activeOpacity={0.5} onPress={() => this.props.highlight()}>
|
|
187
187
|
<Image style={commonStyles.previewHighlightImage} source={require('./assets/images/sparks.png')} />
|
package/Publish1.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Text, View, TouchableHighlight } from 'react-native';
|
|
2
|
+
import { Text, View, TouchableHighlight, TouchableOpacity } from 'react-native';
|
|
3
3
|
import { strings } from 'muba-i18n';
|
|
4
4
|
import commonStyles from './commonStyles';
|
|
5
5
|
import RadioButtonGroup from 'muba-radio-button-group';
|
|
6
6
|
import { Views } from './utils/Views';
|
|
7
|
+
import PopupAdvice from 'muba-popup-advice';
|
|
8
|
+
import { createIconSetFromFontello } from 'react-native-vector-icons';
|
|
9
|
+
import fontelloConfig from './fonts/config.json';
|
|
10
|
+
const FontAwesomeIcon = createIconSetFromFontello(fontelloConfig);
|
|
7
11
|
|
|
8
12
|
const PROMOTION_LOCATION = { method: 'GET', url: '/controller/businesses/{businessId}/promotion-location' };
|
|
9
13
|
const GET_TRANSACTIONS = { method: 'GET', url: '/controller/transactions' };
|
|
14
|
+
const GET_CHECK_TRANSACTION = { method: 'GET', url: '/controller/posting/check-transaction' };
|
|
15
|
+
const GET_CHANGED_AD_TYPE = { method: 'GET', url: '/controller/posting/changed-ad-type' };
|
|
10
16
|
|
|
11
17
|
export default class Publish1 extends React.Component {
|
|
12
18
|
constructor(props) {
|
|
@@ -104,27 +110,52 @@ export default class Publish1 extends React.Component {
|
|
|
104
110
|
}
|
|
105
111
|
}
|
|
106
112
|
|
|
107
|
-
async
|
|
113
|
+
async validate() {
|
|
108
114
|
if (this.validateForm()) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
115
|
+
const responseCheckTransaction = await this.props.request(this.props.context, GET_CHECK_TRANSACTION, {
|
|
116
|
+
adId: this.props.postingAd.id,
|
|
117
|
+
businessId: this.props.businessId,
|
|
118
|
+
transactionId: this.props.postingAd.transaction
|
|
119
|
+
});
|
|
120
|
+
const responseChangedAdType = await this.props.request(this.props.context, GET_CHANGED_AD_TYPE, {
|
|
121
|
+
adId: this.props.postingAd.id,
|
|
122
|
+
businessId: this.props.businessId,
|
|
123
|
+
adTypeId: this.props.postingAd.adType
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
if (responseCheckTransaction.value === 'true') {
|
|
127
|
+
for (var i = 0; i < this.state.typeBienOptions.elements.length; i++) {
|
|
128
|
+
if (this.state.typeBienOptions.elements[i].value == this.state.typeBienOptions.selectedItem) {
|
|
129
|
+
this.props.postingAd.adTypeDetails = this.state.typeBienOptions.elements[i].subList;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
113
132
|
}
|
|
114
|
-
}
|
|
115
133
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
this.props.goToPage(Views.PUBLISH_2);
|
|
134
|
+
if (responseChangedAdType.value === 'false') {
|
|
135
|
+
this.nextStep();
|
|
119
136
|
} else {
|
|
120
|
-
this.
|
|
137
|
+
this.popupAdTypeChanged.show();
|
|
121
138
|
}
|
|
139
|
+
|
|
122
140
|
} else {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
141
|
+
this.popupNoTransaction.show();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async nextStep() {
|
|
147
|
+
this.popupAdTypeChanged?.hide();
|
|
148
|
+
if (this.props.postingAd.id == null || this.props.fullPosting) {
|
|
149
|
+
if (this.props.postingAd.exactlyLocated && this.props.postingAd.promotionId == null) {
|
|
150
|
+
this.props.goToPage(Views.PUBLISH_2);
|
|
151
|
+
} else {
|
|
152
|
+
this.props.goToPage(Views.PUBLISH_2_B);
|
|
153
|
+
}
|
|
154
|
+
} else {
|
|
155
|
+
if (this.oldTransaction != this.state.transactionOptions.selectedItem || this.oldAdType != this.state.typeBienOptions.selectedItem) {
|
|
156
|
+
this.props.goToPage(Views.PUBLISH_3, true);
|
|
157
|
+
} else {
|
|
158
|
+
this.props.saveEditAd();
|
|
128
159
|
}
|
|
129
160
|
}
|
|
130
161
|
}
|
|
@@ -148,7 +179,8 @@ export default class Publish1 extends React.Component {
|
|
|
148
179
|
titleStyle={commonStyles.progressbarField}
|
|
149
180
|
radioButtonStyle={commonStyles.radioButton}
|
|
150
181
|
options={this.state.transactionOptions}
|
|
151
|
-
onClick={(value) => this.changeTransaction(value)}
|
|
182
|
+
onClick={(value) => this.changeTransaction(value)}
|
|
183
|
+
disabled={!this.props.allowedToModify.transaction} />
|
|
152
184
|
|
|
153
185
|
<RadioButtonGroup
|
|
154
186
|
style={commonStyles.progressbarFieldContainer}
|
|
@@ -159,11 +191,12 @@ export default class Publish1 extends React.Component {
|
|
|
159
191
|
radioButtonStyle={commonStyles.radioButton}
|
|
160
192
|
options={this.state.typeBienOptions}
|
|
161
193
|
onClick={(value) => this.changeAdType(value)}
|
|
162
|
-
ref={(element) => this.radioButtonAdType = element}
|
|
194
|
+
ref={(element) => this.radioButtonAdType = element}
|
|
195
|
+
disabled={!this.props.allowedToModify.adType} />
|
|
163
196
|
</View>
|
|
164
197
|
</View>
|
|
165
198
|
<View style={commonStyles.buttomButton}>
|
|
166
|
-
<TouchableHighlight style={commonStyles.actionButton} underlayColor="#ff5d00" onPress={() => this.
|
|
199
|
+
<TouchableHighlight style={commonStyles.actionButton} underlayColor="#ff5d00" onPress={() => this.validate()}>
|
|
167
200
|
<Text style={commonStyles.actionButtonText}>
|
|
168
201
|
{this.props.postingAd.id == null || this.props.fullPosting || this.oldTransaction != this.state.transactionOptions.selectedItem || this.oldAdType != this.state.typeBienOptions.selectedItem ?
|
|
169
202
|
strings('setup.next').toUpperCase()
|
|
@@ -172,6 +205,23 @@ export default class Publish1 extends React.Component {
|
|
|
172
205
|
</Text>
|
|
173
206
|
</TouchableHighlight>
|
|
174
207
|
</View>
|
|
208
|
+
|
|
209
|
+
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={popupNoTransaction => this.popupNoTransaction = popupNoTransaction}
|
|
210
|
+
title={strings('setup.cantPostTransaction')} icon={<FontAwesomeIcon name='block' />}>
|
|
211
|
+
<Text style={commonStyles.popupText}></Text>
|
|
212
|
+
</PopupAdvice>
|
|
213
|
+
|
|
214
|
+
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={popupAdTypeChanged => this.popupAdTypeChanged = popupAdTypeChanged}
|
|
215
|
+
title={strings('setup.adTypeChanged')} icon={<FontAwesomeIcon name='block' />} hideButton={true}>
|
|
216
|
+
<Text style={commonStyles.popupText}>{strings('setup.willValidateAgain')}</Text>
|
|
217
|
+
|
|
218
|
+
<TouchableOpacity style={[commonStyles.okBtnBoxPopup, commonStyles.okBtnPopup]} onPress={() => this.popupAdTypeChanged.hide()} >
|
|
219
|
+
<Text style={commonStyles.okBtnTextPopup}>{strings('setup.adviceOK')}</Text>
|
|
220
|
+
</TouchableOpacity>
|
|
221
|
+
<TouchableOpacity style={[commonStyles.okBtnBoxPopup, commonStyles.okBtnPopup, commonStyles.redBtnPopup]} onPress={() => this.nextStep()} >
|
|
222
|
+
<Text style={commonStyles.okBtnTextPopup}>{strings('setup.continue')}</Text>
|
|
223
|
+
</TouchableOpacity>
|
|
224
|
+
</PopupAdvice>
|
|
175
225
|
</View>
|
|
176
226
|
);
|
|
177
227
|
}
|
package/Publish2.js
CHANGED
|
@@ -22,7 +22,8 @@ export default class Publish2 extends React.Component {
|
|
|
22
22
|
latitude: props.postingAd.latitude,
|
|
23
23
|
longitude: props.postingAd.longitude,
|
|
24
24
|
zoom: props.postingAd.latitude != null && props.postingAd.longitude != null ? 15 : 9,
|
|
25
|
-
mapHeight: window.height - 276
|
|
25
|
+
mapHeight: window.height - 276,
|
|
26
|
+
errorCity: true
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
|
|
@@ -35,17 +36,22 @@ export default class Publish2 extends React.Component {
|
|
|
35
36
|
async nextStep() {
|
|
36
37
|
if ((this.props.postingAd.exactlyLocated && !this.state.movedMapPointer) || await this.validateLocation()) {
|
|
37
38
|
const responseCheckZone = await this.props.request(this.props.context, GET_CHECK_ZONE, {
|
|
39
|
+
adId: this.props.postingAd.id,
|
|
38
40
|
businessId: this.props.businessId,
|
|
39
|
-
cityId: this.props.postingAd.city
|
|
41
|
+
cityId: this.props.postingAd.city,
|
|
42
|
+
townId: this.props.postingAd.town
|
|
40
43
|
});
|
|
41
44
|
|
|
42
|
-
if (responseCheckZone.
|
|
45
|
+
if (responseCheckZone.correctCity && responseCheckZone.correctTown) {
|
|
43
46
|
if (this.props.postingAd.id == null || this.props.fullPosting) {
|
|
44
47
|
this.props.goToPage(Views.PUBLISH_3);
|
|
45
48
|
} else {
|
|
46
49
|
this.props.saveEditAd()
|
|
47
50
|
}
|
|
48
51
|
} else {
|
|
52
|
+
this.setState({
|
|
53
|
+
errorCity: !responseCheckZone.correctCity
|
|
54
|
+
})
|
|
49
55
|
this.popupNoZone.show();
|
|
50
56
|
}
|
|
51
57
|
} else {
|
|
@@ -117,7 +123,7 @@ export default class Publish2 extends React.Component {
|
|
|
117
123
|
containerStyle={{ height: this.state.mapHeight }}
|
|
118
124
|
showPopupPermissions={true}
|
|
119
125
|
location={{ latitude: this.state.latitude, longitude: this.state.longitude, zoom: this.state.zoom }}
|
|
120
|
-
editLocation={
|
|
126
|
+
editLocation={this.props.allowedToModify.location}
|
|
121
127
|
approximated={true}
|
|
122
128
|
showLoading={false}
|
|
123
129
|
ref={(element) => this.map = element}
|
|
@@ -134,12 +140,12 @@ export default class Publish2 extends React.Component {
|
|
|
134
140
|
<Text style={[commonStyles.carteNote, commonStyles.carteNoteMap]}>{strings('setup.notUseMap')}</Text>
|
|
135
141
|
</TouchableHighlight>
|
|
136
142
|
</View>
|
|
137
|
-
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={
|
|
143
|
+
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={popupShowAdvice => this.popupNoLocation = popupShowAdvice}
|
|
138
144
|
onClose={() => this.props.replacePage(Views.PUBLISH_2_B)} title={strings('setup.titleLocationNotFound')} onSubmit={() => { this.props.replacePage(Views.PUBLISH_2_B); return true; }} icon={<FontAwesomeIcon name='block' />}>
|
|
139
145
|
<Text style={commonStyles.popupText}>{strings('setup.locationNotFound')}</Text>
|
|
140
146
|
</PopupAdvice>
|
|
141
|
-
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={
|
|
142
|
-
title={strings('setup.
|
|
147
|
+
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={popupNoZone => this.popupNoZone = popupNoZone}
|
|
148
|
+
title={this.state.errorCity ? strings('setup.adCantPostCity') : strings('setup.adCantPostTown')} icon={<FontAwesomeIcon name='block' />}>
|
|
143
149
|
<Text style={commonStyles.popupText}></Text>
|
|
144
150
|
</PopupAdvice>
|
|
145
151
|
</View>
|
package/Publish2b.js
CHANGED
|
@@ -11,7 +11,6 @@ import fontelloConfig from './fonts/config.json';
|
|
|
11
11
|
const FontAwesomeIcon = createIconSetFromFontello(fontelloConfig);
|
|
12
12
|
|
|
13
13
|
const GET_CHECK_ZONE = { method: 'GET', url: '/controller/posting/check-zone' };
|
|
14
|
-
const LOAD_LOCATIONS = { method: 'GET', url: '/controller/countries/{countryCode}/locations' };
|
|
15
14
|
|
|
16
15
|
export default class Publish2b extends React.Component {
|
|
17
16
|
constructor(props) {
|
|
@@ -39,7 +38,8 @@ export default class Publish2b extends React.Component {
|
|
|
39
38
|
originalRegion: this.props.postingAd.region,
|
|
40
39
|
originalCity: this.props.postingAd.city,
|
|
41
40
|
originalDistrict: this.props.postingAd.district,
|
|
42
|
-
originalTown: this.props.postingAd.town
|
|
41
|
+
originalTown: this.props.postingAd.town,
|
|
42
|
+
errorCity: true
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -156,17 +156,22 @@ export default class Publish2b extends React.Component {
|
|
|
156
156
|
async nextStep() {
|
|
157
157
|
if (await this.validateForm()) {
|
|
158
158
|
const responseCheckZone = await this.props.request(this.props.context, GET_CHECK_ZONE, {
|
|
159
|
+
adId: this.props.postingAd.id,
|
|
159
160
|
businessId: this.props.businessId,
|
|
160
|
-
cityId: this.props.postingAd.city
|
|
161
|
+
cityId: this.props.postingAd.city,
|
|
162
|
+
townId: this.props.postingAd.town
|
|
161
163
|
});
|
|
162
164
|
|
|
163
|
-
if (responseCheckZone.
|
|
165
|
+
if (responseCheckZone.correctCity && responseCheckZone.correctTown) {
|
|
164
166
|
if (this.props.postingAd.id == null || this.props.fullPosting) {
|
|
165
167
|
this.props.goToPage(Views.PUBLISH_3);
|
|
166
168
|
} else {
|
|
167
169
|
this.props.saveEditAd();
|
|
168
170
|
}
|
|
169
171
|
} else {
|
|
172
|
+
this.setState({
|
|
173
|
+
errorCity: !responseCheckZone.correctCity
|
|
174
|
+
})
|
|
170
175
|
this.popupNoZone.show();
|
|
171
176
|
}
|
|
172
177
|
}
|
|
@@ -212,7 +217,7 @@ export default class Publish2b extends React.Component {
|
|
|
212
217
|
required={false}
|
|
213
218
|
onChangeText={(text) => this.onChangeAddress(text)}
|
|
214
219
|
textContainerStyle={commonStyles.inputContainer}
|
|
215
|
-
disabled={this.props.postingAd.promotionId != null}
|
|
220
|
+
disabled={!this.props.allowedToModify.address || this.props.postingAd.promotionId != null}
|
|
216
221
|
style={commonStyles.input} />
|
|
217
222
|
<InputSelect
|
|
218
223
|
label={strings('setup.region')}
|
|
@@ -223,7 +228,7 @@ export default class Publish2b extends React.Component {
|
|
|
223
228
|
options={this.state.regionOptions}
|
|
224
229
|
onChange={(value) => this.loadCities(value)}
|
|
225
230
|
ref={(element) => this.inputSelectRegion = element}
|
|
226
|
-
disabled={this.props.postingAd.promotionId != null}
|
|
231
|
+
disabled={!this.props.allowedToModify.region || this.props.postingAd.promotionId != null}
|
|
227
232
|
selectStyle={commonStyles.inputSelect} />
|
|
228
233
|
<InputSelect
|
|
229
234
|
label={strings('setup.city')}
|
|
@@ -234,7 +239,7 @@ export default class Publish2b extends React.Component {
|
|
|
234
239
|
options={this.state.cityOptions}
|
|
235
240
|
onChange={(value) => this.loadDistricts(value)}
|
|
236
241
|
ref={(element) => this.inputSelecCity = element}
|
|
237
|
-
disabled={this.state.cityOptions.elements.length === 1 || this.props.postingAd.promotionId != null}
|
|
242
|
+
disabled={!this.props.allowedToModify.city || this.state.cityOptions.elements.length === 1 || this.props.postingAd.promotionId != null}
|
|
238
243
|
selectStyle={commonStyles.inputSelect} />
|
|
239
244
|
<InputSelect
|
|
240
245
|
label={strings('setup.district')}
|
|
@@ -245,7 +250,7 @@ export default class Publish2b extends React.Component {
|
|
|
245
250
|
options={this.state.districtOptions}
|
|
246
251
|
onChange={(value) => this.loadTowns(value)}
|
|
247
252
|
ref={(element) => this.inputSelectDistrict = element}
|
|
248
|
-
disabled={this.state.districtOptions.elements.length === 1 || this.props.postingAd.promotionId != null}
|
|
253
|
+
disabled={!this.props.allowedToModify.district || this.state.districtOptions.elements.length === 1 || this.props.postingAd.promotionId != null}
|
|
249
254
|
visible={this.state.districtOptions.elements.length !== 2}
|
|
250
255
|
selectStyle={commonStyles.inputSelect} />
|
|
251
256
|
<InputSelect
|
|
@@ -257,7 +262,7 @@ export default class Publish2b extends React.Component {
|
|
|
257
262
|
options={this.state.townOptions}
|
|
258
263
|
onChange={(value) => this.props.postingAd.town = value}
|
|
259
264
|
ref={(element) => this.inputSelectTown = element}
|
|
260
|
-
disabled={this.state.townOptions.elements.length === 1 || this.props.postingAd.promotionId != null}
|
|
265
|
+
disabled={!this.props.allowedToModify.town || this.state.townOptions.elements.length === 1 || this.props.postingAd.promotionId != null}
|
|
261
266
|
visible={this.state.townOptions.elements.length !== 2}
|
|
262
267
|
selectStyle={commonStyles.inputSelect} />
|
|
263
268
|
</View>
|
|
@@ -266,16 +271,16 @@ export default class Publish2b extends React.Component {
|
|
|
266
271
|
<TouchableHighlight style={commonStyles.actionButton} underlayColor="#ff5d00" onPress={() => this.nextStep()}>
|
|
267
272
|
<Text style={commonStyles.actionButtonText}>{this.props.postingAd.id == null || this.props.fullPosting ? strings('setup.next').toUpperCase() : strings('setup.enregistrer').toUpperCase()}</Text>
|
|
268
273
|
</TouchableHighlight>
|
|
269
|
-
{this.props.postingAd.promotionId ?
|
|
270
|
-
|
|
271
|
-
:
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
274
|
+
{this.props.postingAd.promotionId ?
|
|
275
|
+
null
|
|
276
|
+
:
|
|
277
|
+
<TouchableHighlight underlayColor="rgba(0,0,0,0)" onPress={() => { this.props.postingAd.exactlyLocated = true; this.props.replacePage(Views.PUBLISH_2) }}>
|
|
278
|
+
<Text style={[commonStyles.carteNote, commonStyles.carteNoteMap]}>{strings('setup.useMap')}</Text>
|
|
279
|
+
</TouchableHighlight>
|
|
275
280
|
}
|
|
276
281
|
</View>
|
|
277
282
|
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={(popupNoZone) => { this.popupNoZone = popupNoZone; }}
|
|
278
|
-
title={strings('setup.
|
|
283
|
+
title={this.state.errorCity ? strings('setup.adCantPostCity') : strings('setup.adCantPostTown')} icon={<FontAwesomeIcon name='block' />}>
|
|
279
284
|
<Text style={commonStyles.popupText}></Text>
|
|
280
285
|
</PopupAdvice>
|
|
281
286
|
</View>
|
package/Publish3.js
CHANGED
|
@@ -7,8 +7,13 @@ import InputNumber from './shared/InputNumber.js';
|
|
|
7
7
|
import InputSelect from 'muba-input-select';
|
|
8
8
|
import InputText from 'muba-input-text';
|
|
9
9
|
import { Views } from './utils/Views';
|
|
10
|
+
import PopupAdvice from 'muba-popup-advice';
|
|
11
|
+
import { createIconSetFromFontello } from 'react-native-vector-icons';
|
|
12
|
+
import fontelloConfig from './fonts/config.json';
|
|
13
|
+
const FontAwesomeIcon = createIconSetFromFontello(fontelloConfig);
|
|
10
14
|
|
|
11
15
|
const GET_CURRENCIES = { method: 'GET', url: '/controller/countries/{countryCode}/currencies' };
|
|
16
|
+
const GET_CHECK_PRICE = { method: 'GET', url: '/controller/posting/check-price' };
|
|
12
17
|
|
|
13
18
|
export default class Publish3 extends React.Component {
|
|
14
19
|
constructor(props) {
|
|
@@ -54,7 +59,8 @@ export default class Publish3 extends React.Component {
|
|
|
54
59
|
surface: this.props.postingAd.surface,
|
|
55
60
|
price: this.props.postingAd.price,
|
|
56
61
|
adType: this.props.postingAd.adType,
|
|
57
|
-
requiredErrorCondition: false
|
|
62
|
+
requiredErrorCondition: false,
|
|
63
|
+
priceError: null
|
|
58
64
|
};
|
|
59
65
|
}
|
|
60
66
|
|
|
@@ -98,38 +104,50 @@ export default class Publish3 extends React.Component {
|
|
|
98
104
|
|
|
99
105
|
async nextStep() {
|
|
100
106
|
if (this.validateForm()) {
|
|
101
|
-
|
|
102
|
-
this.props.postingAd.
|
|
103
|
-
|
|
107
|
+
const responseCheckPrice = await this.props.request(this.props.context, GET_CHECK_PRICE, {
|
|
108
|
+
adId: this.props.postingAd.id,
|
|
109
|
+
businessId: this.props.businessId,
|
|
110
|
+
price: this.props.postingAd.price,
|
|
111
|
+
currency: this.props.postingAd.currency
|
|
112
|
+
});
|
|
104
113
|
|
|
105
|
-
if (
|
|
106
|
-
this.
|
|
107
|
-
|
|
114
|
+
if (responseCheckPrice.value == null) {
|
|
115
|
+
if (!this.state.pieces.length > 0) {
|
|
116
|
+
this.props.postingAd.pieces = 0;
|
|
117
|
+
}
|
|
108
118
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
if (!this.state.rooms.length > 0) {
|
|
120
|
+
this.props.postingAd.rooms = 0;
|
|
121
|
+
}
|
|
112
122
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
if (!this.state.baths.length > 0) {
|
|
124
|
+
this.props.postingAd.bathrooms = 0;
|
|
125
|
+
}
|
|
116
126
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
127
|
+
if (!this.state.pax.length > 0) {
|
|
128
|
+
this.props.postingAd.pax = 0;
|
|
129
|
+
}
|
|
120
130
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
131
|
+
if (!this.state.minNights.length > 0) {
|
|
132
|
+
this.props.postingAd.minNights = 0;
|
|
133
|
+
}
|
|
124
134
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
if (!this.state.pricePeriod.length > 0) {
|
|
136
|
+
this.props.postingAd.pricePeriod = null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (this.props.postingAd.id == null || this.props.fullPosting) {
|
|
140
|
+
this.props.goToPage(Views.PUBLISH_4);
|
|
130
141
|
} else {
|
|
131
|
-
this.props.
|
|
142
|
+
if (this.props.editingStepOne && this.props.postingAd.adTypeDetails.filter(function (detail) { return detail.value == "floorType" }).length > 0) {
|
|
143
|
+
this.props.goToPage(Views.PUBLISH_5, true);
|
|
144
|
+
} else {
|
|
145
|
+
this.props.saveEditAd();
|
|
146
|
+
}
|
|
132
147
|
}
|
|
148
|
+
} else {
|
|
149
|
+
this.setState({ priceError: responseCheckPrice.value.substring(1, responseCheckPrice.value.length - 1) })
|
|
150
|
+
this.invalidPrice.show();
|
|
133
151
|
}
|
|
134
152
|
}
|
|
135
153
|
}
|
|
@@ -205,6 +223,7 @@ export default class Publish3 extends React.Component {
|
|
|
205
223
|
onlyNumbers={true}
|
|
206
224
|
required={true}
|
|
207
225
|
maxValue={999999}
|
|
226
|
+
disabled={!this.props.allowedToModify.surface}
|
|
208
227
|
onChangeText={(text) => this.onChangeArea(text)}
|
|
209
228
|
onSubmitEditing={(event) => { this.inputTextPrice.focus(); }}
|
|
210
229
|
scroll={(ref) => this.props.scroll(ref)}
|
|
@@ -233,6 +252,7 @@ export default class Publish3 extends React.Component {
|
|
|
233
252
|
onlyNumbers={true}
|
|
234
253
|
required={true}
|
|
235
254
|
maxValue={999999999999999}
|
|
255
|
+
disabled={!this.props.allowedToModify.price}
|
|
236
256
|
onChangeText={(text) => this.onChangePrice(text)}
|
|
237
257
|
scroll={(ref) => this.props.scroll(ref)}
|
|
238
258
|
ref={(element) => this.inputTextPrice = element} />
|
|
@@ -243,6 +263,7 @@ export default class Publish3 extends React.Component {
|
|
|
243
263
|
selectStyle={commonStyles.inputSelect}
|
|
244
264
|
options={this.state.priceOptions}
|
|
245
265
|
placeholder={strings('setup.select')}
|
|
266
|
+
disabled={!this.props.allowedToModify.currency}
|
|
246
267
|
onChange={(value) => this.props.postingAd.currency = value} />
|
|
247
268
|
</View>
|
|
248
269
|
</View>
|
|
@@ -253,6 +274,7 @@ export default class Publish3 extends React.Component {
|
|
|
253
274
|
selectStyle={commonStyles.inputSelect}
|
|
254
275
|
options={this.state.pricePeriodOptions}
|
|
255
276
|
placeholder={strings('setup.select')}
|
|
277
|
+
disabled={!this.props.allowedToModify.pricePeriod}
|
|
256
278
|
onChange={(value) => this.props.postingAd.pricePeriod = value}
|
|
257
279
|
required={true} />
|
|
258
280
|
</View>
|
|
@@ -270,6 +292,7 @@ export default class Publish3 extends React.Component {
|
|
|
270
292
|
titleStyle={commonStyles.progressbarField}
|
|
271
293
|
radioButtonStyle={commonStyles.radioButton}
|
|
272
294
|
options={this.state.conditionOptions}
|
|
295
|
+
disabled={!this.props.allowedToModify.conservation}
|
|
273
296
|
onClick={(value) => this.onChangeCondition(value)}
|
|
274
297
|
ref={(element) => this.radioButtonCondition = element} />
|
|
275
298
|
:
|
|
@@ -284,6 +307,7 @@ export default class Publish3 extends React.Component {
|
|
|
284
307
|
minValue={1}
|
|
285
308
|
maxValue={99}
|
|
286
309
|
required={true}
|
|
310
|
+
disabled={!this.props.allowedToModify.pieces}
|
|
287
311
|
scroll={(ref) => this.props.scroll(ref)}
|
|
288
312
|
onChange={(value) => this.props.postingAd.pieces = value}
|
|
289
313
|
ref={(element) => this.inputNumberPieces = element} />
|
|
@@ -297,6 +321,7 @@ export default class Publish3 extends React.Component {
|
|
|
297
321
|
minValue={1}
|
|
298
322
|
maxValue={99}
|
|
299
323
|
required={true}
|
|
324
|
+
disabled={!this.props.allowedToModify.rooms}
|
|
300
325
|
scroll={(ref) => this.props.scroll(ref)}
|
|
301
326
|
onChange={(value) => this.props.postingAd.rooms = value}
|
|
302
327
|
ref={(element) => this.inputNumberRooms = element} />
|
|
@@ -310,6 +335,7 @@ export default class Publish3 extends React.Component {
|
|
|
310
335
|
minValue={1}
|
|
311
336
|
maxValue={99}
|
|
312
337
|
required={true}
|
|
338
|
+
disabled={!this.props.allowedToModify.baths}
|
|
313
339
|
scroll={(ref) => this.props.scroll(ref)}
|
|
314
340
|
onChange={(value) => this.props.postingAd.bathrooms = value}
|
|
315
341
|
ref={(element) => this.inputNumberBathrooms = element} />
|
|
@@ -323,6 +349,7 @@ export default class Publish3 extends React.Component {
|
|
|
323
349
|
minValue={1}
|
|
324
350
|
maxValue={99}
|
|
325
351
|
required={true}
|
|
352
|
+
disabled={!this.props.allowedToModify.pax}
|
|
326
353
|
scroll={(ref) => this.props.scroll(ref)}
|
|
327
354
|
onChange={(value) => this.props.postingAd.pax = value}
|
|
328
355
|
ref={(element) => this.inputNumberPax = element} />
|
|
@@ -336,6 +363,7 @@ export default class Publish3 extends React.Component {
|
|
|
336
363
|
minValue={1}
|
|
337
364
|
maxValue={99}
|
|
338
365
|
required={true}
|
|
366
|
+
disabled={!this.props.allowedToModify.minNights}
|
|
339
367
|
scroll={(ref) => this.props.scroll(ref)}
|
|
340
368
|
onChange={(value) => this.props.postingAd.minNights = value}
|
|
341
369
|
ref={(element) => this.inputNumberMinNights = element} />
|
|
@@ -355,6 +383,10 @@ export default class Publish3 extends React.Component {
|
|
|
355
383
|
</Text>
|
|
356
384
|
</TouchableHighlight>
|
|
357
385
|
</View>
|
|
386
|
+
<PopupAdvice dialogStyle={commonStyles.popupBox} ref={invalidPrice => this.invalidPrice = invalidPrice}
|
|
387
|
+
title={this.state.priceError} icon={<FontAwesomeIcon name='block' />}>
|
|
388
|
+
<Text style={commonStyles.popupText}></Text>
|
|
389
|
+
</PopupAdvice>
|
|
358
390
|
</View>
|
|
359
391
|
);
|
|
360
392
|
}
|
package/Publish4.js
CHANGED
|
@@ -49,6 +49,7 @@ export default class Publish4 extends React.Component {
|
|
|
49
49
|
referenceId={this.props.postingAd.id}
|
|
50
50
|
referenceType='AD'
|
|
51
51
|
required={true}
|
|
52
|
+
editable={this.props.allowedToModify.pictures}
|
|
52
53
|
maxPictures={this.props.maxPictures}
|
|
53
54
|
images={this.props.postingAd.images}
|
|
54
55
|
video={this.state.video}
|
package/Publish5.js
CHANGED
|
@@ -179,6 +179,7 @@ export default class Publish5 extends React.Component {
|
|
|
179
179
|
label={this.state.age[0].label}
|
|
180
180
|
labelStyle={commonStyles.progressbarField}
|
|
181
181
|
selectStyle={commonStyles.inputSelect}
|
|
182
|
+
disabled={!this.props.allowedToModify.age}
|
|
182
183
|
onChange={(value) => this.props.postingAd.age = value}
|
|
183
184
|
ref={(element) => this.inputSelectAge = element} />
|
|
184
185
|
</View>
|
|
@@ -195,6 +196,7 @@ export default class Publish5 extends React.Component {
|
|
|
195
196
|
label={this.state.floorType[0].label}
|
|
196
197
|
labelStyle={commonStyles.progressbarField}
|
|
197
198
|
selectStyle={commonStyles.inputSelect}
|
|
199
|
+
disabled={!this.props.allowedToModify.floorType}
|
|
198
200
|
onChange={(value) => this.props.postingAd.floorType = value}
|
|
199
201
|
ref={(element) => this.inputSelectFloorType = element} />
|
|
200
202
|
</View>
|
|
@@ -213,6 +215,7 @@ export default class Publish5 extends React.Component {
|
|
|
213
215
|
label={this.state.floorNumber[0].label}
|
|
214
216
|
labelStyle={commonStyles.progressbarField}
|
|
215
217
|
selectStyle={commonStyles.inputSelect}
|
|
218
|
+
disabled={!this.props.allowedToModify.floorNumber}
|
|
216
219
|
onChange={(value) => this.props.postingAd.floorNumber = value}
|
|
217
220
|
ref={(element) => this.inputSelectFloorNumber = element} />
|
|
218
221
|
</View>
|
|
@@ -229,6 +232,7 @@ export default class Publish5 extends React.Component {
|
|
|
229
232
|
label={this.state.orientation[0].label}
|
|
230
233
|
labelStyle={commonStyles.progressbarField}
|
|
231
234
|
selectStyle={commonStyles.inputSelect}
|
|
235
|
+
disabled={!this.props.allowedToModify.orientation}
|
|
232
236
|
onChange={(value) => this.props.postingAd.orientation = value}
|
|
233
237
|
ref={(element) => this.inputSelectOrientation = element} />
|
|
234
238
|
</View>
|
|
@@ -248,6 +252,7 @@ export default class Publish5 extends React.Component {
|
|
|
248
252
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "garden" })[0]?.label}
|
|
249
253
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "garden" }).length > 0}
|
|
250
254
|
selected={this.props.postingAd.garden}
|
|
255
|
+
disabled={!this.props.allowedToModify.features}
|
|
251
256
|
onPress={(value) => this.props.postingAd.garden = value}
|
|
252
257
|
ref={(element) => this.inputGarden = element} />
|
|
253
258
|
|
|
@@ -257,6 +262,7 @@ export default class Publish5 extends React.Component {
|
|
|
257
262
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "terrace" })[0]?.label}
|
|
258
263
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "terrace" }).length > 0}
|
|
259
264
|
selected={this.props.postingAd.terrace}
|
|
265
|
+
disabled={!this.props.allowedToModify.features}
|
|
260
266
|
onPress={(value) => this.props.postingAd.terrace = value}
|
|
261
267
|
ref={(element) => this.inputTerrace = element} />
|
|
262
268
|
|
|
@@ -266,6 +272,7 @@ export default class Publish5 extends React.Component {
|
|
|
266
272
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "garage" })[0]?.label}
|
|
267
273
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "garage" }).length > 0}
|
|
268
274
|
selected={this.props.postingAd.garage}
|
|
275
|
+
disabled={!this.props.allowedToModify.features}
|
|
269
276
|
onPress={(value) => this.props.postingAd.garage = value}
|
|
270
277
|
ref={(element) => this.inputGarage = element} />
|
|
271
278
|
|
|
@@ -275,6 +282,7 @@ export default class Publish5 extends React.Component {
|
|
|
275
282
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "elevator" })[0]?.label}
|
|
276
283
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "elevator" }).length > 0}
|
|
277
284
|
selected={this.props.postingAd.elevator}
|
|
285
|
+
disabled={!this.props.allowedToModify.features}
|
|
278
286
|
onPress={(value) => this.props.postingAd.elevator = value}
|
|
279
287
|
ref={(element) => this.inputElevator = element} />
|
|
280
288
|
|
|
@@ -284,6 +292,7 @@ export default class Publish5 extends React.Component {
|
|
|
284
292
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "seaViews" })[0]?.label}
|
|
285
293
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "seaViews" }).length > 0}
|
|
286
294
|
selected={this.props.postingAd.seaViews}
|
|
295
|
+
disabled={!this.props.allowedToModify.features}
|
|
287
296
|
onPress={(value) => this.props.postingAd.seaViews = value}
|
|
288
297
|
ref={(element) => this.inputSeaViews = element} />
|
|
289
298
|
|
|
@@ -293,6 +302,7 @@ export default class Publish5 extends React.Component {
|
|
|
293
302
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "mountainsViews" })[0]?.label}
|
|
294
303
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "mountainsViews" }).length > 0}
|
|
295
304
|
selected={this.props.postingAd.mountainsViews}
|
|
305
|
+
disabled={!this.props.allowedToModify.features}
|
|
296
306
|
onPress={(value) => this.props.postingAd.mountainsViews = value}
|
|
297
307
|
ref={(element) => this.inputMountainViews = element} />
|
|
298
308
|
|
|
@@ -302,6 +312,7 @@ export default class Publish5 extends React.Component {
|
|
|
302
312
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "pool" })[0]?.label}
|
|
303
313
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "pool" }).length > 0}
|
|
304
314
|
selected={this.props.postingAd.pool}
|
|
315
|
+
disabled={!this.props.allowedToModify.features}
|
|
305
316
|
onPress={(value) => this.props.postingAd.pool = value}
|
|
306
317
|
ref={(element) => this.inputPool = element} />
|
|
307
318
|
|
|
@@ -311,6 +322,7 @@ export default class Publish5 extends React.Component {
|
|
|
311
322
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "doorman" })[0]?.label}
|
|
312
323
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "doorman" }).length > 0}
|
|
313
324
|
selected={this.props.postingAd.doorman}
|
|
325
|
+
disabled={!this.props.allowedToModify.features}
|
|
314
326
|
onPress={(value) => this.props.postingAd.doorman = value}
|
|
315
327
|
ref={(element) => this.inputConcierge = element} />
|
|
316
328
|
|
|
@@ -320,6 +332,7 @@ export default class Publish5 extends React.Component {
|
|
|
320
332
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "storageRoom" })[0]?.label}
|
|
321
333
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "storageRoom" }).length > 0}
|
|
322
334
|
selected={this.props.postingAd.storageRoom}
|
|
335
|
+
disabled={!this.props.allowedToModify.features}
|
|
323
336
|
onPress={(value) => this.props.postingAd.storageRoom = value}
|
|
324
337
|
ref={(element) => this.inputStorageRoom = element} />
|
|
325
338
|
|
|
@@ -329,6 +342,7 @@ export default class Publish5 extends React.Component {
|
|
|
329
342
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "furnished" })[0]?.label}
|
|
330
343
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "furnished" }).length > 0}
|
|
331
344
|
selected={this.props.postingAd.furnished}
|
|
345
|
+
disabled={!this.props.allowedToModify.features}
|
|
332
346
|
onPress={(value) => this.props.postingAd.furnished = value}
|
|
333
347
|
ref={(element) => this.inputFurnished = element} />
|
|
334
348
|
<IconFeatures
|
|
@@ -337,6 +351,7 @@ export default class Publish5 extends React.Component {
|
|
|
337
351
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "exteriorFacade" })[0]?.label}
|
|
338
352
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "exteriorFacade" }).length > 0}
|
|
339
353
|
selected={this.props.postingAd.exteriorFacade}
|
|
354
|
+
disabled={!this.props.allowedToModify.features}
|
|
340
355
|
onPress={(value) => this.props.postingAd.exteriorFacade = value}
|
|
341
356
|
ref={(element) => this.inputExteriorFacade = element} />
|
|
342
357
|
</View>
|
|
@@ -350,6 +365,7 @@ export default class Publish5 extends React.Component {
|
|
|
350
365
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "moroccanLounge" })[0]?.label}
|
|
351
366
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "moroccanLounge" }).length > 0}
|
|
352
367
|
selected={this.props.postingAd.moroccanLounge}
|
|
368
|
+
disabled={!this.props.allowedToModify.features}
|
|
353
369
|
onPress={(value) => this.props.postingAd.moroccanLounge = value}
|
|
354
370
|
ref={(element) => this.inputSalonMarocain = element} />
|
|
355
371
|
|
|
@@ -359,6 +375,7 @@ export default class Publish5 extends React.Component {
|
|
|
359
375
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "europeanLounge" })[0]?.label}
|
|
360
376
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "europeanLounge" }).length > 0}
|
|
361
377
|
selected={this.props.postingAd.europeanLounge}
|
|
378
|
+
disabled={!this.props.allowedToModify.features}
|
|
362
379
|
onPress={(value) => this.props.postingAd.europeanLounge = value}
|
|
363
380
|
ref={(element) => this.inputSalonEuropean = element} />
|
|
364
381
|
|
|
@@ -368,6 +385,7 @@ export default class Publish5 extends React.Component {
|
|
|
368
385
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "satellite" })[0]?.label}
|
|
369
386
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "satellite" }).length > 0}
|
|
370
387
|
selected={this.props.postingAd.satellite}
|
|
388
|
+
disabled={!this.props.allowedToModify.features}
|
|
371
389
|
onPress={(value) => this.props.postingAd.satellite = value}
|
|
372
390
|
ref={(element) => this.inputSatellite = element} />
|
|
373
391
|
|
|
@@ -377,6 +395,7 @@ export default class Publish5 extends React.Component {
|
|
|
377
395
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "fireplace" })[0]?.label}
|
|
378
396
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "fireplace" }).length > 0}
|
|
379
397
|
selected={this.props.postingAd.fireplace}
|
|
398
|
+
disabled={!this.props.allowedToModify.features}
|
|
380
399
|
onPress={(value) => this.props.postingAd.fireplace = value}
|
|
381
400
|
ref={(element) => this.inputFirePlace = element} />
|
|
382
401
|
|
|
@@ -386,6 +405,7 @@ export default class Publish5 extends React.Component {
|
|
|
386
405
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "airConditioning" })[0]?.label}
|
|
387
406
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "airConditioning" }).length > 0}
|
|
388
407
|
selected={this.props.postingAd.airConditioning}
|
|
408
|
+
disabled={!this.props.allowedToModify.features}
|
|
389
409
|
onPress={(value) => this.props.postingAd.airConditioning = value}
|
|
390
410
|
ref={(element) => this.inputAir = element} />
|
|
391
411
|
|
|
@@ -395,6 +415,7 @@ export default class Publish5 extends React.Component {
|
|
|
395
415
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "heating" })[0]?.label}
|
|
396
416
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "heating" }).length > 0}
|
|
397
417
|
selected={this.props.postingAd.heating}
|
|
418
|
+
disabled={!this.props.allowedToModify.features}
|
|
398
419
|
onPress={(value) => this.props.postingAd.heating = value}
|
|
399
420
|
ref={(element) => this.inputHeating = element} />
|
|
400
421
|
|
|
@@ -404,6 +425,7 @@ export default class Publish5 extends React.Component {
|
|
|
404
425
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "security" })[0]?.label}
|
|
405
426
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "security" }).length > 0}
|
|
406
427
|
selected={this.props.postingAd.security}
|
|
428
|
+
disabled={!this.props.allowedToModify.features}
|
|
407
429
|
onPress={(value) => this.props.postingAd.security = value}
|
|
408
430
|
ref={(element) => this.inputSecurity = element} />
|
|
409
431
|
|
|
@@ -413,6 +435,7 @@ export default class Publish5 extends React.Component {
|
|
|
413
435
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "doubleGlazing" })[0]?.label}
|
|
414
436
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "doubleGlazing" }).length > 0}
|
|
415
437
|
selected={this.props.postingAd.doubleGlazing}
|
|
438
|
+
disabled={!this.props.allowedToModify.features}
|
|
416
439
|
onPress={(value) => this.props.postingAd.doubleGlazing = value}
|
|
417
440
|
ref={(element) => this.inputDoubleGlazing = element} />
|
|
418
441
|
|
|
@@ -422,6 +445,7 @@ export default class Publish5 extends React.Component {
|
|
|
422
445
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "reinforcedDoor" })[0]?.label}
|
|
423
446
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "reinforcedDoor" }).length > 0}
|
|
424
447
|
selected={this.props.postingAd.reinforcedDoor}
|
|
448
|
+
disabled={!this.props.allowedToModify.features}
|
|
425
449
|
onPress={(value) => this.props.postingAd.reinforcedDoor = value}
|
|
426
450
|
ref={(element) => this.inputReinforcedDoor = element} />
|
|
427
451
|
</View>
|
|
@@ -435,6 +459,7 @@ export default class Publish5 extends React.Component {
|
|
|
435
459
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "fullKitchen" })[0]?.label}
|
|
436
460
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "fullKitchen" }).length > 0}
|
|
437
461
|
selected={this.props.postingAd.fullKitchen}
|
|
462
|
+
disabled={!this.props.allowedToModify.features}
|
|
438
463
|
onPress={(value) => this.props.postingAd.fullKitchen = value}
|
|
439
464
|
ref={(element) => this.inputFullKitchen = element} />
|
|
440
465
|
|
|
@@ -444,6 +469,7 @@ export default class Publish5 extends React.Component {
|
|
|
444
469
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "fridge" })[0]?.label}
|
|
445
470
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "fridge" }).length > 0}
|
|
446
471
|
selected={this.props.postingAd.fridge}
|
|
472
|
+
disabled={!this.props.allowedToModify.features}
|
|
447
473
|
onPress={(value) => this.props.postingAd.fridge = value}
|
|
448
474
|
ref={(element) => this.inputFridge = element} />
|
|
449
475
|
|
|
@@ -453,6 +479,7 @@ export default class Publish5 extends React.Component {
|
|
|
453
479
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "oven" })[0]?.label}
|
|
454
480
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "oven" }).length > 0}
|
|
455
481
|
selected={this.props.postingAd.oven}
|
|
482
|
+
disabled={!this.props.allowedToModify.features}
|
|
456
483
|
onPress={(value) => this.props.postingAd.oven = value}
|
|
457
484
|
ref={(element) => this.inputOven = element} />
|
|
458
485
|
|
|
@@ -462,6 +489,7 @@ export default class Publish5 extends React.Component {
|
|
|
462
489
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "tv" })[0]?.label}
|
|
463
490
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "tv" }).length > 0}
|
|
464
491
|
selected={this.props.postingAd.tv}
|
|
492
|
+
disabled={!this.props.allowedToModify.features}
|
|
465
493
|
onPress={(value) => this.props.postingAd.tv = value}
|
|
466
494
|
ref={(element) => this.inputTv = element} />
|
|
467
495
|
|
|
@@ -471,6 +499,7 @@ export default class Publish5 extends React.Component {
|
|
|
471
499
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "washer" })[0]?.label}
|
|
472
500
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "washer" }).length > 0}
|
|
473
501
|
selected={this.props.postingAd.washer}
|
|
502
|
+
disabled={!this.props.allowedToModify.features}
|
|
474
503
|
onPress={(value) => this.props.postingAd.washer = value}
|
|
475
504
|
ref={(element) => this.inputWashing = element} />
|
|
476
505
|
|
|
@@ -480,6 +509,7 @@ export default class Publish5 extends React.Component {
|
|
|
480
509
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "microwave" })[0]?.label}
|
|
481
510
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "microwave" }).length > 0}
|
|
482
511
|
selected={this.props.postingAd.microwave}
|
|
512
|
+
disabled={!this.props.allowedToModify.features}
|
|
483
513
|
onPress={(value) => this.props.postingAd.microwave = value}
|
|
484
514
|
ref={(element) => this.inputMicrowaves = element} />
|
|
485
515
|
|
|
@@ -489,6 +519,7 @@ export default class Publish5 extends React.Component {
|
|
|
489
519
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "internet" })[0]?.label}
|
|
490
520
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "internet" }).length > 0}
|
|
491
521
|
selected={this.props.postingAd.internet}
|
|
522
|
+
disabled={!this.props.allowedToModify.features}
|
|
492
523
|
onPress={(value) => this.props.postingAd.internet = value}
|
|
493
524
|
ref={(element) => this.inputInternet = element} />
|
|
494
525
|
|
|
@@ -499,6 +530,7 @@ export default class Publish5 extends React.Component {
|
|
|
499
530
|
iconText={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "animals" })[0]?.label}
|
|
500
531
|
visible={this.state.adTypeDetails?.filter(function (detail) { return detail.value == "animals" }).length > 0}
|
|
501
532
|
selected={this.props.postingAd.animals}
|
|
533
|
+
disabled={!this.props.allowedToModify.features}
|
|
502
534
|
onPress={(value) => this.props.postingAd.animals = value}
|
|
503
535
|
ref={(element) => this.inputAnimals = element} />
|
|
504
536
|
</View>
|
|
@@ -534,7 +566,8 @@ class IconFeatures extends React.Component {
|
|
|
534
566
|
return (
|
|
535
567
|
this.props.visible ?
|
|
536
568
|
<View style={[commonStyles.characLinkBox, commonStyles.col, commonStyles.col3]}>
|
|
537
|
-
<TouchableOpacity activeOpacity={1} style={this.state.selected ?
|
|
569
|
+
<TouchableOpacity activeOpacity={1} style={[commonStyles.characIcon, this.state.selected ? commonStyles.characIconSelected : commonStyles.characIcon, this.props.disabled ? commonStyles.disabled : null]} onPress={() => this.onPressIcon()}
|
|
570
|
+
disabled={this.props.disabled}>
|
|
538
571
|
<Image style={commonStyles.characImage} source={this.state.selected ? this.props.iconHoverSource : this.props.iconSource} />
|
|
539
572
|
</TouchableOpacity>
|
|
540
573
|
<Text style={commonStyles.characIconText}>{this.props.iconText}</Text>
|
package/Publish6.js
CHANGED
|
@@ -168,6 +168,8 @@ export default class Publish6 extends React.Component {
|
|
|
168
168
|
{this.state.titleDescriptionLoaded ?
|
|
169
169
|
this.state.languages.map((item, index) =>
|
|
170
170
|
<LanguageItem languageItem={item} mainLanguage={this.props.postingAd.languageId}
|
|
171
|
+
disabledTitle={!this.props.allowedToModify.title}
|
|
172
|
+
disabledDescription={!this.props.allowedToModify.description}
|
|
171
173
|
isMultiLanguage={this.state.languages.length > 1}
|
|
172
174
|
scroll={(ref) => this.props.scroll(ref)}
|
|
173
175
|
ref={(element) => this.languageItem[index] = element}
|
|
@@ -189,6 +191,7 @@ export default class Publish6 extends React.Component {
|
|
|
189
191
|
textContainerStyle={{ marginTop: 10 }}
|
|
190
192
|
returnKeyType={"next"}
|
|
191
193
|
maxLength={50}
|
|
194
|
+
disabled={!this.props.allowedToModify.clientRef}
|
|
192
195
|
onSubmitEditing={(event) => { this.refs.phoneGroup.focus(); }} />
|
|
193
196
|
</View>
|
|
194
197
|
|
|
@@ -207,7 +210,7 @@ export default class Publish6 extends React.Component {
|
|
|
207
210
|
country={this.props.country}
|
|
208
211
|
maxPhones={3}
|
|
209
212
|
required={true}
|
|
210
|
-
disabled={
|
|
213
|
+
disabled={!this.props.allowedToModify.phone}
|
|
211
214
|
returnKeyType={"next"}
|
|
212
215
|
context={this.props.context}
|
|
213
216
|
request={this.props.request}
|
|
@@ -350,6 +353,7 @@ class LanguageItem extends React.Component {
|
|
|
350
353
|
textContainerStyle={commonStyles.inputContainer}
|
|
351
354
|
style={commonStyles.progressBarInputGrey}
|
|
352
355
|
language={this.state.languageItem.language}
|
|
356
|
+
disabled={this.props.disabledTitle}
|
|
353
357
|
ref={(element) => this.inputTextTitle = element} />
|
|
354
358
|
<InputText label={strings('setup.description')}
|
|
355
359
|
placeholder={strings('setup.description')}
|
|
@@ -361,6 +365,7 @@ class LanguageItem extends React.Component {
|
|
|
361
365
|
textContainerStyle={commonStyles.inputContainer}
|
|
362
366
|
style={[commonStyles.progressBarInputMulti, commonStyles.progressBarInputGrey]}
|
|
363
367
|
language={this.state.languageItem.language}
|
|
368
|
+
disabled={this.props.disabledDescription}
|
|
364
369
|
ref={(element) => this.inputTextDescription = element} />
|
|
365
370
|
</View>
|
|
366
371
|
</View>
|
package/commonStyles.js
CHANGED
package/locales/ar.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"adviceText1": " الحد الأقصى لحجم الصورة 5 ميغابايت ويجب ألا يتجاوز 3456 × 3456 بكسل. يجب تنزيل الصور بحجم .jpg أو .gif أو .png.",
|
|
36
36
|
"adviceText2": "المنشورات التي تتضمن صورة تتلقى ما يصل إلى 3 مرات أكثر من الزيارات. اختر كصورة غلاف تلك التي تمثل أفضل ميزات العقار.",
|
|
37
37
|
"adviceOK": "حسنا شكرا",
|
|
38
|
+
"continue": "متابعة",
|
|
38
39
|
"features": "الخصائص",
|
|
39
40
|
"mainFeatures": "خصائص عامة",
|
|
40
41
|
"inside": "الداخل",
|
|
@@ -110,10 +111,14 @@
|
|
|
110
111
|
"west": "الغرب",
|
|
111
112
|
"est": "شرق",
|
|
112
113
|
"highlight": "رفع قيمة",
|
|
113
|
-
"
|
|
114
|
+
"adCantPostCity": "لا يمكنك النشر في هذه المدينة",
|
|
115
|
+
"adCantPostTown": "لا يمكنك النشر في هذا الحي",
|
|
114
116
|
"noPromotionTitle": "أنت بحاجة إلى ترقية",
|
|
115
117
|
"noPromotionText": "لإنشاء إعلان جديد، أنت بحاجة إلى ترويج",
|
|
116
|
-
"login": "الهاتف ملكي، قم بتغيير الحساب"
|
|
118
|
+
"login": "الهاتف ملكي، قم بتغيير الحساب",
|
|
119
|
+
"cantPostTransaction": "لا يمكنك التبديل إلى هذه الفئة",
|
|
120
|
+
"adTypeChanged": "تم تعديل نوع الخاصية",
|
|
121
|
+
"willValidateAgain": "تم اكتشاف أن نوع الخاصية قد تم تعديله، لذلك سيتم إلغاء تنشيط الإعلان وسيخضع لعملية التحقق من الصحة مرة أخرى"
|
|
117
122
|
},
|
|
118
123
|
"product": {
|
|
119
124
|
"LISTING": "قوائم",
|
package/locales/en.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"adviceText1": "The size of the image has a maximum of 5 MB and must not exceed 3456 x 3456 pixels. Images must be downloaded in .jpg, .gif or .png format.",
|
|
36
36
|
"adviceText2": "Publications including a photo receive up to 3 times more visits. Choose as a cover photo which best represents the most important features of the property",
|
|
37
37
|
"adviceOK": "Close",
|
|
38
|
+
"continue": "Continue",
|
|
38
39
|
"features": "Features",
|
|
39
40
|
"mainFeatures": "Main Features",
|
|
40
41
|
"inside": "inside",
|
|
@@ -110,10 +111,14 @@
|
|
|
110
111
|
"west": "West",
|
|
111
112
|
"est": "Est",
|
|
112
113
|
"highlight": "Highlight",
|
|
113
|
-
"
|
|
114
|
+
"adCantPostCity": "You can't post in this city",
|
|
115
|
+
"adCantPostTown": "You cannot publish in this neighborhood",
|
|
114
116
|
"noPromotionTitle": "You need a promotion",
|
|
115
117
|
"noPromotionText": "To create a new ad, you need a promotion",
|
|
116
|
-
"login": "The phone is mine, change account"
|
|
118
|
+
"login": "The phone is mine, change account",
|
|
119
|
+
"cantPostTransaction": "You cannot change to this category",
|
|
120
|
+
"adTypeChanged": "Property type modified",
|
|
121
|
+
"willValidateAgain": "It has been detected that the property type has been modified, so the ad will be deactivated and will go through the validation process again"
|
|
117
122
|
},
|
|
118
123
|
"product": {
|
|
119
124
|
"LISTING": "Listing",
|
package/locales/es.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"adviceText1": "El tamaño de la imagen tiene un máximo de 20 MB y no debe exceder los 3456 x 3456 píxeles. Las imágenes deben descargarse en formato .jpg, .gif o .png.",
|
|
36
36
|
"adviceText2": "Las anuncios que incluyan fotos reciben hasta 3 veces más de visitas. Elija como foto de portada la que mejor represente las características más importantes de la propiedad.",
|
|
37
37
|
"adviceOK": "Cerrar",
|
|
38
|
+
"continue": "Continuar",
|
|
38
39
|
"features": "Características",
|
|
39
40
|
"mainFeatures": "Características generales",
|
|
40
41
|
"inside": "Interior",
|
|
@@ -110,10 +111,14 @@
|
|
|
110
111
|
"west": "Oeste",
|
|
111
112
|
"est": "Este",
|
|
112
113
|
"highlight": "Destacar",
|
|
113
|
-
"
|
|
114
|
+
"adCantPostCity": "No puedes publicar en esta ciudad",
|
|
115
|
+
"adCantPostTown": "No puedes publicar en este barrio",
|
|
114
116
|
"noPromotionTitle": "Necesitas una promoción",
|
|
115
117
|
"noPromotionText": "Para crear un nuevo anuncio, necesitas una promoción",
|
|
116
|
-
"login": "El teléfono es mío, cambiar de cuenta"
|
|
118
|
+
"login": "El teléfono es mío, cambiar de cuenta",
|
|
119
|
+
"cantPostTransaction": "No puedes cambiar a esta categoría",
|
|
120
|
+
"adTypeChanged": "Tipo de propiedad modificado",
|
|
121
|
+
"willValidateAgain": "Se ha detectado que se ha modificado el tipo de propiedad, así que el anuncio se desactivará y volverá a pasar por el proceso de validación"
|
|
117
122
|
},
|
|
118
123
|
"product": {
|
|
119
124
|
"LISTING": "Listing",
|
package/locales/fr.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"adviceText1": "La taille de l'image a un maximum de 5 Mo et ne doit pas dépasser 3456 x 3456 pixels. Les images doivent être téléchargées au format .jpg, .gif ou .png.",
|
|
36
36
|
"adviceText2": "Les publications incluant une photo reçoivent jusqu'à 3 fois plus de visites. Choisissez comme photo de couverture celle qui représente le mieux les caractéristiques les plus importantes du bien",
|
|
37
37
|
"adviceOK": "Fermer",
|
|
38
|
+
"continue": "Continuer",
|
|
38
39
|
"features": "Fonctionnalités",
|
|
39
40
|
"mainFeatures": "Caractéristiques générales",
|
|
40
41
|
"inside": "Intérieur",
|
|
@@ -110,10 +111,14 @@
|
|
|
110
111
|
"west": "Ouest",
|
|
111
112
|
"est": "Est",
|
|
112
113
|
"highlight": "Mettre en valeur",
|
|
113
|
-
"
|
|
114
|
+
"adCantPostCity": "Vous ne pouvez pas poster dans cette ville",
|
|
115
|
+
"adCantPostTown": "Vous ne pouvez pas publier dans ce quartier",
|
|
114
116
|
"noPromotionTitle": "Vous avez besoin d'une promotion",
|
|
115
117
|
"noPromotionText": "Pour créer une nouvelle annonce, vous avez besoin d'une promotion",
|
|
116
|
-
"login": "Le téléphone est à moi, changer de compte"
|
|
118
|
+
"login": "Le téléphone est à moi, changer de compte",
|
|
119
|
+
"cantPostTransaction": "Vous ne pouvez pas passer à cette catégorie",
|
|
120
|
+
"adTypeChanged": "Type de bien modifié",
|
|
121
|
+
"willValidateAgain": "Il a été détecté que le type de bien a été modifié, l'annonce sera donc désactivée et repassera par le processus de validation"
|
|
117
122
|
},
|
|
118
123
|
"product": {
|
|
119
124
|
"LISTING": "Liste",
|
package/locales/it.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"adviceText1": "La dimensione massima dell’immagine è di 20 MB e non può superare i 3456 x 3456 pixel. Le immagini devono essere scaricate in .jpg, .gif o .png.",
|
|
36
36
|
"adviceText2": "Le pubblicazioni con foto ricevono fino a 3 volte più visualizzazioni. Scegli l’immagine di copertina che meglio rappresenta la caratteristica principale dell’immobile",
|
|
37
37
|
"adviceOK": "Chiudi",
|
|
38
|
+
"continue": "Continua",
|
|
38
39
|
"features": "Caratteristiche",
|
|
39
40
|
"mainFeatures": "Caratteristiche generali ",
|
|
40
41
|
"inside": "Interno",
|
|
@@ -110,10 +111,14 @@
|
|
|
110
111
|
"west": "Ovest",
|
|
111
112
|
"est": "Est",
|
|
112
113
|
"highlight": "Evidenziare",
|
|
113
|
-
"
|
|
114
|
+
"adCantPostCity": "Non puoi postare in questa città",
|
|
115
|
+
"adCantPostTown": "Non è possibile pubblicare in questo quartiere",
|
|
114
116
|
"noPromotionTitle": "Hai bisogno di una promozione",
|
|
115
117
|
"noPromotionText": "Per creare un nuovo annuncio, è necessaria una promozione",
|
|
116
|
-
"login": "Il telefono è mio, cambia account"
|
|
118
|
+
"login": "Il telefono è mio, cambia account",
|
|
119
|
+
"cantPostTransaction": "Non è possibile passare a questa categoria",
|
|
120
|
+
"adTypeChanged": "Tipo di immobile modificato",
|
|
121
|
+
"willValidateAgain": "È stato rilevato che il tipo di proprietà è stato modificato, pertanto l'inserzione verrà disattivata e passerà nuovamente attraverso il processo di convalida"
|
|
117
122
|
},
|
|
118
123
|
"product": {
|
|
119
124
|
"LISTING": "Inserzioni",
|
package/locales/nl.json
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"adviceText1": "De afbeelding mag maximaal 20 MG zijn en mag niet meer dan 3456 x 3456 pixels zijn. Afbeeldingen moeten worden gedownload als .jpg, .gif of .png.",
|
|
36
36
|
"adviceText2": "Publicaties met een foto worden drie keer zo vaak bezocht. Kies een omslagfoto die de belangrijkste kenmerken van het pand het beste benadrukken",
|
|
37
37
|
"adviceOK": "Sluiten",
|
|
38
|
+
"continue": "Verdergaan",
|
|
38
39
|
"features": "Kenmerken",
|
|
39
40
|
"mainFeatures": "Algemene kenmerken",
|
|
40
41
|
"inside": "Interieur",
|
|
@@ -110,10 +111,14 @@
|
|
|
110
111
|
"west": "Oost",
|
|
111
112
|
"est": "North",
|
|
112
113
|
"highlight": "Highlighting",
|
|
113
|
-
"
|
|
114
|
+
"adCantPostCity": "In deze stad mag je niet posten",
|
|
115
|
+
"adCantPostTown": "U kunt niet publiceren in deze buurt",
|
|
114
116
|
"noPromotionTitle": "Je hebt een promotie nodig",
|
|
115
117
|
"noPromotionText": "Om een nieuwe advertentie te maken, heb je een promotie nodig",
|
|
116
|
-
"login": "De telefoon is van mij, account wijzigen"
|
|
118
|
+
"login": "De telefoon is van mij, account wijzigen",
|
|
119
|
+
"cantPostTransaction": "U kunt niet overschakelen naar deze categorie",
|
|
120
|
+
"adTypeChanged": "Eigenschapstype gewijzigd",
|
|
121
|
+
"willValidateAgain": "Er is gedetecteerd dat het type eigenschap is gewijzigd, dus de advertentie wordt gedeactiveerd en doorloopt het validatieproces opnieuw"
|
|
117
122
|
},
|
|
118
123
|
"product": {
|
|
119
124
|
"LISTING": "Advertenties",
|
package/package.json
CHANGED
package/shared/InputNumber.js
CHANGED
|
@@ -60,13 +60,13 @@ export default class InputNumber extends React.Component {
|
|
|
60
60
|
{this.state.minValueError ? <Text style={[commonStyles.subNote, commonStyles.red]}> {strings('setup.requiredField')}</Text> : null}
|
|
61
61
|
</View>
|
|
62
62
|
<View style={commonStyles.row}>
|
|
63
|
-
<TouchableHighlight style={[commonStyles.numberBtnSpan]} underlayColor="#666" onPress={() => this.subtract(this.state.numberValue)}>
|
|
63
|
+
<TouchableHighlight style={[commonStyles.numberBtnSpan, this.props.disabled ? commonStyles.disabled : null]} underlayColor="#666" onPress={() => this.subtract(this.state.numberValue)} disabled={this.props.disabled}>
|
|
64
64
|
<Text style={commonStyles.numberBtnSpanText}>–</Text>
|
|
65
65
|
</TouchableHighlight>
|
|
66
66
|
<View style={commonStyles.numberInput}>
|
|
67
67
|
<Text style={commonStyles.numberInputText}>{this.state.numberValue ? this.state.numberValue : 0}</Text>
|
|
68
68
|
</View>
|
|
69
|
-
<TouchableHighlight style={[commonStyles.numberBtnSpan]} underlayColor="#666" onPress={() => this.add(this.state.numberValue)}>
|
|
69
|
+
<TouchableHighlight style={[commonStyles.numberBtnSpan, this.props.disabled ? commonStyles.disabled : null]} underlayColor="#666" onPress={() => this.add(this.state.numberValue)} disabled={this.props.disabled}>
|
|
70
70
|
<Text style={commonStyles.numberBtnSpanText}>+</Text>
|
|
71
71
|
</TouchableHighlight>
|
|
72
72
|
</View>
|