senecacdot-bigbluebutton / senecabbb Goto Github PK
View Code? Open in Web Editor NEWSeneca BigBlueButton Integration Project
Seneca BigBlueButton Integration Project
We need to add a section to the top of the manage users page to allow for adding an internal user to the system. The logic for validating a user is already in the system and is used in the add attendee validation, but we need to expose it in the manager users page.
fardad.soleimanloo is an employee and also has admin rights. He can see the "Invite Guest" link, but when it is clicked a message is displayed saying that he doesn't have rights to view that page.
The page should check for admin first and let the user load the page if they are an admin.
It better that informative messages to be green and problematic ones to be red:
i.e.
john.doe was successfully added to the meeting (green)
john.doe does not exist in the system (red)
Currently we only have three user roles (student, employee, guest) we should have individual records for each user so that each user can have unique settings.
The user_role table needs to have the ur_id changed to AUTO_INCREMENT and there needs to be an extra column for bu_id. The ur_id column needs to be removed from the bbb_user table as well.
When a user logs in for the first time we need to grab the appropriate predefined role value and create a new role with that same value for the user.
Naturally Eye goes to left to look for items, and the title is at right. (Dawn's Suggestion)
when an event is modified all the information of the event must be loaded into the form:
bug:
1 - The date entries (drop down and calendar) must be synchronized. (End date is not!)
2 - description is not loaded
Also make sure when an event is being modified, if the event has repetition (series of events) then the start date must be set to next upcoming event (i.e. first one after today's date; like this previous events can not be modified)
With a much smaller font add "BigBlueButton Conference Manager" to the right side of the Seneca logo to identify what this application do.
Before deploying this confirm the font and size with Fardad
newbbb.googool.com is assigned to 142.204.79.90.
Please set the server to work with the assigned name rather than IP
I downloaded the tab separated values from the black board and tried to add it to oop344A-201303.
It failed with following error messge:
Sorry,we only support CSV with comma separated or XLS with tab separated file format!
at 2:10 Pm, 25/11/2013
Seneca Logo can go higher and the banner can go thinner ?
css display correctly if event is not cancelled, but when the event is flagged as cancelled, css does not display correctly
This massage is good for internal seneca users and not for guests:
"Hello:
You are invited by Fardad Soleimanloo to join a meeting in Seneca BigBlueButton web
conferencing system.
Please use your Seneca College user account and password to join the meeting at:
etc..."
The message should say:
"Hello:
You are invited by Fardad Soleimanloo to join a meeting in Seneca BigBlueButton web
conferencing system.
Please use your Guest id: "guest.whatever" to login and to join the meeting at:
etc...."
When user choose "Week" or "Day" option to view events in calendar page, event information would be displayed properly if the event duration is greater than 30 minutes; However, if the duration is too short, user could not see the event information at all.
Add a timer value to the message display module; if the timer is set, then after the time set, the message will hide, automatically.
Like this, if you want to show un-important messages (like welcome message) it will disappear automatically so the user does not need to close it every time they are logged in to the system.
Year semester format in Seneca is as follows:
yyyys
yyyy is the yaer
s is the semester, possible values are: 1, 2 and 3
ie:
2013 fall semester is : 20133
1.Add Seneca College favicon to all pages' title: http://www.senecacollege.ca/favicon.ico
2. Change the title content to SenecaBBB | XXXXXXXX
There are two things that make adding an attendee confusing.
The first is that on the View Event page there are buttons for "Manage Attendee" and "Manage Guest", but we also use the word "guest" to describe people from outside of the organization. This leads to confusion about what each page does because of the ambiguity.
The second problem is that on the Manage Attendee/Guest page there are fields for adding a user and searching for a guest user. No where on the page does it say that you need to enter a userid into the add field and a full name into the search field. We need to either change the text or add additional descriptions to clarify what to do.
I am able to use my expired Seneca employee account password to login bbbman. The password doesn't work on Seneca Blackboard.
When an inactive join meeting button is pressed this message is displayed:
"Event not start yet or event end"
This should change to:
"Event not started yet or it has already ended."
Someone needs to go over all of the error messages and check the grammar and spelling of them.
The one that I noticed had an issue was the error message that is generated when trying to delete a section that has lectures attached to it. It says "section could not be deleted" instead of "Section could not be deleted"
The CSS for the description is different from every other element and should be modified to be more inline with the rest of the element styling.
For example subject page,
Add Section should be at the top of the page beside "manage course" and "manage professor"
Our current data format has the column data assigned to a number representing the column position [results.get(0).get(2)]. We need to change the retrieval so that the column data is assigned to the column name [results.get(0).get("bu_id")].
This will make changing the database much easier as it won't break all of our pages because of column counts or positions changing.
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.StringIndexOutOfBoundsException: String index out of range: 19
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.StringIndexOutOfBoundsException: String index out of range: 19
java.lang.String.substring(String.java:1907)
helper.Validation.checkStartDateTime(Validation.java:116)
org.apache.jsp.persist_005fevent_jsp._jspService(persist_005fevent_jsp.java:174)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs.
Apache Tomcat/7.0.26
The creator of a meeting/lecture should be able to forcefully end their meeting by pressing a button. The button should only be visible when the meeting is running.
When Creating a guest, I noticed that space is not accepted in First and Last name.
What if someone's name is "Homer Jay Simpson"?
How can we invite him as a guest?
Open departments then click on ICT users in listed departments.
then scroll down (make sure the browser is short enough for scrolling to be possible).
Then click on "set admin status" icon of the last user.
upon clicking this; the page will scroll down (because it is reloaded) and to see if the action took effect the user has do scroll down again to find the user.
Either make sure you scroll down automatically to the exact position when the page is submitted to it self, or use ajax not to reload the page.
Admin should be able to set messages to appear on the first page (login page) of the landing site as "urgent notification" messages.
For now just think about how to implementation this.
We have decided to push back the implementation of pre-uploaded presentation, but the UI is still in place on the view event page. The elements should be commented out.
There might be other pages that have content that need to be removed as well.
The edit user page currently uses textboxes for the boolean properties and they should really be checkboxes instead.
Also, when you click save and are redirected to the user list the message is incorrect.
While testing stuff out, a few times I would get a null pointer exception on the console. Something usually like this (the timestamp is not correct):
Jan 15, 2015 1:03:30 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/SenecaBBB] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:830)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5774)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5693)
at db.DBAccess.queryDB(DBAccess.java:117)
at sql.Lecture.getAllProfessorCourse(Lecture.java:176)
at org.apache.jsp.create_005fevent_jsp._jspService(create_005fevent_jsp.java:157)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:724)
The stack trace indicated that the cause was line 117 of:
https://github.com/SenecaCDOT-BigBlueButton/SenecaBBB/blob/master/web-app/src/db/DBAccess.java
I haven't looked at it too carefully, but I think the problem is because a lot of the SQL stuff is a property of DBAccess, and (according the comments) DBAccess is a singleton on a session, if the same session triggers two calls to the 'DBAcess::queryDB' method before the other has completed, both threads may be reading and writing the same properties at the "same time" (interwoven). This is because internally, Tomcat spawns a new thread for every request (not every session), and uses request.getSession() to obtain the session instance. This means that two distinct requests can be tied to the same session, which means that two or more threads handling different requests can be operating on the same session instance.
A quick fix would be to simply add "synchronized" to all the methods (locking the properties of "DBAcccess"), or making the variables local to the functions. I would need look more closely at it to find a better solution... What do you guys think?
Also, I need a way to programmatically test this, because clicking very fast between pages usually doesn't trigger the error (I only got it twice after trying for a long time).
Since this is the first stage for testing please add
Alpha version to the title of the first page under Seneca.
Need to add three keys to config.properties. We need a key to tell whether to send emails, a key for the employee mail server, and a key for the student mail server.
There needs to be a check to differentiate between students and employees and after that is done attach the appropriate server to the end of the user id. The check could be a regex check for a "." in the user id.
If the user that was added is a non-ldap user then we already have their email and the checks can be skipped.
It would be nice if the text of the email that is sent out referenced the name of the meeting and maybe whether or not they are being added to a schedule, a class, or to an individual meeting.
We need to add a new page or modify an existing page so that a user can pre-upload materials (Full list here, https://github.com/SenecaCDOT-BigBlueButton/bigbluebutton/blob/master/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/FileUploadWindow.mxml#L116). They should only be able to upload those file types.
When a meeting is started URLs to the pre-uploaded materials need to be attached to the create API call. The format of the url should be bbbman.senecacollege.ca/SenecaBBB/presentation/m_id-ms_id-sample.ppt. We then use a url rewriter to change the URL to bbbman.senecacollege.ca/SenecaBBB/presentation.jsp?p=m_id-ms_id-sample.ppt. The JSP can then validate the user if they are trying to download the material themselves or if the meeting is currently running it will just return the contents of the file.
For documentation on the API call for pre-uploading slides see, http://code.google.com/p/bigbluebutton/wiki/API#Preupload_Slides.
Two entries:
1 - Exact id search that does exactly what it does now:
2 - A first name and last name search (in one field)
this search searches the space separated tokens entered in the field against the name and surname in the database and passes back as follows:
name like token[0]% AND surname like token[1]%
Then the user selects one of the search results.
I created a schedule called "BBB Weekly Team Meeting" and when I went to view the page for the first meeting it shows a link to view the recording, but I haven't started the meeting yet.
Possible causes could be:
create event and quick meeting page's ui are broken, select menu doesn't work!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.