Skip to content

Commit 3b416e4

Browse files
author
vikasrohit
authored
Merge pull request #3349 from appirio-tech/hotfix/post-release-2.4.15.1
Hotfix/post release 2.4.15.1
2 parents a6d6026 + b404c5a commit 3b416e4

File tree

6 files changed

+247
-29
lines changed

6 files changed

+247
-29
lines changed

src/components/AssetsLibrary/FilesGridView.jsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import EditFileAttachment from '../LinksMenu/EditFileAttachment'
1111
import SubFolder from './SubFolder'
1212
import ItemOperations from './ItemOperations'
1313
import UserTooltip from '../User/UserTooltip'
14+
import FileIcon from '../../components/FileIcon'
1415

1516
import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg'
1617

@@ -163,16 +164,10 @@ const FilesGridView = ({
163164
/>
164165
</li>)
165166
} else {
166-
let iconPath
167-
try {
168-
iconPath = require('../../assets/icons/' + link.title.split('.')[1] +'.svg')
169-
} catch(err) {
170-
iconPath = require('../../assets/icons/default.svg')
171-
}
172167
return (
173168
<li styleName="assets-gridview-row" key={'assets-gridview-item-' +idx}>
174169
<div styleName="flex-item item-type">
175-
<img width={42} height={42} src={iconPath} />
170+
<FileIcon type={link.title.split('.')[1]} />
176171
</div>
177172
<div styleName="flex-item item-name"><p>{renderLink(link)}</p></div>
178173
<div styleName="flex-item item-created-by">

src/components/AssetsLibrary/SubFolder.jsx

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import DeleteFileLinkModal from '../LinksMenu/DeleteFileLinkModal'
77
import ItemOperations from './ItemOperations'
88
import UserTooltip from '../User/UserTooltip'
99
import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg'
10+
import FileIcon from '../../components/FileIcon'
1011

1112
import './GridView.scss'
1213
class SubFolder extends React.Component {
@@ -92,19 +93,17 @@ class SubFolder extends React.Component {
9293
</li>
9394
)
9495
}
95-
let iconPath
96-
try {
97-
if (isLinkSubFolder) {
98-
//Link Icon here
99-
iconPath = require('../../assets/icons/link-12.svg')
100-
} else {
101-
iconPath = require('../../assets/icons/' + childLink.title.split('.')[1] +'.svg')
102-
}
103-
} catch(err) {
104-
iconPath = require('../../assets/icons/default.svg')
96+
let iconKey
97+
if (isLinkSubFolder) {
98+
// Key Icon here
99+
iconKey = 'link-12'
100+
} else {
101+
iconKey = childLink.title.split('.')[1]
105102
}
106103
return (<li styleName="assets-gridview-row" key={`childlink-${childLink.address}-${i}`}>
107-
<div styleName="flex-item item-type"><img width={42} height={42} src={ iconPath } /></div>
104+
<div styleName="flex-item item-type">
105+
<FileIcon type={iconKey} />
106+
</div>
108107
<div styleName="flex-item item-name"><p>{renderLink(childLink)}</p></div>
109108
<div styleName="flex-item item-created-by">
110109
{!owner && childLink.createdBy !== 'CoderBot' && (<div className="user-block txt-italic">Unknown</div>)}

src/components/FileIcon.jsx

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
/**
2+
* FileIcon component
3+
*
4+
* Renders file icon depend on the file type
5+
*/
6+
import React from 'react'
7+
import PT from 'prop-types'
8+
9+
import IconDefault from '../assets/icons/default.svg'
10+
import IconAac from '../assets/icons/aac.svg'
11+
import IconAi from '../assets/icons/ai.svg'
12+
import IconAse from '../assets/icons/ase.svg'
13+
import IconAsp from '../assets/icons/asp.svg'
14+
import IconAspx from '../assets/icons/aspx.svg'
15+
import IconAvi from '../assets/icons/avi.svg'
16+
import IconBmp from '../assets/icons/bmp.svg'
17+
import IconCpp from '../assets/icons/c++.svg'
18+
import IconCad from '../assets/icons/cad.svg'
19+
import IconCfm from '../assets/icons/cfm.svg'
20+
import IconCgi from '../assets/icons/cgi.svg'
21+
import IconCsh from '../assets/icons/csh.svg'
22+
import IconCss from '../assets/icons/css.svg'
23+
import IconCsv from '../assets/icons/csv.svg'
24+
import IconDmg from '../assets/icons/dmg.svg'
25+
import IconDoc from '../assets/icons/doc.svg'
26+
import IconDocx from '../assets/icons/docx.svg'
27+
import IconEps from '../assets/icons/eps.svg'
28+
import IconEpub from '../assets/icons/epub.svg'
29+
import IconExe from '../assets/icons/exe.svg'
30+
import IconFlash from '../assets/icons/flash.svg'
31+
import IconFlv from '../assets/icons/flv.svg'
32+
import IconFont from '../assets/icons/font.svg'
33+
import IconGif from '../assets/icons/gif.svg'
34+
import IconGpx from '../assets/icons/gpx.svg'
35+
import IconGzip from '../assets/icons/gzip.svg'
36+
import IconHtml from '../assets/icons/html.svg'
37+
import IconIcs from '../assets/icons/ics.svg'
38+
import IconIso from '../assets/icons/iso.svg'
39+
import IconJar from '../assets/icons/jar.svg'
40+
import IconJava from '../assets/icons/java.svg'
41+
import IconJpg from '../assets/icons/jpg.svg'
42+
import IconJs from '../assets/icons/js.svg'
43+
import IconJsp from '../assets/icons/jsp.svg'
44+
import IconLog from '../assets/icons/log.svg'
45+
import IconMax from '../assets/icons/max.svg'
46+
import IconMd from '../assets/icons/md.svg'
47+
import IconMkv from '../assets/icons/mkv.svg'
48+
import IconMov from '../assets/icons/mov.svg'
49+
import IconMp3 from '../assets/icons/mp3.svg'
50+
import IconMp4 from '../assets/icons/mp4.svg'
51+
import IconMpg from '../assets/icons/mpg.svg'
52+
import IconObj from '../assets/icons/obj.svg'
53+
import IconOtf from '../assets/icons/otf.svg'
54+
import IconPdf from '../assets/icons/pdf.svg'
55+
import IconPhp from '../assets/icons/php.svg'
56+
import IconPng from '../assets/icons/png.svg'
57+
import IconPptx from '../assets/icons/pptx.svg'
58+
import IconPsd from '../assets/icons/psd.svg'
59+
import IconPy from '../assets/icons/py.svg'
60+
import IconRar from '../assets/icons/rar.svg'
61+
import IconRaw from '../assets/icons/raw.svg'
62+
import IconRb from '../assets/icons/rb.svg'
63+
import IconRss from '../assets/icons/rss.svg'
64+
import IconRtf from '../assets/icons/rtf.svg'
65+
import IconSketch from '../assets/icons/sketch.svg'
66+
import IconSql from '../assets/icons/sql.svg'
67+
import IconSrt from '../assets/icons/srt.svg'
68+
import IconSvg from '../assets/icons/svg.svg'
69+
import IconTif from '../assets/icons/tif.svg'
70+
import IconTiff from '../assets/icons/tiff.svg'
71+
import IconTtf from '../assets/icons/ttf.svg'
72+
import IconTxt from '../assets/icons/txt.svg'
73+
import IconWav from '../assets/icons/wav.svg'
74+
import IconXml from '../assets/icons/xml.svg'
75+
import IconZip from '../assets/icons/zip.svg'
76+
import IconLink12 from '../assets/icons/link-12.svg'
77+
78+
const FileIcon = ({ type }) => {
79+
// if type is defined as a relative path to the icon, convert it to icon "id"
80+
const typeAsPath = type && type.match(/(?:\.\.\/)+assets\/icons\/([^.]+)\.svg/)
81+
if (typeAsPath) {
82+
type = typeAsPath[1]
83+
}
84+
85+
switch(type){
86+
case 'aac':
87+
return <IconAac className="icon-aac"/>
88+
case 'ai':
89+
return <IconAi className="icon-ai"/>
90+
case 'ase':
91+
return <IconAse className="icon-ase"/>
92+
case 'asp':
93+
return <IconAsp className="icon-asp"/>
94+
case 'aspx':
95+
return <IconAspx className="icon-aspx"/>
96+
case 'avi':
97+
return <IconAvi className="icon-avi"/>
98+
case 'bmp':
99+
return <IconBmp className="icon-bmp"/>
100+
case 'c++':
101+
return <IconCpp className="icon-c++"/>
102+
case 'cad':
103+
return <IconCad className="icon-cad"/>
104+
case 'cfm':
105+
return <IconCfm className="icon-cfm"/>
106+
case 'cgi':
107+
return <IconCgi className="icon-cgi"/>
108+
case 'csh':
109+
return <IconCsh className="icon-csh"/>
110+
case 'css':
111+
return <IconCss className="icon-css"/>
112+
case 'csv':
113+
return <IconCsv className="icon-csv"/>
114+
case 'dmg':
115+
return <IconDmg className="icon-dmg"/>
116+
case 'doc':
117+
return <IconDoc className="icon-doc"/>
118+
case 'docx':
119+
return <IconDocx className="icon-docx"/>
120+
case 'eps':
121+
return <IconEps className="icon-eps"/>
122+
case 'epub':
123+
return <IconEpub className="icon-epub"/>
124+
case 'exe':
125+
return <IconExe className="icon-exe"/>
126+
case 'flash':
127+
return <IconFlash className="icon-flash"/>
128+
case 'flv':
129+
return <IconFlv className="icon-flv"/>
130+
case 'font':
131+
return <IconFont className="icon-font"/>
132+
case 'gif':
133+
return <IconGif className="icon-gif"/>
134+
case 'gpx':
135+
return <IconGpx className="icon-gpx"/>
136+
case 'gzip':
137+
return <IconGzip className="icon-gzip"/>
138+
case 'html':
139+
return <IconHtml className="icon-html"/>
140+
case 'ics':
141+
return <IconIcs className="icon-ics"/>
142+
case 'iso':
143+
return <IconIso className="icon-iso"/>
144+
case 'jar':
145+
return <IconJar className="icon-jar"/>
146+
case 'java':
147+
return <IconJava className="icon-java"/>
148+
case 'jpg':
149+
return <IconJpg className="icon-jpg"/>
150+
case 'js':
151+
return <IconJs className="icon-js"/>
152+
case 'jsp':
153+
return <IconJsp className="icon-jsp"/>
154+
case 'log':
155+
return <IconLog className="icon-log"/>
156+
case 'max':
157+
return <IconMax className="icon-max"/>
158+
case 'md':
159+
return <IconMd className="icon-md"/>
160+
case 'mkv':
161+
return <IconMkv className="icon-mkv"/>
162+
case 'mov':
163+
return <IconMov className="icon-mov"/>
164+
case 'mp3':
165+
return <IconMp3 className="icon-mp3"/>
166+
case 'mp4':
167+
return <IconMp4 className="icon-mp4"/>
168+
case 'mpg':
169+
return <IconMpg className="icon-mpg"/>
170+
case 'obj':
171+
return <IconObj className="icon-obj"/>
172+
case 'otf':
173+
return <IconOtf className="icon-otf"/>
174+
case 'pdf':
175+
return <IconPdf className="icon-pdf"/>
176+
case 'php':
177+
return <IconPhp className="icon-php"/>
178+
case 'png':
179+
return <IconPng className="icon-png"/>
180+
case 'pptx':
181+
return <IconPptx className="icon-pptx"/>
182+
case 'psd':
183+
return <IconPsd className="icon-psd"/>
184+
case 'py':
185+
return <IconPy className="icon-py"/>
186+
case 'rar':
187+
return <IconRar className="icon-rar"/>
188+
case 'raw':
189+
return <IconRaw className="icon-raw"/>
190+
case 'rb':
191+
return <IconRb className="icon-rb"/>
192+
case 'rss':
193+
return <IconRss className="icon-rss"/>
194+
case 'rtf':
195+
return <IconRtf className="icon-rtf"/>
196+
case 'sketch':
197+
return <IconSketch className="icon-sketch"/>
198+
case 'sql':
199+
return <IconSql className="icon-sql"/>
200+
case 'srt':
201+
return <IconSrt className="icon-srt"/>
202+
case 'svg':
203+
return <IconSvg className="icon-svg"/>
204+
case 'tif':
205+
return <IconTif className="icon-tif"/>
206+
case 'tiff':
207+
return <IconTiff className="icon-tiff"/>
208+
case 'ttf':
209+
return <IconTtf className="icon-ttf"/>
210+
case 'txt':
211+
return <IconTxt className="icon-txt"/>
212+
case 'wav':
213+
return <IconWav className="icon-wav"/>
214+
case 'xml':
215+
return <IconXml className="icon-xml"/>
216+
case 'zip':
217+
return <IconZip className="icon-zip"/>
218+
case 'link-12':
219+
return <IconLink12 className="icon-link-12"/>
220+
default:
221+
// this will be default icon
222+
return <IconDefault className="icon-default"/>
223+
}
224+
}
225+
226+
FileIcon.propTypes = {
227+
type: PT.string,
228+
}
229+
230+
export default FileIcon

src/components/MobilePage/MobilePage.scss

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,6 @@
1111
overflow: hidden;
1212
overflow-y: scroll;
1313
}
14-
15-
.mobile-page-gateway {
16-
z-index: 10000;
17-
position: absolute;
18-
top: 0;
19-
left: 0;
20-
width: 100%;
21-
}
2214
}
2315

2416
.container {
@@ -29,7 +21,7 @@
2921
position: absolute;
3022
right: 0;
3123
top: 0;
32-
z-index: 1000;
24+
z-index: 2000;
3325

3426
&.keep-toolbar {
3527
padding-top: 60px;

src/config/projectWizard/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ export function getProductEstimate(projectTemplate, projectData) {
590590
_.forOwn(preparedConditions, (cond, placeholder) => {
591591
preparedConditions[placeholder] = evaluate(cond, flatProjectData) === true ? '1 == 1' : '1 == 2'
592592
})
593-
const baseBlocks = getFilteredBuildingBlocks(priceConfig, buildingBlocks, preparedConditions, flatProjectData)
593+
const baseBlocks = getFilteredBuildingBlocks(priceConfig, buildingBlocks, preparedConditions, flatProjectData, true)
594594
const addonBlocks = getFilteredBuildingBlocks(addonPriceConfig, buildingBlocks, preparedConditions, flatProjectData, true)
595595
// for each addon block, check if user has specified quantity for the selected addons
596596
addonBlocks.forEach((addonBlock) => {

src/projects/actions/projectMember.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ export function removeProjectMember(projectId, memberId, isUserLeaving) {
9090

9191
function inviteMembersWithData(dispatch, projectId, emailIds, handles, role) {
9292
return new Promise((resolve, reject) => {
93-
return dispatch(loadMembersByHandle(handles))
93+
// remove `@` from handles before making a request to the server as server may not support format with `@`
94+
const clearedHandles = handles ? handles.map(handle => handle.replace(/^@/, '')) : []
95+
return dispatch(loadMembersByHandle(clearedHandles))
9496
.then(({ value }) => {
9597
const req = {}
9698
if(value && value.length > 0) {

0 commit comments

Comments
 (0)