Privacy Policy
Effective Date: March 9, 2017
Southern Methodist University (SMU) values your privacy so we have provided this policy to explain just what it is we collect from you, what we do with the data, and why we need it. We’ve written this policy in plain-spoken language, to make sure it’s easy to understand. However, even with the best of intentions, there’s no good way to avoid some technical talk. We’ll do our best to explain unfamiliar & technical terms throughout this policy.
Please be aware that your continued use of our applications and services is understood to be an acceptance of this privacy policy.
Who We Are & What We Do
People ForWords is a collaboration between SMU and Literacy Instruction for Texas (LIFT). We have come to together to develop the interactive game application Codex: The Lost Words of Atlantis (Codex) available on the world-wide web and the Google Play Store for Android devices. Codex is a platform to engage adult language learners and teach basic literacy skills through an interactive game-based learning program. The game is designed to reach and engage adults yet contains content suitable for all ages.
Data We Collect About You & How We Use It
All of the data we collect when you engage with Codex is to facilitate gameplay experiences, learning opportunities, and general application improvement. On both the world-wide web and Android platforms, we collect the following categories of data:
| Email Address and User Name |
We use your email address and user name provided through the relevant third-party authentication service (i.e. Google or Facebook login) to create your user account data. |
| Gameplay & Interaction Data |
We track your progress throughout the game on our own servers. We also track when and how you interact with the game. We use this data to help develop improvements to the game service and to our teaching methodologies. |
We do not collect, record, or monitor data transmitted between users who opt to use the in-game Voice over Internet Protocol (VoIP) feature. Any interactions with other users are at your own risk. We ask that you do not share personal information or use the service to engage in any unlawful or inappropriate conduct.
Android Permissions
The following table lists the permissions that Codex uses on the Android platform and their usage.
| Permission |
Usage |
Identity
- Find accounts on the device
|
Used to allow a Google account to register and login to the game.. |
Contacts
- Find accounts on the device
|
Used to allow a Google account to register and login to the game. |
Phone
- Read phone status and identity
|
Used to determine if Codex is running or in-focus, meaning the currently selected application. |
Photos/Media/Files
- Access USB storage filesystem
- Read the contents of your USB storage
- Modify or delete the contents of yourUSB storage
|
Used to download, store, and access extra game data to your device like artwork, music, voice files, and sound effects. |
Storage
- Read the contents of your USB storage
- Modify or delete the contents of yourUSB storage
|
Used to download, store, and access extra game data to your device like artwork, music, voice files, and sound effects. |
|
Microphone
|
Used to record and transmit the user’s voice during Voice over Internet Protocol (VoIP) connections between players from within the game. |
|
Wi-Fi connection information
|
Used to allow Codex access to the internet. |
Device ID & call information
- Read phone status and identity
|
Used to determine if Codex is running or in-focus, meaning the currently selected application. |
Other
- View network connections
- Full network access
- Change your audio settings
|
This group of permissions has the following uses: * Used to access the internet for downloading game data (artwork, sound files, etc) to your device from our servers. * Used to communicate with our servers to access, store, and send relevant gameplay data like progress, achievements, and status. * Used to allow Voice over Internet Protocol (VoIP) connections between players from within the game. |
Third-Party Login Services
We make use of third-party login services to register account data with our servers and to login to your account. Our use of these third-party services is limited to collecting data needed to create a unique account for you on our service (email address and full name) and to validate that data when you use Codex. At this time, we do not collect information on your friends or other users that may also use our services. In the future, we may make use of these permissions or capabilities to provide enhanced services and gameplay features for Codex. If these changes occur, we will update this policy to reflect any additional data we collect and its usage.
How to Opt-Out of Data Collection
Codex only collects usage data when the application is running. Closing the application on Android or choosing to not visit the game’s site on the world-wide web means we are no longer collecting any of
your data. You can also choose to opt-out on Android by uninstalling Codex using the normal uninstall methods of the platform.
Removing Your Data from Our Service
We will hold on to any user data we collect for as long as you use Codex and for a reasonable time after you stop using to support our on-going operations. If you would like us to delete any user data we have collected via Codex, please contact us at<EMAIL_ADDRESS>and we will respond in a reasonable time. Please note that continuing to use Codex may require some or all of the user data in order for the game to function properly.
Children’s Online Privacy Protection Act (COPPA) Compliance
Codex is designed to address the adult language learner. Though the content is generally safe for all ages, at this time we are not targeting or designing systems to allow children under 13 to register an account. As such, we do not knowingly collect or solicit data from children under the age of 13. If we learn that we have collected information from a child under age 13 without parental consent, we will delete that information as quickly as possible. Please contact us at<EMAIL_ADDRESS>if you believe that we have any information from or about a child under age 13.
Third Party Data Services
We may provide anonymized, aggregated user data to third party services as part of our efforts to improve Codex and affiliated services. We will only share information in ways outlined in this privacy policy.
The following are the reasons why we may need to disclose your information to third parties:
-
as required by law, such as to comply with a subpoena, or similar legal process;
-
when we believe in good faith that disclosure is necessary to protect our rights, protect your safety or the safety of others, investigate fraud, or respond to a government request;
-
with our trusted services providers who work on our behalf, do not have an independent use of the information we disclose to them, and have agreed to adhere to the rules set forth in this privacy statement.
-
If Southern Methodist University is involved in a merger, acquisition, or sale of all or a portion of its assets, you will be notified via email and/or a prominent notice on our Web site of any change in ownership or uses of this information, as well as any choices you may have regarding this information.
-
to third party analytics companies as described in the section below
Automatic Data Collection
We may work with third party analytics companies to understand how Codex is being used. When sharing your information with these service providers we are interested in data like how often you use Codex and for how long. At this time, we are not making use of third-party analytics services but we reserve the right to do so in the future. If we do make use of a third-party analytics service, this section of the privacy documented will be updated to reflect procedures for anonymizing, transferring, and safeguarding your information.
Security of Your Data
We take reasonable measures to safeguard your data in accordance with common security practices on the internet, such as encrypted transfer of information from your device to our servers. However, no security practice is perfect and we cannot prevent all potential security breaches.
We are also not responsible for the security practices of third-party login services use to create or access your account with us. Please make sure to follow any and all security policies of any third-party services you use to access Codex.
Changes to this Privacy Policy
This privacy policy is subject to change at any time, for any reason. We will attempt to you of any changes in a reasonable manner, including posting the new privacy policy at www.peopleforwords.org/privacy and via the email address provided to us through a third-party login service. Please check the privacy policy regularly to stay up-to-date on any changes. Your continued use of Codex on Android or the world-wide web is understood to be an acceptance of this privacy policy. If you do not accept changes to the privacy policy, please uninstall Codex from your device and/or cease using our offerings on the world-wide web.
How to Get in Touch with Us
If you need to contact someone from someone from SMU regarding Codex, please e-mail us at<EMAIL_ADDRESS>Request Removal of Identifiable Data
Submit email assocaited with your iOS/Android Device to have all identifiable data removed and deleted


- CallEnum - Enum in com.Game
-
The values of the possible winnings
- CallEnum() - Constructor for enum com.Game.CallEnum
-
- cancel() - Method in class com.util.AudioPlayer
-
Cancel the AudioPlayer which will cause the Thread to exit
- Cartella - Class in com.Game
-
Represents a generic card
- Cartella(ArrayList<Integer>) - Constructor for class com.Game.Cartella
-
Constructor of the class Cartella
- CartellaComponent - Class in com.GUI
-
GUI component that displays player card
- CartellaComponent() - Constructor for class com.GUI.CartellaComponent
-
Set the general view of the card
- CartellaFactory - Class in com.Game
-
It is a Factory class to generate rows and columns of a table and assign the numbers
- CartellaFactory() - Constructor for class com.Game.CartellaFactory
-
- cartelle - Variable in class com.Game.controllers.Player
-
- checkCall(CallEnum, Cartella) - Method in class com.Game.Tomboliere
-
It is called when is necessary to control the call made by a player
- checkCall(String, int, CallEnum) - Method in class Server.Sessione
-
Check if the winning call(ambo,terna, ecc..) from a player is right
- CheckCardServlet - Class in Server.servlets
-
(servlet) Control the request of a player checking the card
- CheckCardServlet() - Constructor for class Server.servlets.CheckCardServlet
-
- cinquinaEvent(ActionEvent) - Method in class com.GUI.controllers.GameInterfaceController
-
Called method by click event button Cinquina
- com.Game - package com.Game
-
- com.Game.controllers - package com.Game.controllers
-
- com.GUI - package com.GUI
-
- com.GUI.controllers - package com.GUI.controllers
-
- com.util - package com.util
-
- combobox - Variable in class com.GUI.controllers.GameInterfaceController
-
- comboBox - Variable in class com.GUI.controllers.StartingInterfaceController
-
- connectHttpTo(String) - Method in class com.Game.controllers.GameController
-
Send request to the Http server
- createCartella() - Static method in class com.Game.CartellaFactory
-
Create the card
- createRow(ArrayList<Integer>) - Static method in class com.Game.CartellaFactory
-
Set the row of a table


http://www.speakers-podium.com/susangranger.
Susan Granger's review of "DROP DEAD GORGEOUS" (New Line Cinema)
Don't be surprised if you find yourself wishing the "gorgeous" girls would just drop dead in this heavy-handed mock-documentary. Set in Mount Rose, Minnesota, it purports to examine a small-town beauty pageant. Here in the hallowed American heartland, amidst cow pats and pork sausage, there's an all-out battle being waged for the sparkling tiara.  Kirstie Alley plays her scheming mother, a former winner, who also serves as the pageant's coordinator. The only real competition comes from a sweet, guileless, tap-dancing trailer park girl, Kirsten Dunst, who worships Diane Sawyer and wants to become a television journalist. She's egged on by her chain-smoking, beer-swilling mom, Ellen Barkin, and wonderfully slutty neighbor, Alison Janney. Screenwriter Lona Williams and director Michael Patrick Jann (MTV's "The State") rely on caricatures and revisit too many snide, crude cliches - from the "You betcha" drawl of "Fargo" to the "Spinal Tap" hysteria to the condescending "Waiting for Guffman" buffoonery of "God-fearin' folk." Not that beauty pageants aren't ripe for satire, but "Smile" (1975) did it so much better - and it didn't need to travel to the Eating Disorder wing of the local hospital. Holly Hunter's "The Positively True Adventures of the Alleged Texas Cheerleader-Murdering Mom" set a standard for such things that this doesn't even come close to. On the Granger Movie Gauge of 1 to 10, "Drop Dead Gorgeous" is a tepid, trivial 5. Too bad Hollywood couldn't have left it alone to develop on its own as a little independent film called "Dairy Queens."
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Start publishing your data packages in 3 easy steps:
{% filter markdown %}
Install dpmpy, the data package manager command line tool:
$ [sudo] pip install git+https://github.com/frictionlessdata/dpm-py.git
Set your configuration:
$ dpmpy configure
> Username: # {{user.name}}
# Use your secret token here (also visible at the top of the page)
> Your password: # {{user.secret}}
# Use server url Eg: https://staging.datapackaged.com/
> Server URL:
Publish
$ cd your-data-package-directory/
$ dpmpy publish
{% endfilter %}


This is the best free Discord Selfbot, the safest option if you want a powerful Discord Selfbot.
We have a careful use of the Discord API to prevent you from getting banned for some reasons.
Everything, accessible from your browser!
(We cannot protect you in case of report)


We are excited to have you join our family. We are always looking to welcome new members into our family. This is the best decision you will make. The bible says that let us not neglect our meeting together, as some people do, but encourage one another, especially now that the day of his return is drawing near (Hebrews 10:25)
We are excited to have you join our society. We are always looking to welcome new members into our societies. This is the best decision you will make. The bible says that let us not neglect our meeting together, as some people do, but encourage one another, especially now that the day of his return is drawing near (Hebrews 10:25)
We are excited to have you have decided to meet the person who will help you. We are always looking to welcome people who wish to meet us. We are excited to see meet you. The bible says that let us not neglect our meeting together, as some people do, but encourage one another, especially now that the day of his return is drawing near (Hebrews 10:25)
We are excited to have you have decided to meet the person who will help you. We are always looking to welcome people who wish to meet us. We are excited to see meet you. The bible says that let us not neglect our meeting together, as some people do, but encourage one another, especially now that the day of his return is drawing near (Hebrews 10:25)


Samples content
- Drawing with Pointing Devices
- Ink Engine Setup
- Building Paths from Pointer Input
- Smoothing
- Preliminary Part
- Translucent Solid Color Brush
- Particle Brush
- Generating Bezier Path
- Stroke Model and Serialization
- Stroke Model
- Stroke Serialization
- WILL File Format
- Erasing Strokes
- Erasing Strokes
- Erasing Stroke Parts
- Selecting Strokes
- Selecting Strokes
- Selecting Stroke Parts
- Working with Rasters
- Displaying Raster Images
- Image Masking
- Real Time Collaboration
- Stroke Composition
- Erasing Strokes
- Erasing Stroke Parts
- Selecting Strokes
- Selecting Stroke Parts
- Stroke Composition With Latency


Hello! I am a paragraph element. Just so you know an element is the tag plus content.
Hello! I am a paragraph element too. I am like my friend above in style but not content.
Hello! I am a paragraph element as well. The other paragraph elements do not like me because I am not styled like them and we all know that is wrong.
Hello! I am a paragraph element as well. The other paragraph elements do not like me because I am not styled like them and we all know that is wrong.


{% extends 'layouts/layout.html' %} {% block content %}
We've sent a verification email to {{email}}. Please click on the link in the email to verify your email address.
If you don't receive it, check your spam filters. Resend email


Overview
Cookie JS consists of three main functions:
-
setCookie()
to create and set the cookies settings -
getCookie()
to retrieve the data of a cookie -
deleteCookie()
to delete a cookie
Place this at the end of your HTML document if you haven't already:
<!--Cookie JS-->
<script src="https://cdn.jsdelivr.net/npm/web-cookies-js/main/cookie.min.js" crossorigin="anonymous"></script>
setCookie()
Creates a cookie with the name, value, and days until expiration set by the user
Syntax
setCookie(cookieName,
cookieValue,
daysUntilExpiration)
Parameters
-
cookieName
(string) takes in the name of the cookie -
cookieValue
(string) takes in the value assigned to the cookie name -
daysUntilExpiration
(number) takes in the number of days until the cookie is automatically deleted
Example
setCookie("cookie", "chocolate", 1)
This example sets a cookie named "cookie" with the value "chocolate" which expires one day from the time it was created
Click the button to set the cookie above
setCookieThe alert is there only for demo purposes
getCookie()
Returns the value (if any) that corresponds with the cookie name inputted by the user
Syntax
getCookie(cookieName)
Parameters
-
cookieName
(string) takes in the name of the cookie to return
Example
getCookie("cookie")
This example returns the value stored in the cookie named "cookie"
Click the button to get the value of "cookie"
getCookieThe alert should return "chocolate"
deleteCookie()
Deletes the cookie specified by the user
Syntax
deleteCookie(cookieName)
Parameters
-
cookieName
(string) takes in the name of the cookie of which to be deleted
Example
deleteCookie("cookie")
This example completely deletes the specified cookie before the expiration date
Click the button to delete "cookie"
deleteCookieThe alert box shouldn't say anything
Try pressing the getCookie button from before; it shouldn't return anything
Wow you actually read the documentation!
Now put your knowledge of Cookie JS to use by making awesome websites!


--- layout: post title: Adding custom segments to Google Analytics date: 2009-06-04 13:26:04.000000000 +01:00 type: post published: true status: publish categories: - Uncategorised tags: - google analytics meta: aktt_notify_twitter: 'no' syntaxhighlighter_encoded: '1' _topsy_cache_timestamp: '1299681666' tmac_last_id: '618797407556517888' author: David Simpson excerpt_separator: ---
Here's a quick screencast I made to show how easy it is to add custom segments - e.g. based on country/territory - to Google Analytics. There's no audio. Sorry.
Adding custom segments to Google Analytics from David Simpson on Vimeo.


| DOSE: T+ 0:00 |
3.5 g |
oral |
Mushrooms |
(dried) |
| T+ 1:00 |
2.0 g |
smoked |
Cannabis |
(plant material) |
| T+ 8:00 |
2.0 g |
smoked |
Cannabis |
(plant material) |
I am 20 years old. My weekend began by going over to a friends friday and planning to stay there beacuse his folks were out of town. We woke up saturday and decided to get some shrooms and some pot to entertain us for the day. We called our friend who lived not too far away and got what we wanted. We bought an 1/4 of dried mushrooms(an 1/8 for each of us), and a 1/4 of some BC nug.
We started by eating the mushrooms. They weren't too bad tasting but I had a beer to chase them down. This was my second time eating them. I was fairly excited about the day and was in a good mood. We sat around and watched some tv and listened to some music for a while till they kicked in.
About an hour after eating them (1:00p.m.) we decided that they had started to work as everything appeared slow and distorted.
Next my friend and I decided to smoke a blunt of our pot to interst things up a little. I rolled up about 2 or 3 grams of pot in a philly and we went outside to smoke. Smoking seemed much more enjoyable and we laughed and had a great time outside. I noticed that the day was beautiful and it was very sunny outside. We finished up the blunt and went back inside. We ate a little snack and watched tv for a while.
We decided we wanted to go do somehting outside since it was so nice outside. We decided to go for a jog. My friend knew the area much better than I did so he led the way. Me and my friend were both in pretty good shape. We ran a couple of the most entertaining miles of my life. The time seemed to go by slow but I couldn't believe the time was over when we finished. Throughout the run I was taken in by the surroudings as my eyes wondered around the senery.
We finished running and returned to his house. We decided some water would be a good idea because we were pretty tired and sweaty. I made a glass of water and I realized that the run had sobered me up. I felt completely normal except for a little drowziness caused by the pot I had guessed. Out of no where I started to feel weird and so I decided to go sit on the porch and get some fresh air.
On my trip to the porch I started to black out. I got very hot and my vision slowly darkened. Next thing I knew I was waking up on the floor where I had fallin from walking. I was very hot and sweating even though it was very cold in the house. I walked to the bathroom to look at myself and make sure I hadn't screwed myself up when I fell. I was very pale with almost no color. My friend had no idea what was going on and I decided I better not tell him casue I didn't want to freak him out. I told him I was gonna go lay down because the run had made me tired. I filled up my glass of water and went upstairs.
I laid down and I realized I felt like I was tripping again. It was only 3 hours later so I guessed it was possible. I sat there and had strange thoughts of basically nothing. I created a tune in my head to listen to while I lay on the couch. I still was kinda freaked out about the whole passing out thing so I wasn't completely calm. I felt as if I wanted to be done with the whole tripping thing. 20 minutes or so later I decided to get up and eat a meal. It was around 5:00 at the time. I got up and walked down stairs and ate a sandwhich. Again I felt completely sober. I was pretty sure I was there for good now(sober). We decided that we needed to go do
something and we went to my friends house to hang out.
When we got there there were a few people over including his parents. His parents were cool with the whole smoking pot and drinking thing. I think that they did it too as a matter of fact.  We decided we wanted to smoke some more with my friend as it was long over due from the last time we smoked. I rolled up another blunt with the same amount of weed as the last one, maybe a little more. We smoked and watched a little baseball in his room.
We walked dowmstairs when we were done to join the other visitors. I started to feel weird again and got the same cold sweats and slow darkining if the vision. I walked into the room where everyone was looking for a seat cause I was sure it was gonna happen again. I wanted a place to sit when I passed out. Before I could even get close to a seat I woke up again on the florr with parents and friends all around telling me to wake up.
I got up and went to a chair, I was very uneasy and sweating a lot. I felt really bad like it would happen again. My vision was very good, it was very blurry and dark. I think it stayed like that for a while. I remember telling his parents that we had eatin schrooms earlier and that I had done it earlier but I thought I would have stopped tripping buy now. They said I had almost no color in my face and I was sort of purple colored.
The above was all I thought happened. I found out later on that night that other things had happened while I was recovering in the chair after the fall. They told me I passed out again while they were talking to me sitting in a chair. They said my eyes all of a sudden rolled back into the back of my head and I started to seziere. They said I did that for a couple of seconds and I woke up again.
I have done mushrooms since and everything has been normal. I don't know why this expreience happened and I don't really want to remember it.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


This is your Readiness Assessment dashboard. Create a new assessment or check the status of an existing one to proceed.


IN2IT drops second MV teaser for 'ULlala: Poisoning'
by KayRosaIN2IT has dropped another MV teaser for their comeback song!
On November 11 KST, the boy group released a new teaser for their upcoming title song "ULlala: Poisoning". In the teaser, the boys get into their choreography positions in a setting that evokes an extraterrestrial planet. Just like the title, the concept seems to suggest a deep, dark 'poison' of some sort, which you can spot at the end of the video.
Ready to get a taste of IN2IT's 'Poisoning'? Stay tuned for the full MV release on November 14 KST!


Struct clog::Clog
[−]
[src]
pub struct Clog { pub grep: String, pub format: String, pub repo: String, pub link_style: LinkStyle, pub version: String, pub patch_ver: bool, pub subtitle: String, pub from: String, pub to: String, pub infile: Option<String>, pub outfile: Option<String>, pub section_map: HashMap<String, Vec<String>>, pub git_dir: Option<PathBuf>, pub git_work_tree: Option<PathBuf>, pub regex: Regex, pub closes_regex: Regex, pub out_format: ChangelogFormat, }
The base struct used to set options and interact with the library.
Fields
grep | The grep search pattern used to find commits we are interested in (Defaults to: "ft|feat|fx|fix|perf|unk|BREAKING\'") |
format | The format of the commit output from |
repo | The repository used for the base of hyper-links |
link_style | The link style to used for commit and issue hyper-links |
version | The version tag for the release (Defaults to the short hash of the latest commit) |
patch_ver | Whether or not this is a patch version update or not. Patch versions use a lower markdown
header ( |
subtitle | The subtitle for the release |
from | Where to start looking for commits using a hash (or short hash) |
to | Where to stop looking for commits using a hash (or short hash). (Defaults to |
infile | The file to use as the old changelog data to be appended to anything new found. |
outfile | The file to use as the changelog output file (Defaults to |
section_map | Maps out the sections and aliases used to trigger those sections. The keys are the section name, and the values are an array of aliases. |
git_dir | The git dir with all the meta-data (Typically the |
git_work_tree | The working directory of the git project (typically the project directory, or parent of the
|
regex | The regex used to get components, aliases, and messages |
closes_regex | The regex used to get closes issue links |
out_format | The format to output the changelog in (Defaults to Markdown) |
Methods
impl Clog
fn new() -> BuilderResult
Creates a default Clog
struct using the current working directory and searches for the
default .clog.toml
configuration file.
Example
let clog = Clog::new().unwrap_or_else(|e| { // Prints the error to stderr and exits e.exit(); });
fn with_all<P: AsRef<Path>>(git_dir: P, work_tree: P, cfg_file: P) -> BuilderResult
Creates a Clog
struct using a specific git working directory and project directory as
well as a custom named TOML configuration file.
Example
let clog = Clog::with_all("/myproject/.git", "/myproject", "/myproject/clog_conf.toml").unwrap_or_else(|e| { e.exit(); });
fn with_dir_and_file<P: AsRef<Path>>(dir: P, cfg_file: P) -> BuilderResult
Creates a Clog
struct using a specific git working directory OR project directory as
well as a custom named TOML configuration file.
NOTE: If you specify a .git
folder the parent will be used as the working tree, and
vice versa.
Example
let clog = Clog::with_dir_and_file("/myproject", "/myproject/clog_conf.toml").unwrap_or_else(|e| { e.exit(); });
fn with_dir<P: AsRef<Path>>(dir: P) -> BuilderResult
Creates a Clog
struct using a specific git working directory OR project directory.
Searches for the default configuration TOML file .clog.toml
NOTE: If you specify a .git
folder the parent will be used as the working tree, and
vice versa.
Example
let clog = Clog::with_dir("/myproject").unwrap_or_else(|e| { e.exit(); });
fn with_dirs<P: AsRef<Path>>(git_dir: P, work_tree: P) -> BuilderResult
Creates a Clog
struct using a specific git working directory AND a project directory.
Searches for the default configuration TOML file .clog.toml
NOTE: If you specify a .git
folder the parent will be used as the working tree, and
vice versa.
Example
let clog = Clog::with_dirs("/myproject", "/myproject/.git").unwrap_or_else(|e| { e.exit(); });
fn from_file<P: AsRef<Path>>(file: P) -> BuilderResult
Creates a Clog
struct a custom named TOML configuration file. Sets the parent directory
of the configuration file to the working tree and sibling .git
directory as the git
directory.
NOTE: If you specify a .git
folder the parent will be used as the working tree, and
vice versa.
Example
let clog = Clog::from_file("/myproject/clog_conf.toml").unwrap_or_else(|e| { e.exit(); });
fn grep<S: Into<String>>(&mut self, g: S) -> &mut Clog
Sets the grep search pattern for finding commits.
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.grep("BREAKS");
fn format<S: Into<String>>(&mut self, f: S) -> &mut Clog
Sets the format for git log
output
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.format("%H%n%n==END==");
fn repository<S: Into<String>>(&mut self, r: S) -> &mut Clog
Sets the repository used for the base of hyper-links
NOTE: Leave off the trailing .git
NOTE: Anything set here will override anything in a configuration TOML file
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.repository("https://github.com/thoughtram/clog");
fn link_style(&mut self, l: LinkStyle) -> &mut Clog
Sets the link style to use for hyper-links
NOTE: Anything set here will override anything in a configuration TOML file
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.link_style(LinkStyle::Stash);
fn version<S: Into<String>>(&mut self, v: S) -> &mut Clog
Sets the version for the release
NOTE: Anything set here will override anything in a configuration TOML file
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.version("v0.2.1-beta3");
fn subtitle<S: Into<String>>(&mut self, s: S) -> &mut Clog
Sets the subtitle for the release
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.subtitle("My Awesome Release Title");
fn from<S: Into<String>>(&mut self, f: S) -> &mut Clog
Sets how far back to begin searching commits using a short hash or full hash
NOTE: Anything set here will override anything in a configuration TOML file
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.from("6d8183f");
fn to<S: Into<String>>(&mut self, t: S) -> &mut Clog
Sets what point to stop searching for commits using a short hash or full hash (Defaults to
HEAD
)
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.to("123abc4d");
fn changelog<S: Into<String> + Clone>(&mut self, c: S) -> &mut Clog
Sets the changelog file to output or prepend to (Defaults to stdout
if omitted)
NOTE: Anything set here will override anything in a configuration TOML file
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.changelog("/myproject/my_changelog.md");
fn outfile<S: Into<String>>(&mut self, c: S) -> &mut Clog
Sets the changelog output file to output or prepend to (Defaults to stdout
if omitted),
this is useful inconjunction with Clog::infile()
because it allows to read previous
commits from one place and output to another.
NOTE: Anything set here will override anything in a configuration TOML file
NOTE: This should not be used in conjunction with Clog::changelog()
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.outfile("/myproject/my_changelog.md");
fn infile<S: Into<String>>(&mut self, c: S) -> &mut Clog
Sets the changelog input file to read previous commits or changelog data from. This is
useful inconjunction with Clog::infile()
because it allows to read previous commits from
one place and output to another.
NOTE: Anything set here will override anything in a configuration TOML file
NOTE: This should not be used in conjunction with Clog::changelog()
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.infile("/myproject/my_old_changelog.md");
fn git_dir<P: AsRef<Path>>(&mut self, d: P) -> &mut Clog
Sets the git
metadata directory (typically .git
child of your project working tree)
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.git_dir("/myproject/.git");
fn git_work_tree<P: AsRef<Path>>(&mut self, d: P) -> &mut Clog
Sets the git
working tree directory (typically your project directory)
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.git_work_tree("/myproject");
fn patch_ver(&mut self, p: bool) -> &mut Clog
Sets whether or not this is a patch release (defaults to false
)
NOTE: Setting this to true will cause the release subtitle to use a smaller markdown heading
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.patch_ver(true);
fn output_format(&mut self, f: ChangelogFormat) -> &mut Clog
The format of output for the changelog (Defaults to Markdown)
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.output_format(ChangelogFormat::Json);
fn get_commits(&self) -> Commits
Retrieves a Vec<Commit>
of only commits we care about.
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); let commits = clog.get_commits();
fn get_latest_tag(&self) -> String
Retrieves the latest tag from the git directory
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); let tag = clog.get_latest_tag();
fn get_latest_tag_ver(&self) -> String
Retrieves the latest tag version from the git directory
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); let tag_ver = clog.get_latest_tag_ver();
fn get_last_commit(&self) -> String
Retrieves the hash of the most recent commit from the git directory (i.e. HEAD)
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); let head_hash = clog.get_last_commit();
fn section_for(&self, alias: &str) -> &String
Retrieves the section title for a given alias
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); let section = clog.section_for("feat"); assert_eq!("Features", section);
fn write_changelog(&self) -> WriterResult
Writes the changelog using whatever options have been specified thus far.
Example
let mut clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); clog.write_changelog();
fn write_changelog_to<P: AsRef<Path>>(&self, cl: P) -> WriterResult
Writes the changelog to a specified file, and prepends new commits if file exists, or creates the file if it doesn't.
Example
let mut clog = Clog::new().unwrap_or_else(|e| e.exit()); clog.write_changelog_to("/myproject/new_changelog.md").unwrap_or_else(|e| { // Prints the error and exits appropriately e.exit(); });
fn write_changelog_from<P: AsRef<Path>>(&self, cl: P) -> WriterResult
Writes the changelog from a specified input file, and appends new commits
Example
let mut clog = Clog::new().unwrap_or_else(|e| e.exit()); clog.write_changelog_from("/myproject/new_old_changelog.md").unwrap_or_else(|e| { // Prints the error and exits appropriately e.exit(); });
fn write_changelog_with<W>(&self, writer: &mut W) -> WriterResult where W: FormatWriter
Writes a changelog with a specified FormatWriter
format
Examples
let clog = Clog::new().unwrap_or_else(|e| { e.exit(); }); // Write changelog to stdout in Markdown format let out = io::stdout(); let mut out_buf = io::BufWriter::new(out.lock()); let mut writer = MarkdownWriter::new(&mut out_buf); clog.write_changelog_with(&mut writer).unwrap_or_else(|e| { // Prints the error and exits appropriately e.exit(); });


I am a 5th year astronomy PhD student (and an NSF Graduate Research Fellow) at Harvard University, working with Alyssa Goodman and Doug Finkbeiner. I use observations, simulations, astrostatistics, and the latest visualization sofware to understand the 3D structure of our Milky Way's gas and dust. Some of my research interests include:
We uniformly determine distances to most major clouds within 2 kpc of the sun, using a combination of stellar photometry and Gaia DR2 astrometry. We provide interactive pixelated distance maps for 27 clouds, in many cases revealing evidence of distance gradients and/or multiple components.
We present a a new technique to map velocities to distances in molecular clouds, and apply it to the local Perseus Molecular Cloud. We find that the velocity gradient of 5 km/s across Perseus maps to a distance gradient of about 25 pc. We are planning to apply the same technique to massive arm-tracing clouds in the Galactic plane, to produce more precise 4D maps of molecular cloud positions!
We have created an open source python package called RadFil that makes it easy to build and fit radial density profiles for interstellar filaments. Check out my GitHub repository for a full working example of the code.
We present the first uniform, systematic comparison of the physical properties of the largest (~ 100 pc) scale filaments in the Milky Way. We find that the longest and skinniest of these filaments (Galactic "Bones"; see Zucker et al. 2015) show the most potential for tracing spiral structure, while other catalogs could be large concentrations of molecular gas (giant molecular clouds, core complexes).
We present a catalog of WISE mid-IR photometry for 163 compact groups -- dense associations of three or more bright galaxies that undergo frequent interaction. Compact groups undergo a rapid transition from active star formation to quiescence, and we characterize a large sample of these "transition" galaxies.
We present a new class of interstellar filaments in the Milky Way -- Galactic "Bones". These filaments are all long and skinny mid-IR extinction features, which lie parallel and in close proximity to the Galactic plane, and to known spiral arms. New numerical simulations (Zucker & Smith et al. 2019, in prep) show these filaments may form in the spiral potential wells of our Galaxy, and could be useful for tracing Galactic structure.


Master Creation
Customer Transaction Details
Open
Closed
In Progress
Service Requested
Vehicle No. :{{service.carNumber}}
- {{srv.code}}- {{srv.desc}}
Open
Closed
In Progress
Service Requested
Vehicle No. :{{service.carNumber}}
- {{srv.code}}- {{srv.desc}}
Open
Closed
In Progress
Service Requested
Vehicle No. :{{service.carNumber}}
- {{srv.code}}- {{srv.desc}}
Open
Closed
In Progress
Service Requested
{{service.code}}- {{service.desc}}


Thank you very much for your purchase!
If you have any questions that are beyond the scope of this documentation, please feel free to email via our profile’s contact form.
Would you like stay up to date about our projects?
Subscribe to our newsChangelog
-
New Features
- Bootstrap 4.0 Final Stable version integration
-
6 Get Started Pages
- Backend Classic
- Backend Clean
- Backend Social
- Backend Corporate
- Backend Minimal
- Backend Pop
-
4 Crypto Pages
- Dashboard
- Buy/Sell
- Wallets
- Settings
-
Font Awesome 5 Support
If you would like to enable the new icons, just uncomment@import 'vendor/font-awesome5';
and comment@import 'vendor/font-awesome';
lines inscss/main.scss
. After compiling to CSS, you will be able to use them. Be sure to also check out Font Awesome Migration Guide for any icon name changes you might have to apply in your own pages.
-
Improvements
-
Themed block options styles now work even if they are added in a
.block-content
and not only in.block-header
of a.block
- Hand cursor is now used when hovering over block option buttons to follow Bootstrap 4 approach
-
Themed block options styles now work even if they are added in a
-
Fixes
-
body { text-align: right; }
was added in RTL example pages in Get Started version - Button groups toggle styles fixed
-
uiHelperNotify()
helper for Bootstrap Notify plugin was updated accordingly to support Bootstrap 4 grid classes and display notifications correctly on mobiles -
.btn-noborder
hover and focus styles were fixed -
.fa-li
class (used for icon lists) position fixed
-
-
Updates
- Bootstrap 4.0 Final Stable (Beta 2)
- Popper 1.12.9 (1.12.3)
- FullCalendar 3.8.0 (3.7.0)
- MomentJS 2.20.1 (2.19.3)
- SweetAlert2 7.4.1 (6.11.5)
- CropperJS 1.2.2 (1.1.3)
- DropzoneJS 5.3.0 (5.2.0)
- CKEditor 4.8.0 (4.7.3)
-
Markup Changes
-
We are now including only
js/core/bootstrap.bundle.min.js
from the core files instead of includingjs/core/bootstrap.min.js
andjs/core/popper.min.js
separately - (BS4 breaking change) Custom file input markup changed
- (BS4 breaking change) Custom input controls (checkboxes & radios) markup changed
-
(BS4 breaking change) Input groups markup changed (
.input-group-btn
&.input-group-addon
are now deprecated in favor of the new.input-group-prepend
,.input-group-prepend
&.input-group-text
classes). Codebase’s material input groups are also updated to reflect those changes. - For more details please also check Bootstrap 4 Stable Changes and Bootstrap 4 Beta 3 Breaking Changes (they also apply because we are upgrading from Beta 2)
-
We are now including only
Updating to the new 2.0 version is easy but if you need any assistance do not hesitate to contact us! :-)
-
New Features
-
3 e-Learning Pages
- Courses
- Course
- Lesson
- Scrum Board Page
- Summernote Editor
-
3 e-Learning Pages
-
Improvements
-
slidesToScroll option was added to Slick Plugin Helper and can be set with
data-slides-to-show
attribute
-
slidesToScroll option was added to Slick Plugin Helper and can be set with
-
Fixes
- Themed block options fixed when nested blocks are used
-
Updates
- Bootstrap 4 Beta 2 (Beta 1)
- Select2 4.0.5 (4.0.4)
- FullCalendar 3.7.0 (3.6.1)
- MomentJS 2.19.3 (2.19.1)
- CropperJS 1.1.3 (1.1.1)
- SweetAlert2 6.11.5 (6.10.3)
- JS Cookie 2.2.0 (2.1.2)
- jQuery Raty 2.8.0 (2.7.1)
- CKEditor 4.7.3 (4.7.2)
- Popper 1.12.3 (1.10.8)
-
Markup Changes
-
Class
pos-relative
updated toposition-relative
-
Class
pos-absolute
updated toposition-absolute
-
Class
thead-default
updated tothead-light
(BS4 Beta 2) -
Class
thead-inverse
updated tothead-dark
(BS4 Beta 2) - Progress Mini markup updated a bit (please check Activity page) (BS4 Beta 2)
- Bootstrap 4 Beta 2 breaking changes
-
Class
Updating to the new 1.4 version is easy but if you need any assistance do not hesitate to contact us! :-)
-
New Features
-
3 Dashboard Pages
- Dashboard 2
- Dashboard 3
- Dashboard 4
-
8 Authentication Pages
- Sign In 2
- Sign In 3
- Sign Up 2
- Sign Up 3
- Password Reminder 2
- Password Reminder 3
- Lock Screen 2
- Lock Screen 3
- Todo Page
-
3 Dashboard Pages
-
Improvements
-
Inverse style for block loading mode with
block-mode-loading-inverse
class (showcased in Dashboard 2 page)
-
Inverse style for block loading mode with
-
Updates
- Chart.js 2.7.0 (2.6.0)
- DataTables 1.10.16 (1.10.15)
- DropzoneJS 5.2.0 (5.1.1)
- Select2 4.0.4 (4.0.3)
- FullCalendar 3.6.1 (3.5.1)
- MomentJS 2.19.1 (2.10.5)
- CropperJS 1.1.1 (1.0.0)
- Slick 1.8.1 (1.7.1)
- SweetAlert 6.10.3 (6.6.10)
Updating to the new 1.3 version is easy but if you need any assistance do not hesitate to contact us! :-)
The first big Codebase update is here bringing you lots of new pages and features! We hope you are as excited as we are! Stay tuned for more updates in the future and happy coding! ;-)
PS: Unfortunately, we also had to remove the frontend page examples as per Envato's request. We did the best we could to explain that Codebase is a UI framework which reuses the same resources to build all kind of layouts and does not bundling different templates but to no avail. The good news is that you can still use the frontend pages you've already downloaded without any issues since they are using the same resources as the backend does.
-
New Features
-
Boxed Dashboard
- Dashboard
- Search
- 10 Hero Variations Pages
-
eCommerce Pages
- Dashboard
- Orders
- Order
- Products
- Product Edit
- Customer
-
Backend Generic Pages
- Blog
- Story
- Project List
- Project
- Upgrade Plan
- Team
- Contact
- Chat Component
- Form Wizard
- Image Cropper
-
Boxed Dashboard
-
Improvements
- The glass fixed header variation now gets its background color if the page is refreshed and the page is already scrolled down
-
link-effect
class now works only on bigger screen widths -
row-deck
class now applies to 'block' classes and not to generic divs
-
Updates
- FullCalendar 3.5.1 (3.4.0)
- CKEditor 4.7.2 (4.7.1)
- Slick 1.7.1 (1.6.0)
- jQuery Validation 1.17.0 (1.16.0)
- SweetAlert 6.6.10 (6.6.5)
-
Fixes
-
Line height of dropdowns is now fixed if used inside
content-heading
-
Removed border radius of
block-rounded
blocks which are in fullscreen mode
-
Line height of dropdowns is now fixed if used inside
-
Markup/File Changes
-
col-lg-4
was changed tocol-xl-4
inop_auth_*
pages -
bg-fe-pattern.png
renamed tobg-pattern.png
inassets/img/various/
-
bg-fe-pattern-inverse.png
renamed tobg-pattern-inverse.png
inassets/img/various/
-
fe-project-promo*.png
images renamed tocb-project-promo*.png
inassets/img/various/
-
fe-promo*.png
images renamed tocb-promo*.png
inassets/img/various/
-
Updating to the new 1.2 version is easy but if you need any assistance do not hesitate to contact us! :-)
Bootstrap 4 Beta version was officially released today, so we took the chance and quickly updated Codebase! There is no need to change anything in your markup since all breaking changes from Alpha 6 were already implemented in Codebase since its release! Stay tuned for rich content & features updates in the near future as we are working on them! Happy coding! ;-)
-
Updates
- Bootstrap 4 Beta (development beta was used)
Updating to the new 1.1 version is easy but if you need any assistance do not hesitate to contact us! :-)
Updating
Codebase will receive many free updates in the future adding many new awesome features, new fresh pages as well as third-party plugin upgrades. One of the main goals was to make sure the update progress is going to be as easy as possible. Due to its nature (template), updating can become an unpleasant task.
Therefore we've included a folder (01 - Codebase Get Started) in the package which we encourage you to use in your project. It contains all vital framework files minimized and ready to use in production. This way you will be able to update Codebase just by replacing the assets/
folder with the new one. If there is an important markup change that you will also have to make in your HTML, don't worry, since we will mention it in the changelog.
Feel free to make any overrides in other files or even export your own assets/
folder from the main versions (HTML/PHP) using Gulp tasks. Just make sure that any additions will be made in your own (eg Sass) files, so is easier for you to upgrade framework’s files when an update is made available.
To help you out, we’ve already included a file in the scss
folder where you can add your own styles or overwrite any existing ones. It can be found in scss/vendor/_custom.scss
.
In general, the following core folders/files will have to be updated with each update:
-
fonts/*
-
css/
-
themes/*
-
codebase.css
-
codebase.min.css
-
-
js/
-
plugins/*
-
codebase.min.js
-
If you are using the PHP or HTML version (they both use the original full files), then the following core folders/files will have to be updated:
-
fonts/*
-
scss/*
(with the exception ofvendor/_custom.scss
) -
css/
-
themes/*
-
codebase.css
-
codebase.min.css
-
-
js/
-
core/*
-
plugins/*
-
codebase.js
-
Moreover, if you are using Gulp, remember to update the following files in your project’s root folder and then run the following command from your console npm install
to install/update any new dependencies related to Gulp tasks:
-
Gulpfile.js
-
package.json
Remember that it’s always a good idea to backup your work before updating to a new version!
When a new update becomes available, you will be able to download it from Themeforest. You can check the checkbox under the product ( Get notified by email if this item is updated), follow us on Twitter or subscribe to our news to stay up to date about the availability of new updates.
Package
Codebase is the result of hundreds of hours of design and development. It was built with extra care based on the valuable feedback we’ve received the past 5 years working full-time on Themeforest products. It follows the best practices using the latest technologies and we really hope that you will enjoy working with it.
Codebase will enable you to build fast, beautiful, user friendly web applications and websites that will work seamlessly across various screens and devices. It will be a valuable tool that will help you create the product that will provoke the emotions and credibility you want for your business.
Let's have a look at the contents of the current package:
-
01 - Codebase Get Started
Includes vital framework files minimized and ready for production. Moreover, in here you will find 6 boilerplate pages (backend, boxed backend and landing - plus their RTL versions) to get you started. It is encouraged to start your project with the
assets/
folder from this version, so that is easier to update the framework in the future. -
02 - Codebase Source (HTML)
Includes the abstract HTML version. This version can be used with any server side language/framework you prefer or currently working with.
-
03 - Codebase Source (PHP)
Includes the abstract PHP version. This version can come really handy as a starting point if you would like to build a custom PHP application. It can help you in many ways:
-
It enables you to change various options of the layout just by updating the main variables found in
src/inc/_global/config.php
. Each template section (eg Backend/Backend Boxed) has also its own folder with its own config file which can be used to overwrite the main variables of your choice for the pages in that section. For example, the extra config file for Backend pages can be found insrc/inc/backend/config.php
. -
It uses basic templating for separating common used code (header, sidebar, footer etc). The main views which are used in every page can be found in
src/inc/_global/views/*
. Each template section (eg Backend/Backend Boxed) also has its own folder with its own views which can be used for common code, used only in the pages in that section. For example, the extra views for Backend pages can be found insrc/inc/backend/views/*
. - It features a recursive function that can build main navigation on the fly (with as many levels as you like - up to 3 for the horizontal header navigation) from a multidimensional array you can set in the config file of each section.
-
It features various functions that can populate your pages with dummy content for testing and showcasing purposes
src/inc/_classes/Template.php
- In general, this version can give you a good idea of how you could implement your own templating in the language/framework of your choice.
-
It enables you to change various options of the layout just by updating the main variables found in
-
Documentation
Obviously, includes current documentation which by the way uses Codebase framework :-)
You don’t have to use Node.js or Gulp with the source code if you don't like. You can ignore Gulpfile.js
and package.json
and work directly with the files found in the src/
folder of each version. In that case, if for example you would like to work with and compile the Sass files or minimize other files, you will just have to use your own compiling method or tasks.
Bootstrap 4
Bootstrap is the world's most popular front-end component library. It is easy to use and offers a large variety of CSS as well as JavaScript components. Codebase uses this framework at its core and builds on top its unique layout and features. It redesigns/extends the original components and introduces new ones, featuring a modern and clean design.
If you are unfamiliar with the framework, its official website will help you out a lot but if you just want to start quickly, you can easily replicate any feature or component we already present in Codebase pages. If you find a feature in the official Bootstrap Docs you would like to use, feel free to, since they are almost all available in Codebase.
Please have in mind that by default we don’t include the navbar
, card
, jumbotron
and carousel
components since we use our own but you can easily include them if you need them by uncommenting them in scss/main.scss
and re-compiling to CSS.
Gulp Tasks
Gulp is a JavaScript Task Runner. It enables you to automate repetitive tasks like minification, compilation, unit testing, linting, etc, which makes your life easier. In Codebase, we have included a Gulp file which can help you live compile Sass files and add additional vital browser prefixes to your CSS styles while you work. It also enables you to export your own custom, minimized and production ready Codebase framework. To use it with the source code (HTML or PHP version), you will first have to:
-
Install gulp-cli globally by running the command
npm install -g gulp-cli
in your system’s console -
Install all required plugins in your project’s folder by running the command
npm install
in your system’s console - You will have to run it from your project’s root folder which will includesrc/
folder,Gulpfile.js
andpackage.json
files.
After you’ve successfully completed the previous steps, you will be able to run the following commands in your system’s console from your project’s root folder:
| Command | Description |
|---|---|
gulp
|
It will constantly watch for any changes made to the Sass files ( |
gulp build
|
It will prepare and build your custom, minimized and production ready Codebase framework. After it completes, you will be able to find it under a new |
HTML
Codebase features a super flexible, smart and powerful layout which can be used to create dashboard and website pages with minimum effort using the same resources. In the Get Started folder, you will be able to find 3 boilerplate templates (backend, boxed backend and landing) which highlight how easy is to create your own pages.
The layout offers many options which can be enabled just by adding or removing a class in the #page-container
element. If you play around with the PHP version, you will be able to set these options from the src/inc/_global/config.php
file.
Let’s have a quick look at the generic HTML structure and get familiar with the layout:
<!doctype html>
<!--[if lte IE 9]> <html lang="en" class="no-focus lt-ie10 lt-ie10-msg"> <![endif]-->
<!--[if gt IE 9]><!--> <html lang="en" class="no-focus"> <!--<![endif]-->
<head>
<!-- Title and Meta -->
...
<!-- END Title and Meta -->
<!-- Icons -->
<!-- The following icons can be replaced with your own, they are used by desktop and mobile browsers -->
...
<!-- END Icons -->
<!-- Stylesheets -->
<!-- Page JS Plugins CSS go here -->
<!-- Codebase framework -->
<link rel="stylesheet" id="css-main" href="assets/css/codebase.min.css">
<!-- You can include a specific file from css/themes/ folder to alter the default color theme of the template. eg: -->
<!-- <link rel="stylesheet" id="css-theme" href="assets/css/themes/flat.min.css"> -->
<!-- END Stylesheets -->
</head>
<body>
<!-- Page Container -->
<!--
Available classes for #page-container:
GENERIC
'enable-cookies' Remembers active color theme between pages (when set through color
theme helper Codebase() -> uiHandleTheme())
SIDEBAR & SIDE OVERLAY
'sidebar-r' Right Sidebar and left Side Overlay (default is left Sidebar and right Side Overlay)
'sidebar-mini' Mini hoverable Sidebar (screen width > 991px)
'sidebar-o' Visible Sidebar by default (screen width > 991px)
'sidebar-o-xs' Visible Sidebar by default (screen width < 992px)
'sidebar-inverse' Dark themed sidebar
'side-overlay-hover' Hoverable Side Overlay (screen width > 991px)
'side-overlay-o' Visible Side Overlay by default
'side-scroll' Enables custom scrolling on Sidebar and Side Overlay instead of native
scrolling (screen width > 991px)
HEADER
'' Static Header if no class is added
'page-header-fixed' Fixed Header
HEADER STYLE
'' Classic Header style if no class is added
'page-header-modern' Modern Header style
'page-header-inverse' Dark themed Header (works only with classic Header style)
'page-header-glass' Light themed Header with transparency by default
(absolute position, perfect for light images underneath - solid light background
on scroll if the Header is also set as fixed)
'page-header-glass page-header-inverse' Dark themed Header with transparency by default
(absolute position, perfect for dark images underneath - solid dark background
on scroll if the Header is also set as fixed)
MAIN CONTENT LAYOUT
'' Full width Main Content if no class is added
'main-content-boxed' Full width Main Content with a specific maximum width (screen width > 1200px)
'main-content-narrow' Full width Main Content with a percentage width (screen width > 1200px)
-->
<div id="page-container">
<!-- Side Overlay-->
<aside id="side-overlay">
...
</aside>
<!-- END Side Overlay -->
<!-- Sidebar -->
<nav id="sidebar">
...
</nav>
<!-- END Sidebar -->
<!-- Header -->
<header id="page-header">
...
</header>
<!-- END Header -->
<!-- Main Container -->
<main id="main-container">
...
</main>
<!-- END Main Container -->
<!-- Footer -->
<footer id="page-footer">
...
</footer>
<!-- END Footer -->
</div>
<!-- END Page Container -->
<!-- Codebase Core JS -->
<script src="assets/js/codebase.min.js"></script>
<!-- Page JS Plugins + Page JS Code -->
</body>
</html>
As you can see, we kept the HTML structure as simple as possible, so we hope that you find it easy to understand and implement in your own pages. Furthermore, have in mind that you can remove #side-overlay
, #sidebar
, #page-header
or #page-footer
markup if you would like to not have them in some of your pages. Everything will work as expected, just make sure that you don’t use any related classes (to the element you removed) in #page-container
.
Sass
Codebase was built with Sass using the latest SCSS
syntax. It is a powerful CSS pre-processor which extends the CSS language, adding features that allow variables, mixins, functions and many other techniques, enabling you to make CSS that is more maintainable and extendable.
If you would like to extend the framework and add your own styles or UI components, feel free to use the Sass files included in the source (HTML and PHP version) under src/assets/scss/*
folder. You can also use the included Gulp tasks to auto compile to CSS every time you make a change (any required browser prefixes will be auto added after compilation, so you don’t have to).
It is highly recommended though, to use the custom file we created for you to add your own styles and make the updating process easier. It can be found in scss/vendor/_custom.scss
.
Let’s have a better look at the Sass files structure:
bootstrap/
|
|
Includes all original unaltered Bootstrap 4 Sass files. The concept is to never touch those files, so that a framework update is possible. |
codebase/
|
|
Includes all Codebase Sass files which follow the structure Bootstrap 4 uses. All Bootstrap 4 overrides can also be found in here (variables/mixins/functions/styles). We basically override what we can (using the available Bootstrap 4 variables) or want (functions/mixins) to match our needs. Then we override the styles we can’t alter with variables and add our own components. This method allows us to easily update Bootstrap, resuse its features in our styles and also export a smaller main CSS file with fewer style overrides. |
vendor/
|
|
Includes all third party styles (eg animation.css, fontawesome icons, simple line icons). In here, you will also find all style overrides for the integrated jQuery plugins as well as the |
main.scss
|
|
This file is compiled to the main CSS stylesheet |
JavaScript
Codebase uses jQuery, Bootstrap JS framework as well as some other vital third-party jQuery plugins at its core. It also supports many more third-party plugins which you can include per page if you need them. Their style will match template’s design.
Let’s have a better look at the JavaScript file structure:
| File | Description |
|---|---|
codebase.js
|
The main file containing all custom JS code needed for Codebase features including layout and blocks API. It also includes various helper functions which you can call per page for enabling extra features (eg Table Tools) or repetitive init code of various third party plugins. |
core/*
|
All vital libraries and plugins can be found here. They are included in all pages and these files, along with the previous |
plugins/*
|
All supported and integrated third-party plugins are included here. Some of them require from you to add their stylesheet as well, in the page you would like to use them (always before |
pages/*
|
Custom JS code used on specific pages demonstrating the usage of various plugins and functionality. |
Let’s have a better look at the core JavaScript files:
Let’s have a better look at all the other third-party plugins:
| Name | CSS | Helper | Version | Online | |
|---|---|---|---|---|---|
| Bootstrap Colorpicker | 2.5.1 | ||||
|
A nice and customizable colorpicker plugin for Bootstrap. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Bootstrap Datepicker | 1.7.1 | ||||
|
A nice and customizable datepicker plugin for Bootstrap. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Bootstrap Maxlength | 1.7.0 | ||||
|
This plugin integrates by default with Twitter bootstrap using badges to display the maximum length of the field where the user is inserting text. Uses the HTML5 attribute "maxlength" to work. Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Bootstrap Notify | 3.1.3 | ||||
|
Turns standard Bootstrap alerts into "Growl-like" notifications. Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add |
|||||
| Bootstrap Wizard | 1.4.2* | ||||
|
It allows to build a wizard functionality using buttons to go through the different wizard steps and using events allows to hook into each step individually. *We've made a few customizations to make it compatible with Bootstrap 4. Required JS files (include after all core JS scripts):
Usage: You can check out Form Wizard page under Forms section for various usage examples. |
|||||
| Chart.js | 2.7.1 | ||||
|
Simple, clean and engaging charts for designers and developers. Required JS files (include after all core JS scripts):
Usage: You can check out Charts page for various usage examples. |
|||||
| CKEditor | 4.8.0 | ||||
|
CKEditor is a ready-for-use HTML text editor designed to simplify web content creation. It's a WYSIWYG editor that brings common word processor features directly to your web pages. Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Cropper.js | 1.2.2 | ||||
|
Cropper.js is a JavaScript image cropper. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Usage: You can check out Image Cropper page under Components section for various usage examples. |
|||||
| DataTables | 1.10.16 | ||||
|
DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Usage: You can check out DataTables page for various usage examples. |
|||||
| Dropzone.js | 5.3.0 | ||||
|
DropzoneJS is an open source library that provides drag’n’drop file uploads with image previews. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Usage (add
|
|||||
| Easy Pie Chart | 2.1.7 | ||||
|
Easy Pie Chart is a lightweight plugin to draw simple, animated pie charts for single values. Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Flot Charts | 0.8.3 | ||||
|
Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features. Required JS files (include after all core JS scripts):
Usage: You can check out Charts page for various usage examples. |
|||||
| FullCalendar | 3.8.0 | ||||
|
FullCalendar is a jQuery plugin that provides a full-sized, drag & drop event calendar. It uses AJAX to fetch events on-the-fly and is easily configured to use your own feed format. It is visually customizable with a rich API. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Usage: You can check out Calendar page for various usage examples. |
|||||
| Gmaps.js | 0.4.25 | ||||
|
The easiest way to use Google Maps. Google Maps API now requires an API key to work correctly! To obtain your own key and be able to use them, please head over at Google and follow the instructions. Required JS files (include after all core JS scripts):
Usage: You can check out Maps page for various usage examples. |
|||||
| Highlight.js | 9.12.0 | ||||
|
JavaScript syntax highlighter. Required CSS files (include before Codebase CSS - You can also include some other file from
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage: You can check out Syntax Highlighting page for various usage examples. The plugin is initialized by the helper and can be used just by adding the required HTML markup. |
|||||
| Ion Range Slider | 2.2.0 | ||||
|
Easy, flexible and responsive range sliders. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| jQuery AutoComplete | 1.0.7 | ||||
|
An extremely lightweight completion suggester plugin for jQuery. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Usage: You can check out Form Plugins page for a usage example. |
|||||
| jQuery Countdown | 2.2.0 | ||||
|
The Final Countdown plugin for jQuery. Required JS files (include after all core JS scripts):
Usage: You can check out Coming Soon page for usage example. |
|||||
| jVectorMap | 2.1.0 | ||||
|
Vector Maps component. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Usage: You can check out Vector Maps page for various usage examples. |
|||||
| jQuery Raty | 2.8.0 | ||||
|
A star rating plugin. Required JS files (include after all core JS scripts):
Usage: You can check out Rating page under Components for various usage examples. |
|||||
| jQuery Tags Input | 1.3.6 | ||||
|
Magically convert a simple text input into a cool tag list with this jQuery plugin. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| jQuery Validation | 1.17.0 | ||||
|
The jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy. Required JS files (include after all core JS scripts):
Usage: You can check out Form Validation page for various usage examples. |
|||||
| Magnific Popup | 1.1.0 | ||||
|
Light and responsive lightbox script with focus on performance. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (with |
|||||
| jQuery Masked Input | 1.4.1 | ||||
|
This is a masked input plugin for the jQuery javascript library. It allows a user to more easily enter fixed width input where you would like them to enter the data in a certain format (dates, phone numbers, etc). Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (the helpers inits various classes to work with): You can check out Form Plugins page for various usage examples. |
|||||
| Select2 | 4.0.5 | ||||
|
Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Summernote | 0.8.8 | ||||
|
Summernote is a JavaScript library that helps you create WYSIWYG editors online. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| Slick | 1.8.1 | ||||
|
The last carousel you'll ever need. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (with
You can check out Sliders page for various usage examples.
|
|||||
| jQuery Sparklines | 2.1.2 | ||||
|
This jQuery plugin generates sparklines (small inline charts) directly in the browser using data supplied either inline in the HTML, or via JavaScript. Required JS files (include after all core JS scripts):
Usage: You can check out Charts page for various usage examples. |
|||||
| SimpleMDE Markdown Editor | 1.11.2 | ||||
|
A simple, beautiful, and embeddable JavaScript Markdown editor. Delightful editing for beginners and experts alike. Features built-in autosaving and spell checking. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts):
Helper (call it after all other scripts are added):
Usage (add
|
|||||
| SweetAlert2 | 7.4.1 | ||||
|
An awesome replacement for JavaScript's alert. Required CSS files (include before Codebase CSS):
Required JS files (include after all core JS scripts - es6-promise.auto.min.js is required for IE10 and up support):
Usage: You can check out Activity for usage examples. |
|||||
| Vide | 0.5.1 | ||||
|
Easy as hell jQuery plugin for video backgrounds. Required JS files (include after all core JS scripts):
Usage: You can check out the Hero Video page under Layout section for usage examples. Note: If you are having issues with the auto video playback in Safari 11, please have a look at https://github.com/vodkabears/Vide/issues/206 |
You can load multiple helpers in a page by using:Codebase.helpers(['helper1', 'helper2', 'helper3'];
Feel free to ignore the provided helpers and use your own plugin inits after you’ve included the resources of the ones you need in your page.
Finally, let’s also have a better look at some custom helpers:
| Print Page | |
|
A helper which prints the main content of the current page. Helper (just by calling the following function):
|
|
| Class Toggle | |
|
A helper which allows you to toggle a custom class on the element of your choice on button click. Helper: This helper is already called by default on load. You only must call it again if you inject new markup to the page and would like to init the functionality on it.
Usage: Your target element
Your button
In this specific example, each button click will toggle the class 'your-class' on the element with class 'js-target-class'
|
|
| Ripple | |
|
A helper which animates a ripple on button click. Helper: This helper is already called by default on load. You only must call it again if you inject new markup to the page and would like to init the functionality on it.
Usage (add data-* attributes to a button):
|
|
| Scroll To | |
|
A helper which allows you to animate scrolling to a specific element in the same page. Helper: This helper is already called by default on load. You only must call it again if you inject new markup to the page and would like to init the functionality on it.
 For example, very useful for portfolio items. Helper (call it after all other scripts are added):
Usage: You can check out Filtering page under Components page for live and markup examples. |
|
| Table Sections | |
|
A helper which allows you to create table sections that toggle on row click (like an accordion component). Helper (call it after all other scripts are added):
Usage: 1. Add the class
2. Use the follow markup in your table to create clickable header rows and their content
You can check out Table Tools page for live more complex examples.
|
|
| Checkable Table | |
|
A helper which allows you to create a table with checkable rows. Helper (call it after all other scripts are added):
Usage: 1. Add the class
2. Use similar markup in your table to create checkable rows
You can check out Table Tools page for live more complex examples.
|
When a helper is called and functionality/plugin is initialized, a class js-HELPER_NAME-enabled
is auto added to the element. This ensures that if you add a similar element dynamically to your page and call the helper again, the functionality/plugin will be initialized only on the new element. It’s a nice convenient solution but please have in mind that if you copy-paste an element to your markup from your browser’s developer tools, then you will also copy this extra class, so remember to remove it!
I would like to add a new jQuery plugin. Which is the best way to do it?
If you find a new plugin that you like, you can easily add it in Codebase. You can download and add it in a folder inside assets/js/plugins/
. Afterwards, you just include its required JS files after all Codebase JS files and initialize it (based on its online examples). If the plugin also requires some CSS files, remember to include them in the <head>
section of your page before the main Codebase CSS file.
I’m using Angular or some other framework, what is the best way to handle code in codebase.js
?
By default, Codebase.init()
is called at the bottom of the file (it doesn’t, if AngularJS is also included in your page). This call executes a few functions which are vital for the custom JS functionality in Codebase.
// LAYOUT VARIABLES
uiInit();
// BASE UI
uiHandleScroll('init');
uiHandleMain();
uiHandleHeader();
uiHandleNav();
uiHandleForms();
uiHandleTheme();
// API
uiApiLayout('init');
uiApiBlocks(false, 'init');
// CORE HELPERS
uiHelperCoreToggleClass();
uiHelperCoreScrollTo();
uiHelperCoreYearCopy();
uiHelperCoreTooltip();
uiHelperCorePopover();
uiHelperCoreTab();
uiHelperCoreAppear();
uiHelperCoreAppearCountTo();
uiHelperCoreSlimscroll();
uiHelperCorePageLoader('hide');
uiHelperCoreRipple();
If the framework you use is set up to load on demand various sections of your page (eg the sidebar), then it might be better to remove the call from the file and run it on your own once everything is loaded. Event delegation is used in many occasions to ensure that everything will work as expected but in some cases, you might also want to call each vital function separately. That is possible by calling each one of the following whenever you like (one to one mapping with the previous functions):
// LAYOUT VARIABLES
Codebase.helper('core-fn-uiInit'); // uiInit();
// BASE UI
Codebase.helper('core-fn-uiHandleScrollInit'); // uiHandleScroll('init');
Codebase.helper('core-fn-uiHandleMain'); // uiHandleMain();
Codebase.helper('core-fn-uiHandleHeader'); // uiHandleHeader();
Codebase.helper('core-fn-uiHandleNav'); // uiHandleNav();
Codebase.helper('core-fn-uiHandleForms'); // uiHandleForms();
Codebase.helper('core-fn-uiHandleTheme'); // uiHandleTheme();
// API
Codebase.helper('core-fn-uiApiLayout'); // uiApiLayout('init');
Codebase.helper('core-fn-uiApiBlocks'); // uiApiBlocks(false, 'init');
// CORE HELPERS
Codebase.helper('core-toggle-class'); // uiHelperCoreToggleClass();
Codebase.helper('core-scrollTo'); // uiHelperCoreScrollTo();
Codebase.helper('core-year-copy'); // uiHelperCoreYearCopy();
Codebase.helper('core-tooltip'); // uiHelperCoreTooltip();
Codebase.helper('core-popover'); // uiHelperCorePopover();
Codebase.helper('core-tab'); // uiHelperCoreTab();
Codebase.helper('core-appear'); // uiHelperCoreAppear();
Codebase.helper('core-appear-countTo'); // uiHelperCoreAppearCountTo();
Codebase.helper('core-slimscroll'); // uiHelperCoreSlimscroll();
Codebase.helper('core-page-loader'); // uiHelperCorePageLoader('hide');
Codebase.helper('core-ripple'); // uiHelperCoreRipple();
Class Reference
Codebase comes packed with many helpful CSS classes that will enable you to style your elements and build your pages any way you want. If you would like to have a look at all the available classes provided by Bootstrap, too, you can at the official Bootstrap Docs.
Let’s have a look at various CSS classes that might come in handy:
| Class | Description | ||||
|---|---|---|---|---|---|
|
Extra small devices Portrait phones (<576px) |
Small devices Landscape phones (≥576px - <768px) |
Medium devices Tablets (≥768px - <992px) |
Large devices Desktops (≥992px - <1200px) |
Extra large devices Desktops (≥1200px) |
|
Available options for * : inline inline-block block table table-cell flex inline-flex
|
|||||
.d-none .d-sm-* |
|||||
.d-none .d-md-* |
|||||
.d-none .d-lg-* |
|||||
.d-none .d-xl-* |
|||||
.d-none |
|||||
.d-sm-none |
|||||
.d-md-none |
|||||
.d-lg-none |
|||||
.d-xl-none |
|||||
| Text | |||||
.text-* |
Aligns the text (available options: left center right justify ). |
||||
.font-size-* |
Adjusts font size (available options: h1 h2 h3 h4 h5 h6 default xs sm md lg xl ). |
||||
.font-w* |
Adjusts font weight (available options: 300 400 600 700 ). |
||||
.h1 |
Adjusts font style to match with <h1> tag. |
||||
.h2 |
Adjusts font style to match with <h2> tag. |
||||
.h3 |
Adjusts font style to match with <h3> tag. |
||||
.h4 |
Adjusts font style to match with <h4> tag. |
||||
.h5 |
Adjusts font style to match with <h5> tag. |
||||
.h6 |
Adjusts font style to match with <h6> tag. |
||||
| Contextual Colors | |||||
.text-warning .bg-warning |
Sets the font color/background to an orange one. -light can be appended to base class for a light one. |
||||
.text-danger .bg-danger |
Sets the font color/background to a red one. -light can be appended to base class for a light one. |
||||
.text-info .bg-info |
Sets the font color/background to a blue one. -light can be appended to base class for a light one. |
||||
.text-success .bg-success |
Sets the font color/background to a green one. -light can be appended to base class for a light one. |
||||
.text-black .bg-black |
Sets the font color/background to black. | ||||
.text-white .bg-white |
Sets the font color/background to white. | ||||
.text-muted .bg-muted |
Sets the font color/background to a gray one. | ||||
.text-black-op |
Sets the font color to black with opacity. | ||||
.text-white-op |
Sets the font color to white with opacity. | ||||
.bg-black-op |
Sets the background color to black with 50% opacity. -5 -10 -25 -75 -90 can be appended to base class to adjust opacity percentage. |
||||
.bg-white-op |
Sets the background color to white with 50% opacity. -5 -10 -25 -75 -90 can be appended to base class to adjust opacity percentage. |
||||
Colors Themes Replace * with: default elegance pulse flat corporate earth |
|||||
.text-* |
Sets the font color to the main color of a specific theme. | ||||
.text-*-light |
Sets the font color to the main light color of a specific theme. | ||||
.text-*-lighter |
Sets the font color to the main lighter color of a specific theme. | ||||
.text-*-dark |
Sets the font color to the main dark color of a specific theme. | ||||
.text-*-darker |
Sets the font color to the main darker color of a specific theme. | ||||
.bg-* |
Sets the background color to the main color of a specific theme. | ||||
.bg-*-op |
Sets the background color to the main color with opacity of a specific theme. | ||||
.bg-*-light |
Sets the background color to the main light color of a specific theme. | ||||
.bg-*-lighter |
Sets the background color to the main lighter color of a specific theme. | ||||
.bg-*-dark |
Sets the background color to the main dark color of a specific theme. | ||||
.bg-*-dark-op |
Sets the background color to the main dark color with opacity of a specific theme. | ||||
.bg-*-darker |
Sets the background color to the main darker color of a specific theme. | ||||
.bg-gd-* |
Sets the background color to a gradient based on the main color of a specific theme. | ||||
.text-primary |
Sets the font color to the main color of the active theme. | ||||
.text-primary-light |
Sets the font color to the main light color of the active theme. | ||||
.text-primary-lighter |
Sets the font color to the main lighter color of the active theme. | ||||
.text-primary-dark |
Sets the font color to the main dark color of the active theme. | ||||
.text-primary-darker |
Sets the font color to the main darker color of the active theme. | ||||
.text-body-bg |
Sets the font color to the body background color of the active theme. | ||||
.text-body-bg-light |
Sets the font color to a lighter body background color of the active theme. | ||||
.text-body-bg-dark |
Sets the font color to a darker body background color of the active theme. | ||||
.text-body-color |
Sets the font color to the body color of the active theme. | ||||
.text-body-color-light |
Sets the font color to a lighter body color of the active theme. | ||||
.text-body-color-dark |
Sets the font color to a darker body color of the active theme. | ||||
.bg-primary |
Sets the background color to the main color of the active theme. | ||||
.bg-primary-op |
Sets the background color to the main color with opacity of the active theme. | ||||
.bg-primary-light |
Sets the background color to the main light color of the active theme. | ||||
.bg-primary-lighter |
Sets the background color to the main lighter color of the active theme. | ||||
.bg-primary-dark |
Sets the background color to the main dark color of the active theme. | ||||
.bg-primary-dark-op |
Sets the background color to the main dark color with opacity of the active theme. | ||||
.bg-primary-darker |
Sets the background color to the main darker color of the active theme. | ||||
.bg-gd-primary |
Sets the background color to a gradient based on the main color of the active theme. | ||||
.bg-body |
Sets the background color to the body color of the active theme. | ||||
.bg-body-light |
Sets the background color to a lighter body color of the active theme. | ||||
.bg-body-dark |
Sets the background color to a darker body color of the active theme. | ||||
Space Helpers Replace * with: 5 10 15 20 30 50 100 150 200 300 |
|||||
.mx-auto |
Centers a block element with a specific width inside its container. | ||||
.m-* |
Sets element’s margin to specific pixels. | ||||
.mt-* |
Sets element’s top margin to specific pixels. | ||||
.mr-* |
Sets element’s right margin to specific pixels. | ||||
.mb-* |
Sets element’s bottom margin to specific pixels. | ||||
.ml-* |
Sets element’s left margin to specific pixels. | ||||
.mx-* |
Sets element’s left & right margin to specific pixels. | ||||
.my-* |
Sets element’s top & bottom margin to specific pixels. | ||||
.p-* |
Sets element’s padding to specific pixels. | ||||
.pt-* |
Sets element’s top padding to specific pixels. | ||||
.pr-* |
Sets element’s right padding to specific pixels. | ||||
.pb-* |
Sets element’s bottom padding to specific pixels. | ||||
.pl-* |
Sets element’s left padding to specific pixels. | ||||
.px-* |
Sets element’s left & right padding to specific pixels. | ||||
.py-* |
Sets element’s top & bottom padding to specific pixels. | ||||
| Various Helpers | |||||
.float-left |
Floats the element left. | ||||
.float-right |
Floats the element right. | ||||
.clearfix |
Clears all floats in the element. | ||||
.border |
Adds a light border to the element (append to base class -t -r -b and -l for a top, right, bottom and left border respectively). |
||||
.border-white-op |
Adds a white border (with opacity) to the element (append to base class -t -r -b and -l for a top, right, bottom and left border respectively). |
||||
.border-black-op |
Adds a black border (with opacity) to the element (append to base class -t -r -b and -l for a top, right, bottom and left border respectively). |
||||
.border-2x |
Sets the border width to 2 pixels. | ||||
.border-3x |
Sets the border width to 3 pixels. | ||||
.min-width-* |
Sets element’s minimum width to specific pixels (append to base class 20 30 50 75 100 125 150 175 200 300 320 ) |
||||
.min-height-* |
Sets element’s minimum height to specific pixels (append to base class 20 30 50 75 100 125 150 175 200 300 400 500 ) |
||||
.overflow-hidden |
Sets element’s overflow to hidden. | ||||
.opacity-0 |
Sets element’s opacity to 0. | ||||
.opacity-1 |
Sets element’s opacity to 1. | ||||
.invisible |
Sets element’s visibility to hidden. | ||||
.visible-lt-ie10 |
Hides the element on IE browsers older than IE10. | ||||
.d-print-none |
Hides the element from printing. |
Quick Tips
Prefixes for older browsers
You can update the following values in Gulpfile.js
accordingly if you would like the autoprexifer to add style prefixes for older browser versions (when using the Gulp tasks). By default, we use the same as Bootstrap 4 does.
// Autoprefixer options
var autoprefixerOptions = {
browsers: [
'last 1 major version',
'>= 1%',
'Chrome >= 45',
'Firefox >= 38',
'Edge >= 12',
'Explorer >= 10',
'iOS >= 9',
'Safari >= 9',
'Android >= 4.4',
'Opera >= 30'
]
};
Retina Support
The UI will look crispy clear on retina screens and if you would like your images to look great, too, then you will have to use the srcset
attribute of the <img>
element. For example, if you have a regular image img/my_image.jpg
and its retina version<EMAIL_ADDRESS>you will have to use the following markup:
<img src="img/my_image.jpg"<EMAIL_ADDRESS>2x" alt="Image Description">
The browser will auto select the best version and load it accordingly. Older browsers will ignore the srcset
attribute and will load the regular image as usual.
Font Awesome 5.x Support
Codebase provides support for the latest version of Font Awesome Icon pack out of the box. If you would like to enable the new icons, just uncomment @import 'vendor/font-awesome5';
and comment @import 'vendor/font-awesome';
lines in scss/main.scss
. After compiling to CSS, you will be able to use them. Be sure to also check out Font Awesome Migration Guide for any icon name changes you might have to apply in your own pages.
Border-Box
The Bootstrap framework makes use of the border-box CSS model. That means that if you want to alter the width of an element with CSS, you can do it without worrying about the padding or the border size of that element (they will be adjusted to the width you will set).
Focus Styles
Consider removing .no-focus
class form the <html>
tag. This way you can restore the default browser focus outline style. Even though custom focus styles have been specified in the template, it is a good practice to keep the focus outline, too, for accessibility purposes.
IE9 and older IE versions
In these browser versions main content hides and a message is shown that the browser is not supported. If you don't like it, this feature can be disabled by removing the class .lt-ie10-msg
from the <html>
tag (in the conditional IE comment). If you are using the PHP version, you can find it in inc/_global/views/head_start.php
file.
Demo Forms
Please remember to remove onsubmit="return false;"
from <form>
tags if you are using a form from the example pages. It is just added to prevent forms from submitting in case you click on a submit button while previewing the pages.
Favicons
If you would like to auto create your favicons from your image/logo, you can use the free service at http://realfavicongenerator.net
Google Maps API key
Google Maps API requires an API key to work correctly! To obtain your own key and be able to use them, please head over at Google and follow the instructions. You will be able to load the Google Maps API by using the following code with your own key: <script src="https://maps.googleapis.com/maps/api/js?key=your-api-key"></script>
. Afterwards, you will be able to use the GMaps.js plugin and init your maps. If you are using the PHP version, you can simply add your API Key in the inc/_global/config.php
file.
User Avatars
All avatars used in the online demo are not available for commercial use, so we couldn't include them in the final package (they can only be used for demonstration). If you would like them for mockup purposes, you can either replace the images in assets/img/avatars/
folder with avatars from uifaces.com or you can contact us to send you the ones we've used in the online demo (also from uifaces.com). Have in mind that they can only be used for demo purposes (mockup or online).
User Names
All user names used in the template are fictional and only used for demonstration. They were randomly generated at uinames.com, so if you are in need of random names for your mockups, it is a great choice.
Credits
We’ve used the following resources as listed. Special thanks to all the authors for their hard work!
| Frameworks |
|---|
| Bootstrap |
| Animate.css |
| Photos |
|---|
| MyPhotoPack |
| Unsplash |
| Videos |
|---|
| Pexels |
| Icons |
|---|
| Font Awesome |
| Font Awesome 5 |
| Simple Line Icons |
| Misc |
|---|
| uifaces.com (avatars used on online demo for template demonstration purposes only) |
| uinames.com (randomly generated names used for template demonstration purposes only) |
Thank you!
Once again, thank you so much for purchasing Codebase. It wouldn’t be a reality without your continued support, so we want you to know that we appreciate it very much. We wish you all the best with your upcoming projects and goals in life! Feel free to check out more projects on Themeforest or get in touch if you have any further questions.
Have a great day and happy coding!


{{ foo.text}}
{% load static %}
{% if request.user == p.user %} {% endif %}
| First Name | : {{ p.user.first_name }} |
| Last Name | : {{p.user.last_name}} |
| Website | : {{p.website}} |
| Gender | : {{p.gender }} |
| Country | : {{ p.country.name }} |
| : {{ p.user.email}} | |
| Joined | : {{ p.user.date_joined }} |
| Elementary School | : | Year Graduated | : |
| High School | : | Year Graduated | : |
| Under Graduate | : | Year Graduated | : |
| Post Graduate | : | Year Graduated | : |
| Master of Philosophy (MPhil) | : | Year Graduated | : |
| Doctor of Philosophy (PhD) | : | Year Graduated | : |
| Bachelor of Engineering (B.Eng) Bachelor of Technology (B.Tech) |
: | Year Graduated | : |
| Master of Engineering (M.Eng) Master of Technology (M.Tech) |
: | Year Graduated | : |
| Date | : |
| Position | : |
| Principle Activites | : |
| Employer | : |
| Type of Activites | : |
| Date | : |
| Position | : |
| Principle Activites | : |
| Employer | : |
| Type of Activites | : |
| Date | : |
| Position | : |
| Principle Activites | : |
| Employer | : |
| Type of Activites | : |
| Office Telephone Number | : |
| Office Mobile Phone | : |
| Official Email Address | : |
| Personal Mobile Phone | : |
| Personal Email Address | : |
| Home Phone | : |
| Facebook Account | : |
| Twitter Account | : |
| Skype Account | : |
| LinkedIn Account | : |
{{ foo.created_date }}
{{ foo.text}}
| Present Residential Address | |
|---|---|
| Line 1 | : |
| Line 2 | : |
| City | : |
| State | : |
| Country | : |
| Pin code | : |
| Permanent Residential Address | |
|---|---|
| Plot No / Door No / Part No / Block No | : |
| Street Name | : |
| City | : |
| State | : |
| Country | : |
| Pin code | : |


元数据定义的概念¶
元数据定义（Metadata Definition）服务在OpenStack的Juno版本中加入到Glance。 The metadata definition service was added to Glance in the Juno release of OpenStack.
It provides a common API for vendors, admins, services, and users to meaningfully define available key / value pair metadata that can be used on different types of resources (images, artifacts, volumes, flavors, aggregates, etc). A definition includes a property’s key, its description, its constraints, and the resource types to which it can be associated. 它提供了
This catalog does not store the values for specific instance properties.
For example, a definition of a virtual CPU topology property for the number of cores will include the base key to use (for example, cpu_cores), a description, and value constraints like requiring it to be an integer. So, a user, potentially through Horizon, would be able to search this catalog to list the available properties they can add to a flavor or image. They will see the virtual CPU topology property in the list and know that it must be an integer.
When the user adds the property its key and value will be stored in the service that owns that resource (for example, Nova for flavors and in Glance for images). The catalog also includes any additional prefix required when the property is applied to different types of resources, such as “hw_” for images and “hw:” for flavors. So, on an image, the user would know to set the property as “hw_cpu_cores=1”.
术语¶
背景¶
The term metadata can become very overloaded and confusing. This catalog is about the additional metadata that is passed as arbitrary key / value pairs or tags across various artifacts and OpenStack services.
Below are a few examples of the various terms used for metadata across OpenStack services today:
| Nova | Cinder | Glance |
|---|---|---|
|
|
|
目录（Catalog）概念¶
The below figure illustrates the concept terminology used in the metadata definitions catalog:
A namespace is associated with 0 to many resource types, making it visible to
the API / UI for applying to that type of resource.
目录术语¶
The following terminology is used within the metadata definition catalog.
Namespaces
Metadata definitions are contained in namespaces.
- Specify the access controls (CRUD) for everything defined in it. Allows for admin only, different projects, or the entire cloud to define and use the definitions in the namespace
- Associates the contained definitions to different types of resources
Properties
A property describes a single property and its primitive constraints. Each property can ONLY be a primitive type:
- string, integer, number, boolean, array
Each primitive type is described using simple JSON schema notation. This means NO nested objects and no definition referencing.
Objects
An object describes a group of one to many properties and their primitive constraints. Each property in the group can ONLY be a primitive type:
- string, integer, number, boolean, array
Each primitive type is described using simple JSON schema notation. This means NO nested objects.
The object may optionally define required properties under the semantic understanding that a user who uses the object should provide all required properties.
Resource Type Association
Resource type association specifies the relationship between resource types and the namespaces that are applicable to them. This information can be used to drive UI and CLI views. For example, the same namespace of objects, properties, and tags may be used for images, snapshots, volumes, and flavors. Or a namespace may only apply to images.
Resource types should be aligned with Heat resource types whenever possible. http://docs.openstack.org/developer/heat/template_guide/openstack.html
It is important to note that the same base property key can require different prefixes depending on the target resource type. The API provides a way to retrieve the correct property based on the target resource type.
Below are a few examples:
The desired virtual CPU topology can be set on both images and flavors
via metadata. The keys have different prefixes on images than on flavors.
On flavors keys are prefixed with hw:
, but on images the keys are prefixed
with hw_
.
For more: https://github.com/openstack/nova-specs/blob/master/specs/juno/virt-driver-vcpu-topology.rst
Another example is the AggregateInstanceExtraSpecsFilter and scoped properties (e.g. properties with something:something=value). For scoped / namespaced properties, the AggregateInstanceExtraSpecsFilter requires a prefix of “aggregate_instance_extra_specs:” to be used on flavors but not on the aggregate itself. Otherwise, the filter will not evaluate the property during scheduling.
So, on a host aggregate, you may see:
companyx:fastio=true
But then when used on the flavor, the AggregateInstanceExtraSpecsFilter needs:
aggregate_instance_extra_specs:companyx:fastio=true
In some cases, there may be multiple different filters that may use the same property with different prefixes. In this case, the correct prefix needs to be set based on which filter is enabled.