diff --git a/app/Announcements.js b/app/Announcements.js index a3f8bdd..45c5e2c 100644 --- a/app/Announcements.js +++ b/app/Announcements.js @@ -40,14 +40,22 @@ const getCurrentDate=()=>{ const Announcement = ({item}) => { const todayDate = getCurrentDate() const itemDate = new Date(item.item.date) - const dateInfo = todayDate.getTime()===itemDate.getTime()&&item.item.time!==undefined?item.item.time:(item.item.date+", " + item.item.time) + + var time_array = item.item.time.split(':') + if (time_array[0]>12) { + var time = String(parseInt(time_array[0])-12) + ':' + String(time_array[1]) + ' PM' + } + else { + var time = String(time_array[0])+':'+String(time_array[1]) + ' AM' + } + const dateInfo = todayDate.getTime()===itemDate.getTime()&&item.item.time!==undefined?item.item.time:(item.item.date+", " + time) return ( {item.item.message} - {dateInfo!==undefined?{dateInfo}:<>} + {dateInfo!==undefined?Posted {dateInfo}:<>} ) @@ -84,7 +92,7 @@ export const TeacherList = ({route}) => { var futureBoolean = true for (var i = 0; i < route.params.data.length; i++) { - const itemDate = new Date(route.params.data[i].date) + const itemDate = new Date(parseInt(String(route.params.data[i].date).split('-')[0]), parseInt(String(route.params.data[i].date).split('-')[1])-1, parseInt(String(route.params.data[i].date).split('-')[2])) if (itemDate.getTime() == todayDate.getTime()) { today.push(route.params.data[i]) } @@ -173,8 +181,8 @@ class Announcements extends React.Component { return response.text() }) .then((txt) => { - const data = JSON.parse(txt).data; - console.log(data) + const data = JSON.parse(txt); + data.sort((a,b)=>a.id-b.id) const teacherNames = [...new Set(data.filter(x=>x.teacher!=null&&x.teacher.trim()!=='').map(x=>x.teacher))]; teacherNames.sort() this.setState({data: data, teacherNames: teacherNames.map(x=>({name:x})),isLoading:false}); @@ -185,7 +193,6 @@ class Announcements extends React.Component { render() { return ( - x.teacher==null||x.teacher.trim()==='')} name="No Teacher" navigation={this.props.navigation} /> this.state.favoriteNames.map(({name})=>name).indexOf(x.name) < 0))} renderItem={({item})=>= 0?'red':'lightgrey'} item={item} data={this.state.data.filter(x=>x.teacher===item.name)} name={item.name} navigation={this.props.navigation} icon={true} addFavorite={this.addFavorite}/>} diff --git a/app/Calendar.js b/app/Calendar.js index 88a876c..10384ad 100644 --- a/app/Calendar.js +++ b/app/Calendar.js @@ -174,7 +174,7 @@ class Calendar extends React.Component { } getData() { - fetch(`http://127.0.0.1:8080/api/en/events`,{ + fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/events`,{ headers: { 'Cache-Control': 'no-cache' } }) diff --git a/app/ChallengeWeek.js b/app/ChallengeWeek.js index 01a1099..70b4e73 100644 --- a/app/ChallengeWeek.js +++ b/app/ChallengeWeek.js @@ -28,7 +28,8 @@ class ChallengeWeek extends React.Component { super(props) this.state = { isLoading: true, - flip: true + flip: true, + data:[] } } @@ -40,74 +41,31 @@ class ChallengeWeek extends React.Component { ).then((response) => { return response.text(); }).then((json) => { - this.setState({data: JSON.parse(json),isLoading:false}); + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({data: data,isLoading:false}); }).catch((error) => console.error(error)) - - /*this.animatedValue=new Animated.Value(0); - this.value=0; - this.animatedValue.addListener(({value}) => { - this.value=value; - }) - this.frontInterpolate = this.animatedValue.interpolate({ - inputRange:[0,180], - outputRange:['0deg', '180deg'], - }) - this.backInterpolate = this.animatedValue.interpolate({ - inputRange:[0,180], - outputRange: ['180deg','360deg'] - })*/ } - - /*flipCard() { - if (this.value >= 90) { - Animated.spring(this.animatedValue, { - toValue:0, - friction:8, - tension: 10 - }).start(); - } - else { - Animated.spring(this.animatedValue, { - toValue:180, - friction: 8, - tension: 10 - }).start(); - } - this.setState({flip:!this.state.flip}) - }*/ render() { - {/*const frontAnimatedStyle = { - transform: [ - {rotateY:this.frontInterpolate} - ] - } - const backAnimatedStyle = { - transform: [ - {rotateY:this.backInterpolate} - ] - } - var styling={} - var styling2={} - if (this.state.flip) { - styling=({height: '100%', width: '100%', backgroundColor: 'white', borderRadius: 20, textAlign: 'center', display: 'flex', alignContent: 'center', padding: '5%', paddingTop: '15%', borderColor: 'red', borderWidth: 1}) - styling2=({display:'none'}) - } - else { - styling=({display:'none'}) - styling2=({height: '100%', width: '100%', backgroundColor: 'white', borderRadius: 20, textAlign: 'center', display: 'flex', alignContent: 'center', padding: '5%', paddingTop: '15%', borderColor: 'red', borderWidth: 1}) - }*/} - if (this.state.isLoading) { return } else { - return ( - - {this.state.data.title} - {this.state.data.text} - Linking.openURL(this.state.data.link)}>{I18n.t("challenge.link")} - - ) + if (this.state.data[this.state.data.length-1]==undefined) { + return ( + + No challenge + + ) + } else { + return ( + + {this.state.data[this.state.data.length-1].title} + {this.state.data[this.state.data.length-1].text} + Linking.openURL(this.state.data[this.state.data.length-1].link)}>{I18n.t("challenge.link")} + + ) + } } } } diff --git a/app/Clubs.js b/app/Clubs.js index ad4fb8d..1846421 100644 --- a/app/Clubs.js +++ b/app/Clubs.js @@ -148,8 +148,12 @@ class Clubs extends React.Component { return response.text(); }) .then((json) => { - this.setState({data: JSON.parse(json).clubs,dataSearch:JSON.parse(json).clubs }); + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({data: data,dataSearch:data }); + console.log(this.state.data) }) + .catch((error) => console.error(error)) } diff --git a/app/Home.js b/app/Home.js index de94f60..c833dbc 100644 --- a/app/Home.js +++ b/app/Home.js @@ -54,14 +54,22 @@ const getCurrentDate=()=>{ const Announcement = ({item}) => { const todayDate = getCurrentDate() const itemDate = new Date(item.item.date) - const dateInfo = todayDate.getTime()===itemDate.getTime()&&item.item.time!==undefined?item.item.time:(item.item.date+", " + item.item.time) + + var time_array = item.item.time.split(':') + if (time_array[0]>12) { + var time = String(parseInt(time_array[0])-12) + ':' + String(time_array[1]) + ' PM' + } + else { + var time = String(time_array[0])+':'+String(time_array[1]) + ' AM' + } + const dateInfo = todayDate.getTime()===itemDate.getTime()&&item.item.time!==undefined?item.item.time:(item.item.date+", " + time) return ( {item.item.message} - {dateInfo!==undefined?{dateInfo}:<>} + {dateInfo!==undefined?Posted {dateInfo}:<>} ) @@ -98,7 +106,7 @@ export const TeacherList = ({route}) => { var futureBoolean = true for (var i = 0; i < route.params.data.length; i++) { - const itemDate = new Date(route.params.data[i].date) + const itemDate = new Date(parseInt(String(route.params.data[i].date).split('-')[0]), parseInt(String(route.params.data[i].date).split('-')[1])-1, parseInt(String(route.params.data[i].date).split('-')[2])) if (itemDate.getTime() == todayDate.getTime()) { today.push(route.params.data[i]) } @@ -116,11 +124,11 @@ export const TeacherList = ({route}) => { var noAnn = (todayBoolean||pastBoolean||futureBoolean) return ( - + {todayBoolean?:<>} {pastBoolean?:<>} {futureBoolean?:<>} - {!noAnn?{I18n.t('home.noAnnouncements')}:<>} + {!noAnn?{I18n.t('announcements.noAnnouncements')}:<>} ) } @@ -188,7 +196,7 @@ export const whatsNew = ({route}) => { export const NewItem = ({route}) => { const item = route.params.data - const iconURI = item.icon !== undefined?`data:image/png;charset=utf-8;base64,${item.icon}`:'' + const iconURI = item.image !== undefined?`data:image/png;charset=utf-8;base64,${item.image}`:'' return ( @@ -204,13 +212,21 @@ export const NewItem = ({route}) => { } const AnnouncementToday = ({item}) => { - const teacher = item.item.teacher !==""?item.item.teacher:"No Teacher" + const teacher = item.item.teacher + + var time_array = item.item.time.split(':') + if (time_array[0]>12) { + var time = String(parseInt(time_array[0])-12) + ':' + String(time_array[1]) + ' PM' + } + else { + var time = String(time_array[0])+':'+String(time_array[1]) + ' AM' + } return ( {item.item.message} - {item.item.time} + {time} {teacher} @@ -364,7 +380,9 @@ function HomeStack() { } function HomeScreen (props) { - const iconURI = props.studentData.icon !== undefined?`data:image/png;charset=utf-8;base64,${props.studentData.icon}`:`data:image/png;base64,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`; + console.log(props.studentData) + const iconURI = null + //const iconURI = props.studentData.image !== undefined?`data:image/png;charset=utf-8;base64,${props.studentData.image}`:`data:image/png;base64,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`; global.headerHeight = useHeaderHeight(); const todayDate = getCurrentDate() var todayAnn = [] @@ -450,10 +468,10 @@ function HomeScreen (props) { - {props.studentData.name}, Grade {props.studentData.year} + {props.studentData[props.studentData.length-1].name}, Grade {props.studentData[props.studentData.length-1].grade} props.navigation.navigate(StudentWeek)}> - {I18n.t('home.moreOn')} {props.studentData.name} + {I18n.t('home.moreOn')} {props.studentData[props.studentData.length-1].name} @@ -467,7 +485,7 @@ class Home extends React.Component { constructor(props) { super(props) this.state = { - studentData: [], + studentData:[], annData:[], data:[], lunchData:[], @@ -489,25 +507,30 @@ class Home extends React.Component { this.setState({favoriteNames:favoriteNames.map(name=>({name:name}))}) AsyncStorage.setItem(STORAGE_KEY,JSON.stringify(favoriteNames)).catch(console.log).done() } + componentDidMount() { fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/student`,{ headers: { 'Cache-Control': 'no-cache' }} ).then((response) => { - return response.text();list + return response.text(); }).then((json) => { - this.setState({studentData: JSON.parse(json),isLoading:false}); - }).catch((error) => console.error(error)) + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({studentData: data,isLoading:false}); + }).catch((error) => console.error(error)) - fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/lunchEvents`,{ + fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/lunch_events`,{ headers: { 'Cache-Control': 'no-cache' }} ).then((response) => { return response.text(); }).then((json) => { - this.setState({lunchData: JSON.parse(json)}); + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({lunchData: data}); }).catch((error) => console.error(error)) this.getData() @@ -535,8 +558,8 @@ class Home extends React.Component { return response.text(); }) .then((json) => { - console.log(json) const data = JSON.parse(json).data + data.sort((a,b)=>a.id-b.id) data.sort((a,b)=>new Date(b.date).getTime()-new Date(a.date).getTime()) this.setState({data: data}); }) @@ -552,20 +575,27 @@ class Home extends React.Component { return response.text() }) .then((txt) => { - const data = JSON.parse(txt).data; + const data = JSON.parse(txt); + data.sort((a,b)=>a.id-b.id) const teacherNames = [...new Set(data.filter(x=>x.teacher!=null&&x.teacher.trim()!=='').map(x=>x.teacher))]; teacherNames.sort() this.setState({annData: data, teacherNames: teacherNames.map(x=>({name:x})),isLoading:false}); + console.log(annData) }).catch((error) => console.error(error)) } + + render() { + if (this.state.isLoading) { + return + } else { return ( - + - ) + )} } } export default HomeStack; \ No newline at end of file diff --git a/app/Languages/en.js b/app/Languages/en.js index f438a16..766ac36 100644 --- a/app/Languages/en.js +++ b/app/Languages/en.js @@ -54,7 +54,8 @@ export default { }, lunch: { information: "Information", - location: "Location" + location: "Location", + time: "Time of Event" }, ssl: { information: "Information", diff --git a/app/Languages/es.js b/app/Languages/es.js index 6eca954..100e751 100644 --- a/app/Languages/es.js +++ b/app/Languages/es.js @@ -54,7 +54,8 @@ export default { }, lunch: { information: "ESInformation", - location: "ESLocation" + location: "ESLocation", + time:"ES TIME OF EVENT" }, ssl: { information: "ESInformation", diff --git a/app/LunchEvents.js b/app/LunchEvents.js index 2180bd3..5ceaf61 100644 --- a/app/LunchEvents.js +++ b/app/LunchEvents.js @@ -55,6 +55,14 @@ const Stack = createStackNavigator(); function LunchEvent (props) { const item = props.item const [expand, setExpand] = useState(false); + + var time_array = item.time.split(':') + if (time_array[0]>12) { + var time = String(parseInt(time_array[0])-12) + ':' + String(time_array[1]) + ' PM' + } + else { + var time = String(time_array[0])+':'+String(time_array[1]) + ' AM' + } return( setExpand(!expand)}> @@ -65,7 +73,15 @@ function LunchEvent (props) { {expand?:} - {expand?{I18n.t('lunch.information')}{item.text}{'\n'}{I18n.t('lunch.location')}{item.loc}:<>} + {expand? + + {I18n.t('lunch.information')} + {item.text} + {'\n'}{I18n.t('lunch.location')} + {item.location} + {'\n'}{I18n.t('lunch.time')} + {time} + :<>} ) @@ -81,7 +97,7 @@ class LunchEvents extends React.Component { } componentDidMount() { - fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/lunchEvents`,{ + fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/lunch_events`,{ headers: { 'Cache-Control': 'no-cache' } @@ -91,7 +107,9 @@ class LunchEvents extends React.Component { return response.text(); }) .then((json) => { - this.setState({data: JSON.parse(json)}); + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({data: data}); }) .catch((error) => console.error(error)) } diff --git a/app/Poll.js b/app/Poll.js index 9f41bf1..0b6a72a 100644 --- a/app/Poll.js +++ b/app/Poll.js @@ -80,21 +80,54 @@ import { DebugInstructions, ReloadInstructions, } from 'react-native/Libraries/NewAppScreen'; +import { url } from './resources/fetchInfo.json' import {WebView} from 'react-native-webview'; +import I18n from 'i18n-js'; + class Poll extends React.Component { + constructor(props) { + super(props) + this.state = { + data:[] + } + } + componentDidMount() { + fetch(`${url}/api/`+String(I18n.locale).split('-')[0]+`/polls`,{ + headers: { + 'Cache-Control': 'no-cache' + }} + ).then((response) => { + return response.text(); + }).then((json) => { + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({data: data}); + }).catch((error) => console.error(error)) + } + render() { - return ( - - - ) + if (this.state.isLoading) { + return + } else { + if (this.state.data.length==0) { + return ( + + No Poll + + ) + } else { + return ( + + ) + } + } } } diff --git a/app/SSLOps.js b/app/SSLOps.js index b53cedd..5b3370d 100644 --- a/app/SSLOps.js +++ b/app/SSLOps.js @@ -102,6 +102,8 @@ class SSLOps extends React.Component { return response.text(); }) .then((json) => { + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) this.setState({data: JSON.parse(json)}); }) .catch((error) => console.error(error)) diff --git a/app/Staff.js b/app/Staff.js index 509c3d0..ca629ff 100644 --- a/app/Staff.js +++ b/app/Staff.js @@ -179,8 +179,10 @@ class Staffs extends React.Component { return response.text(); }) .then((json) => { - this.setState({data: JSON.parse(json).data}); - this.setState({dataSearch:JSON.parse(json).data}); + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({data: data}); + this.setState({dataSearch: data}); }) .catch((error) => console.error(error)) } @@ -197,7 +199,9 @@ class Staffs extends React.Component { } render() { const { data , dataSearch,search} = this.state; - + if (this.state.isLoading) { + return + } else { return ( - ); + );} } } diff --git a/app/StudentWeek.js b/app/StudentWeek.js index fa477f8..255327d 100644 --- a/app/StudentWeek.js +++ b/app/StudentWeek.js @@ -57,8 +57,9 @@ class StudentWeek extends React.Component { ).then((response) => { return response.text(); }).then((json) => { - - this.setState({data: JSON.parse(json),isLoading:false}); + const data = JSON.parse(json) + data.sort((a,b)=>a.id-b.id) + this.setState({data: data,isLoading:false}); console.log(this.state.data) }).catch((error) => console.error(error)) } @@ -67,17 +68,18 @@ class StudentWeek extends React.Component { if (this.state.isLoading) { return } else { - const iconURI = this.state.data.icon !== undefined?`data:image/png;charset=utf-8;base64,${this.state.data.icon}`:''; - const hobbyText = ({this.state.data.hobbies}) - const achievementText = ({this.state.data.achievements}) - const messageText = ({this.state.data.messages}) + console.log(this.state.data[this.state.data.length-1].image) + const iconURI = this.state.data[this.state.data.length-1].image !== undefined?`data:image/png;charset=utf-8;base64,${this.state.data[this.state.data.length-1].image}`:''; + const hobbyText = ({this.state.data[this.state.data.length-1].hobbies}) + const achievementText = ({this.state.data[this.state.data.length-1].achievements}) + const messageText = ({this.state.data[this.state.data.length-1].messages}) return ( - {this.state.data.name} - {I18n.t('student.Grade')} {this.state.data.year} + {this.state.data[this.state.data.length-1].name} + {I18n.t('student.Grade')} {this.state.data[this.state.data.length-1].grade} diff --git a/app/resources/fetchInfo.json b/app/resources/fetchInfo.json index 0bad083..7cad022 100644 --- a/app/resources/fetchInfo.json +++ b/app/resources/fetchInfo.json @@ -1 +1 @@ -{"url":"https://blazerappcms.ml/"} \ No newline at end of file +{"url":"http://127.0.0.1:8080"} \ No newline at end of file diff --git a/cms/migrations/setup/down.sql b/cms/migrations/setup/down.sql index 42892ff..1c76ddf 100644 --- a/cms/migrations/setup/down.sql +++ b/cms/migrations/setup/down.sql @@ -1,11 +1,13 @@ DROP TABLE auth_val; +DROP TABLE student; DROP TABLE events; DROP TABLE teachers; DROP TABLE announcements; DROP TABLE clubs; DROP TABLE lunch_events; -DROP TABLE ssl_opps; +DROP TABLE ssl_ops; DROP TABLE polls; DROP TABLE new; DROP TABLE important; +DROP TABLE challenge; \ No newline at end of file diff --git a/cms/migrations/setup/up.sql b/cms/migrations/setup/up.sql index c52e53d..3c690a1 100644 --- a/cms/migrations/setup/up.sql +++ b/cms/migrations/setup/up.sql @@ -21,7 +21,10 @@ CREATE TABLE teachers ( id SERIAL PRIMARY KEY, lang VARCHAR, name VARCHAR NOT NULL, - emails VARCHAR NOT NULL + email VARCHAR NOT NULL, + phone VARCHAR NOT NULL, + position VARCHAR NOT NULL, + image VARCHAR ); CREATE TABLE announcements ( @@ -51,14 +54,14 @@ CREATE TABLE lunch_events ( time TIME ); -CREATE TABLE ssl_opps ( +CREATE TABLE ssl_ops ( id SERIAL PRIMARY KEY, lang VARCHAR, title VARCHAR NOT NULL, text VARCHAR NOT NULL, location VARCHAR NOT NULL, teacher VARCHAR NOT NULL, - time TIME + date DATE ); CREATE TABLE polls ( @@ -75,9 +78,30 @@ CREATE TABLE new ( new_date DATE ); +CREATE TABLE challenge ( + id SERIAL PRIMARY KEY, + lang VARCHAR, + title VARCHAR NOT NULL, + text VARCHAR NOT NULL, + link VARCHAR NOT NULL +); + +CREATE TABLE student ( + id SERIAL PRIMARY KEY, + lang VARCHAR, + name VARCHAR NOT NULL, + image VARCHAR, + grade VARCHAR NOT NULL, + messages VARCHAR NOT NULL, + hobbies VARCHAR NOT NULL, + achievements VARCHAR NOT NULL +); + CREATE TABLE important ( id SERIAL PRIMARY KEY, lang VARCHAR, image VARCHAR, text VARCHAR NOT NULL -) +); + + diff --git a/cms/src/data/mod.rs b/cms/src/data/mod.rs index 8d7e77d..7ed6253 100644 --- a/cms/src/data/mod.rs +++ b/cms/src/data/mod.rs @@ -144,6 +144,17 @@ pub mod defs { } +api_route! { + student { + name: (Text, String, String), + image: (Text, String, Image), + grade: (Text, String, String), + messages: (Text, String, String), + hobbies: (Text, String, String), + achievements: (Text, String, String), + } +} + api_route! { events { title: (Text, String, String), @@ -158,7 +169,10 @@ api_route! { api_route! { teachers { name: (Text, String, String), - emails: (Text, String, String), + email: (Text, String, String), + phone: (Text, String, String) + position: (Text, String, String), + image: (Text, String, Image) } } @@ -171,15 +185,6 @@ api_route! { } } -api_route! { - student { - name: (Text, String, String), - meeting: (Text, String, String), - link: (Text, String, String), - sponsor: (Text, String, String), - } -} - api_route! { clubs { name: (Text, String, String), @@ -228,9 +233,18 @@ api_route! { } } +api_route! { + challenge { + title: (Text, String, String), + text: (Text, String, String), + link: (Text, String, String), + } +} + api_route! { important { image: (Text, String, Image), text: (Text, String, String), } } + diff --git a/cms/src/main.rs b/cms/src/main.rs index b16642d..16c36bb 100644 --- a/cms/src/main.rs +++ b/cms/src/main.rs @@ -76,6 +76,7 @@ fn rocket(port: u16, address: String, env: Environment, pg: PgConnection, sa: Se routes![home, home_not_logged_in, login, auth::callback, auth::oauth, static_files], ) .mount("/api", routes![ + data::student::api, data::events::api, data::teachers::api, data::announcements::api, @@ -85,15 +86,16 @@ fn rocket(port: u16, address: String, env: Environment, pg: PgConnection, sa: Se data::calendar::api, data::polls::api, data::new::api, - data::important::api + data::important::api, + data::challenge::api, ]) .mount( "/ui", routes![ - data::events::eui, data::teachers::eui, data::announcements::eui, data::clubs::eui, data::lunch_events::eui, data::ssl_ops::eui, data::calendar::eui, data::polls::eui, data::new::eui, data::important::eui, - data::events::upd, data::teachers::upd, data::announcements::upd, data::clubs::upd, data::lunch_events::upd, data::ssl_ops::upd, data::calendar::upd, data::polls::upd, data::new::upd, data::important::upd, - data::events::del, data::teachers::del, data::announcements::del, data::clubs::del, data::lunch_events::del, data::ssl_ops::del, data::calendar::del, data::polls::del, data::new::del, data::important::del, - data::events::add, data::teachers::add, data::announcements::add, data::clubs::add, data::lunch_events::add, data::ssl_ops::add, data::calendar::add, data::polls::add, data::new::add, data::important::add, + data::student::eui, data::events::eui, data::teachers::eui, data::announcements::eui, data::clubs::eui, data::lunch_events::eui, data::ssl_ops::eui, data::calendar::eui, data::polls::eui, data::new::eui, data::challenge::eui, data::important::eui, + data::student::upd, data::events::upd, data::teachers::upd, data::announcements::upd, data::clubs::upd, data::lunch_events::upd, data::ssl_ops::upd, data::calendar::upd, data::polls::upd, data::new::upd, data::challenge::upd, data::important::upd, + data::student::del, data::events::del, data::teachers::del, data::announcements::del, data::clubs::del, data::lunch_events::del, data::ssl_ops::del, data::calendar::del, data::polls::del, data::new::del, data::challenge::del, data::important::del, + data::student::add, data::events::add, data::teachers::add, data::announcements::add, data::clubs::add, data::lunch_events::add, data::ssl_ops::add, data::calendar::add, data::polls::add, data::new::add, data::challenge::add, data::important::add, ], ) } diff --git a/cms/templates/announcements.html.hbs b/cms/templates/announcements.html.hbs index cea3483..411ba88 100644 --- a/cms/templates/announcements.html.hbs +++ b/cms/templates/announcements.html.hbs @@ -45,15 +45,15 @@
-

Add Event

+

Add Announcement

-

Lang

- -
-
- +
@@ -77,7 +77,7 @@
-

Date

+

Date of Submission

@@ -98,11 +98,11 @@
-

Update Event

- +

Update Announcement

+
-

ID of event to update

+

ID of announcement to update

@@ -111,11 +111,11 @@
-

Lang

- -
-
- +
@@ -139,7 +139,7 @@
-

Date

+

Date of Submission

@@ -154,15 +154,6 @@
- -
-
-

Teacher/Organizer Email

-
-
- -
-
diff --git a/cms/templates/challenge.html.hbs b/cms/templates/challenge.html.hbs new file mode 100644 index 0000000..d918bbf --- /dev/null +++ b/cms/templates/challenge.html.hbs @@ -0,0 +1,148 @@ +{{! vim: set ft=html: }} + + + + + + + + + + +
+

+ Admin Panel +

+
+ +
+ +
+

Challenge of the Week

+ +
+ {{#each ctx}} +
+ ID: {{id}} | LANG: {{lang}} +

{{title}}

+

{{text}}

+

{{link}}

+
+
+ +
+ +
+
+ {{/each}} +
+
+ + +
+

COTW Actions

+ +
+ +
+

Add Announcement

+
+
+
+ +
+
+ +
+
+

Title

+
+
+ +
+
+ +
+
+

Information

+
+
+ +
+
+ +
+
+

Link to Challenge

+
+
+ +
+
+ + +
+
+ +
+

Update Challenge

+
+
+
+

ID of challenge to update

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Title

+
+
+ +
+
+ +
+
+

Information

+
+
+ +
+
+ +
+
+

Link to Challenge

+
+
+ +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/cms/templates/clubs.html.hbs b/cms/templates/clubs.html.hbs index 4b9d80f..51b03ff 100644 --- a/cms/templates/clubs.html.hbs +++ b/cms/templates/clubs.html.hbs @@ -50,11 +50,11 @@
-

Lang

- -
-
- +
@@ -69,7 +69,7 @@
-

Meeting

+

Meeting Date and Time

@@ -78,7 +78,7 @@
-

Link

+

Meeting Location

@@ -100,7 +100,7 @@

Update Club

- +

ID of club to update

@@ -112,11 +112,11 @@
-

Lang

- -
-
- +
@@ -131,7 +131,7 @@
-

Meeting

+

Meeting Date and Time

@@ -140,7 +140,7 @@
-

Link

+

Meeting Location

diff --git a/cms/templates/events.html.hbs b/cms/templates/events.html.hbs index 94c0826..6a75197 100644 --- a/cms/templates/events.html.hbs +++ b/cms/templates/events.html.hbs @@ -50,11 +50,11 @@
-

Lang

- -
-
- +
@@ -130,11 +130,11 @@
-

Lang

- -
-
- +
diff --git a/cms/templates/home.html.hbs b/cms/templates/home.html.hbs index 07e0d80..525abdb 100644 --- a/cms/templates/home.html.hbs +++ b/cms/templates/home.html.hbs @@ -6,5 +6,11 @@ Events New + Announcements + Clubs + Lunch Events + Polls + SSL Opportunities + Polls diff --git a/cms/templates/important.html.hbs b/cms/templates/important.html.hbs new file mode 100644 index 0000000..2d7d780 --- /dev/null +++ b/cms/templates/important.html.hbs @@ -0,0 +1,167 @@ +{{! vim: set ft=html: }} + + + + + + + + + + +
+

+ Admin Panel +

+
+ +
+ +
+

Important

+ +
+ {{#each ctx}} +
+ ID: {{id}} | LANG: {{lang}} +

{{name}}

+

{{meeting}}

+

{{link}}

+

Sponsor: {{sponsor}}

+ +
+ +
+ + +
+ {{/each}} +
+
+ + +
+

Clubs Actions

+ +
+ +
+

Add Club

+
+
+
+

Lang

+ +
+
+ +
+
+ +
+
+

Name

+
+
+ +
+
+ +
+
+

Meeting

+
+
+ +
+
+ +
+
+

Link

+
+
+ +
+
+ +
+
+

Sponsor

+
+
+ +
+
+ + +
+
+ +
+

Update Club

+
+
+
+

ID of club to update

+
+
+ +
+
+ +
+
+

Lang

+ +
+
+ +
+
+ +
+
+

Name

+
+
+ +
+
+ +
+
+

Meeting

+
+
+ +
+
+ +
+
+

Link

+
+
+ +
+
+ +
+
+

Sponsor

+
+
+ +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/cms/templates/lunch_events.html.hbs b/cms/templates/lunch_events.html.hbs new file mode 100644 index 0000000..ec6d70f --- /dev/null +++ b/cms/templates/lunch_events.html.hbs @@ -0,0 +1,167 @@ +{{! vim: set ft=html: }} + + + + + + + + + + +
+

+ Admin Panel +

+
+ +
+ +
+

Lunch Events

+ +
+ {{#each ctx}} +
+ ID: {{id}} | LANG: {{lang}} +

{{title}}

+

{{text}}

+

{{location}}

+

{{time}}

+
+
+ +
+ +
+
+ {{/each}} +
+
+ + +
+

Lunch Events Actions

+ +
+ +
+

Add Lunch Event

+
+
+
+ +
+
+ +
+
+

Title

+
+
+ +
+
+ +
+
+

Information

+
+
+ +
+
+ +
+
+

Location

+
+
+ +
+
+ +
+
+

Time of event

+
+
+ +
+
+ + +
+
+ +
+

Update Lunch Event

+
+
+
+

ID of lunch event to update

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Title

+
+
+ +
+
+ +
+
+

Information

+
+
+ +
+
+ +
+
+

Location

+
+
+ +
+
+ +
+
+

Time of event

+
+
+ +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/cms/templates/polls.html.hbs b/cms/templates/polls.html.hbs index 094f223..885905e 100644 --- a/cms/templates/polls.html.hbs +++ b/cms/templates/polls.html.hbs @@ -24,10 +24,7 @@ {{#each ctx}}
ID: {{id}} | LANG: {{lang}} -

{{url}}

-

{{meeting}}

-

{{link}}

-

Sponsor: {{sponsor}}

+

Poll: {{url}}

@@ -46,51 +43,24 @@
-

Add Club

+

Add Poll

-

Lang

- -
-
- +
-

Name

+

URL of poll

- -
-
- -
-
-

Meeting

-
-
- -
-
- -
-
-

Link

-
-
- -
-
- -
-
-

Sponsor

-
-
- +
@@ -99,11 +69,11 @@
-

Update Club

- +

Update Poll

+
-

ID of club to update

+

ID of Poll to update

@@ -112,49 +82,22 @@
-

Lang

- -
-
- +
-

Name

+

URL of poll

- -
-
- -
-
-

Meeting

-
-
- -
-
- -
-
-

Link

-
-
- -
-
- -
-
-

Sponsor

-
-
- -
+
+
diff --git a/cms/templates/ssl_ops.html.hbs b/cms/templates/ssl_ops.html.hbs new file mode 100644 index 0000000..ebd1eb0 --- /dev/null +++ b/cms/templates/ssl_ops.html.hbs @@ -0,0 +1,185 @@ +{{! vim: set ft=html: }} + + + + + + + + + + +
+

+ Admin Panel +

+
+ +
+ +
+

SSL Opportunities

+ +
+ {{#each ctx}} +
+ ID: {{id}} | LANG: {{lang}} +

{{name}}

+

{{meeting}}

+

{{link}}

+

Sponsor: {{sponsor}}

+
+
+ +
+ +
+
+ {{/each}} +
+
+ + +
+

SSL Opps Actions

+ +
+ +
+

Add SSL Op

+
+
+
+ +
+
+ +
+
+

Title

+
+
+ +
+
+ +
+
+

Information

+
+
+ +
+
+ +
+
+

Location

+
+
+ +
+
+ +
+
+

Organizer

+
+
+ +
+
+ +
+
+

Date of Event

+
+
+ +
+
+ + +
+
+ +
+

Update SSL Opps

+
+
+
+

ID of club to update

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Title

+
+
+ +
+
+ +
+
+

Information

+
+
+ +
+
+ +
+
+

Location

+
+
+ +
+
+ +
+
+

Organizer

+
+
+ +
+
+ +
+
+

Date of Event

+
+
+ +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/cms/templates/student.html.hbs b/cms/templates/student.html.hbs new file mode 100644 index 0000000..ed379b5 --- /dev/null +++ b/cms/templates/student.html.hbs @@ -0,0 +1,204 @@ +{{! vim: set ft=html: }} + + + + + + + + + + +
+

+ Admin Panel +

+
+ +
+ +
+

Student of the Week

+ +
+ {{#each ctx}} +
+ ID: {{id}} | LANG: {{lang}} +

{{name}} | Grade {{grade}}

+

{{image}}

+

Message: {{messages}}

+

Hobbies: {{hobbies}}

+

Achievements: {{achievements}}

+
+
+ +
+ +
+
+ {{/each}} +
+
+ + +
+

SOTW Actions

+ +
+ +
+

Add SOTW

+
+
+
+ +
+
+ +
+
+

Student Name

+
+
+ +
+
+ +
+
+

Student Picture

+
+
+ +
+
+ +
+
+

Grade

+
+
+ +
+
+ +
+
+

Message

+
+
+ +
+
+ +
+
+

Hobbies

+
+
+ +
+
+ +
+
+

Achievements

+
+
+ +
+
+ + +
+
+ +
+

Update SOTW

+
+
+
+

ID of SOTW to update

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Student Name

+
+
+ +
+
+ +
+
+

Student Picture

+
+
+ +
+
+ +
+
+

Grade

+
+
+ +
+
+ +
+
+

Message

+
+
+ +
+
+ +
+
+

Hobbies

+
+
+ +
+
+ +
+
+

Achievements

+
+
+ +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/cms/templates/teachers.html.hbs b/cms/templates/teachers.html.hbs new file mode 100644 index 0000000..3a3a6b1 --- /dev/null +++ b/cms/templates/teachers.html.hbs @@ -0,0 +1,185 @@ +{{! vim: set ft=html: }} + + + + + + + + + + +
+

+ Admin Panel +

+
+ +
+ +
+

Staff

+ +
+ {{#each ctx}} +
+ ID: {{id}} | LANG: {{lang}} +

{{name}}

+

{{meeting}}

+

{{link}}

+

Sponsor: {{sponsor}}

+
+
+ +
+ +
+
+ {{/each}} +
+
+ + +
+

Staff Actions

+ +
+ +
+

Add Staff

+
+
+
+ +
+
+ +
+
+

Name

+
+
+ +
+
+ +
+
+

Email

+
+
+ +
+
+ +
+
+

Phone

+
+
+ +
+
+ +
+
+

Position

+
+
+ +
+
+ +
+
+

Staff Picture

+
+
+ +
+
+ + +
+
+ +
+

Update Staff

+
+
+
+

ID of staff to update

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

Name

+
+
+ +
+
+ +
+
+

Email

+
+
+ +
+
+ +
+
+

Phone

+
+
+ +
+
+ +
+
+

Position

+
+
+ +
+
+ +
+
+

Staff Picture

+
+
+ +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file