text:
Member Since: 09/27/07Send NCnurse a Message Give NCnurse a Gift Add NCnurse as a Friend
postive Motivated Dedicated Caring Wonderful Friend Attractive personality friendly respectful kind
You can reach this milestone by accruing more than 50 reputation points in the last 7 days
You can reach this milestone by completing the quiz Who's Your Inner Nurse?
You can reach this milestone by completing the quiz What's Your Perfect Nursing Career Fit?
You can reach this milestone by starting a group that is one of the top 100 most active groups.
You can reach this milestone by inviting at least 5 friends who join the site.
You reached this milestone if you were one of the first 1,000 members to gain a star.
You can reach this milestone by becoming a site moderator
You can reach this milestone by being one of the top 100 users on the Reputation Leaderboard.
You can complete this milestone by becoming verified
NCnurse: Profile Photos
NCnurse: Friends
- crzegrl
- Marieke
- snowbaby2m
- squirmals
- sthomp125
- Account Removed
NCnurse: Groups
- Everything I Didnt Learn in Nursing School I Learned from Sex and the City
- CNAs
- Determined to Be a Nurse
- Should CNAS get better pay
- Not a nurse yet
- Who has good recipes
- Nurses in Stitches
- Greys Anatomy LoveHate Relationship
- Nursing Students LPN
- Dating a Nurse Ten Reasonsor More
- ultimate gifts
- LPNs ARE NURSES TOO
- Transitional Nursing eg LPN-RN
- The Newbie Nurses
- No Dumb Questions
- North Carolina
- FiRST STEP TO ENROLL IN NURSING PROGRAM
- CNAs are wanna be nurses
- Success Seekers
- Arizona Nurses
- California Nurses
- Rescued Greyhound Racers and other rescued pets
- The NURSES input on healthcare reform
- McCain and Palin
- medXcentral on NursingLink
- Addicted to Health Discovery Channel
- Books and Movies
- The Numerology of Names
- the ethical issues we have all solved by watching House
- Who Inspires You
- hello neonatal nurse
- Nurses League
- cards for our Soldiers
- Student Nurses
- LPN LVN Future Current
- Your Nursing Stories
- Nursing School Survival Tips
- Online study group
- Student Nurses Unite
- Support NursingLink
- Nurses who love music
- My Insane Day
- Must love Dogs
- Future Nursing Students
- Horses Of Courses
- dementia care
- Nursinglink members on Facebook
NCnurse: Quiz Results
Would You Pass the NCLEX? Part III taken almost 7 years ago
51-75% correct
Would You Pass the NCLEX? Part II taken almost 7 years ago
You Need a Quick Refresher - 51-75% correct
Could You Be a Pediatric Nurse? taken about 7 years ago
Not for You
What's Your Money IQ? taken over 7 years ago
Fine with Finances
NCnurse: Gifts
Having a rough day? Let's hug!
candice Reynolds
- Location:
- Candor, NC
- Gender:
- Female
- Service:
- CNA (Certified Nursing Assistant)
- Status:
- Nursing Student
- Relationship Status:
- Married
NCnurse: Activity
Nursinglink members on Facebook
NCnurse: References
- Hobbies:
- Cooking, Crafting, Gardening, Knitting/crochet, Reading, Sleeping,
- Favorite Movies:
- The NoteBook, Dirty Dancing, all the fast and furious etc
- Favorite TV Shows:
- E.R., Greys Anatomy, House, Mystery diagnosis, CSI: NY, CSI: Miami, and more
- Favorite Music:
- Country
Comment Wall
Add NCnurse as a friend to write on their Comment Wall.
over 7 years ago
5258 comments
over 7 years ago
800 comments
This is too beautiful not to share....
Subject: A Life Story
A Story to live by
There was a blind girl who hated herself because she was blind. She hated everyone, except her loving boyfriend. He was always
there for her. She told her boyfriend, 'If I could only see
the world, I will marry you.'
One day,
someone donated a pair of eyes to her. When the bandages
came off, she was able to see everything, including her
He asked
her,'Now that you can see the world, will you marry me?' The
girl looked at her boyfriend and saw that he was blind. The
sight of his closed eyelids shocked her. She hadn't expected
that. The thought of looking at them the rest of her life
led her to refuse to marry him.
boyfriend left in tears and days later wrote a note to her
saying: 'Take good care of your eyes, my dear, for before
they were yours, they were mine.'
This is
how the human brain often works when our status changes.
Only a very few remember what life was like before, and who
was always by their side in the most painful situations.
Life Is a
before you say an unkind word - Think of someone who can't
you complain about the taste of your food - Think of someone
who has nothing to eat.
you complain about your husband or wife - Think of someone
who's crying out to GOD for a companion.
before you complain about life - Think of someone who died
too early on this earth.
you complain about your children - Think of someone who
desires children but they're barren.
you argue about your dirty house someone didn't clean or
sweep - Think of the people who are living in the streets.
whining about the distance you drive Think of someone who
walks the same distance with their feet.
And when
you are tired and complain about your job - Think of the
unemployed, the disabled, and those who wish they had your
before you think of pointing the finger or condemning
another - Remember that not one of us is without sin.
And when
depressing thoughts seem to get you down - Put a smile on
your face and think: you're alive and still
Account Removed
over 7 years ago
Account Removed
over 7 years ago
Hi Candice,
ThAnKs foR aCcEpTiNg mY iNviTe!TaKe caRe :)
Account Removed
over 7 years ago
Account Removed
over 7 years ago
thank you for accepting my invite ;-)


text:
Earth Origins Andria Wedge Sandal
Sorry, this item is sold out!
Looks like you've got more shoe shopping to do - have fun!
Looks like you've got more shoe shopping to do - have fun!
Item # 269524
Experience the comfort of the Andria Wedge Sandal. Whether walking around town or wearing on the weekends, you'll be staying stylish and comfortable all the while!
- Leather upper
- Cut-out detailing
- Comfort cushioned insole
- ¾" platform, 2" molded wedge heel
- Synthetic sole
- Imported
By: Jonora
Location: New York
July 11, 2013
Great Shoe
"Comfortable shoe. Good for long days walking or standing. And perfect for persons with high arches. The inner sole compensates for it.Careful if you have flat feet the inner sole may be too much for you."
By: stellay
Location: North Hollywood, CA
July 05, 2013
Andria Wedge
"It is the most comfortable shoe I've ever worn. I love it!!!!!"
By: tjsonny75
Location: michigan
June 17, 2013
comfortable, cute, and affordable
"I was looking for brown colored sandals, and after reading a few reviews, I purchased this one. It is a lighter brown, but so comfortable! I love this sandal, I am going to purchase another in the black!"
By: Hidalgo
Location: PA
June 08, 2013
Great Sandal
"These are extremely comfortable, excellent arch support and insole cradles the foot very nicely. How ever the color swatch says white, it is actually sand white, as the picture shows. ,Wanted pure white, but I.am keeping them because they are so comfortable."
Click anywhere to close this.

subset: commoncrawl


text:
Part 3 - Knife In The Dark
Continued from Part 2: The Ruins.
As if in answer to Cuthred's question, Emeric and Cuthred could hear a commotion from the other side of the opened door. At first the sound was faint, drowned out by the incessant thrum of rain and the booming of thunder. But as it grew nearer, the two sentinels were aware of voices. They were harsh and loud enough to compete with the din of the weather, but the heavy oaken doors made them all but indistinguishable.
Boom! Boom! Boom! Came the knock on the door. The sound resonated through the tower, and wafted to the ears of the explorers on the ancient stair.


text:
What sets the Nashville area apart as one of the strongest, most vibrant economies in the U.S.? Our distinct advantages include an ideal geographic location in the heart of the U.S. population base, a skilled workforce fueled by 100,000 college students in the region, operating costs and cost of living almost 10 percentage points below the U.S. average, and a quality of life whose tone is set by being one of the top centers in the world for the creative class.
The Nashville community launched WorkIT Nashville, a collaborative marketing campaign to recruit tech workers to Middle Tennessee. At the center of the campaign is www.WorkITNashville.com, a valuable resource for job seekers and their families interested in learning more about life in Middle Tennessee.
WorkIT Nashville Playbook (PDF)
Get involved


text:
Sweeten the hot cocoa, coffee or tea of someone special with a personalized photo mug. There are a variety of photo coffee cup sizes and styles to choose from, so you're sure to find just the right one that suits the person you're making it for.
Along with your photos, you can also customize your picture coffee cup with a design, border color or title. And on the magic mugs photos appear when you fill it with a hot drink!
Warm your best friend's heart with an 11 oz. classic picture coffee mug for Christmas featuring a holiday design. Give a new dad a 13 oz. collage commuter picture mug with a dozen photos of his new baby that he can enjoy on the way to work. Create a tall latte personalized coffee mug for your recent grad to brighten their late night study sessions at college. And what better way toast your wedding than make custom photo frosted steins for your groomsmen.
Add favorite photos to a custom coffee mug, commuter mug and even a frosted stein and give a photo gift that's not only fabulous but also functional!


text:
Sismic, Pascal Mieville is a valisaner swiss photgrapher. he had the genius to catch the wild annimal inside the suit. if you need these pictures go to www.sismic.ch
There were a race of igsa world championship. Pascal and jean yves went more up the road to have a private photo shooting. The grey suit was fresh new just finished to be assembled in korea.
BOOK JEAN YVES FOR YOUR IMAGE info @ buggy-rollin.com


text:
Long days on the jobsite call for apparel as tough and long-wearing as our suede work glove.
Constructed of durable, 100% cotton duck fabric, it features a suede cowhide palm and palm patch plus cowhide knuckle protection.
For easy on/off convenience, it offers a safety cuff and side vent.
A properly fitted garment not only keeps you looking professional, but also keeps you feeling comfortable for your entire work day. See below for advice on taking accurate measurements.
All measurements in inches.
Men's sizes expressed as "waist x inseam" (e.g. 34x36). See below for measuring advice.
Women's sizes expressed either as "waist x inseam" (28x30) or "ready-to-wear size x inseam" (10x30).
The following guidelines are important in getting the right fit:


text:
Carter's Perry Girls Infant & Toddler Casual Shoe
Sorry, this item is sold out!
Looks like you've got more shoe shopping to do - have fun!
Looks like you've got more shoe shopping to do - have fun!
Item # 266708
She will look simply adorable and super stylish in these darling little Perry slip-on shoes from Carter's.
- Canvas upper
- Slip-on style with elastic tongue for easy on/off and secure fit
- Synthetic sole
- Imported
- View more Carter's
- Online Exclusive!
Tell us what you think!
Everyone has an opinion. Here's your chance to share yours! Be the first to write a review of this product and help your fellow shoppers pick the best of the best.


text:
Fashion statements are red this month — and today's Valentine's Day mantra might be "buy something red." Take a look at the red dresses rocking the runway during The Heart Truth Red Dress Collection Fashion Show 2013 right here. The New York Daily News covers it in style with 27 fabulous fashion ideas modeled by everyone from Gold-medal Olympic gymnast Gabby Douglas — pictured above — to Kelly Osbourne.
Today is the perfect day to buy a little red dress. Here's a link to the terrific selection at Macy's — for teens to women in styles for career, casual and glamorous evening wear.
Here's a link to JCPenney's red dresses — one adorable peplum number from Bisou Bisou is only $35 — how can we choose just one?
Happy Valentine's Day.
Pam Parker is the editor of Lake Erie LifeStyle, Her Times and House to Home at the Erie Times-News in Erie, Pa. She is the mom of three, stepmom to three and step-grandmom to one.


text:
What college or professional athlete inspires you and why?
My favorite athlete is Michael Jordan. He inspires me because he set new standards for athletes. He is the athlete every basketball player strives to be like. If it doesn't have to be basketball related I have looked up to Cat Osterman forever. I'm pretty sure I watched every game of her college career for the Longhorns. She was the reason I practiced pitching during the off season.
What is one of your more memorable moments as an athlete?
My most memorable moment is probably when we beat Eldorado in the championship game of the Harrisburg Tournament this year. I was having a bad game on defense until the last shot they had to win the game. I tipped it just enough to make it have no chance of going in and it was the best feeling an athlete can have.
What are your plans after graduating from high school?
I plan on going to the University of Tennessee at Martin to play softball. I hope to some day become a chiropractor.
My favorites
Pro athlete
Cat Osterman
The Blind Side
tv show
Channing Tatum
Anything Beyoncé sings
Anatomy (S/O to Mrs. Mondino)
Location, ST | website.com


text:
South Yorkshire
Askham Bryan College
The Conference Centre, Askham Bryan College, Askham Bryan, York, YO23 3FR
01937 830 354
All ages
Join us on Friday 25th January at Askham Bryan College with Brian Turner for our Big Yorkshire Breakfast celebrating wonderful Yorkshire produce and much more …
Deliciouslyorkshire in partnership with Farmhouse Breakfast Week, Yorkshire Bank and Askham Bryan College are are running a big breakfast as part of National Farmhouse Breakfast Week running from 20-26th January 2013.
Join us on Friday 25th January with Brian Turner for:
Breakfast using all local produce – Continental, English, Fish (Kedgeree, smoked salmon and scrambled eggs), Asian, cereal / granola
Cook Off – Brian Turner on stage using local ingredients with students and the DY champions
Life of a celebrity Chef and Restaurateur – Q`s and A`s with Brian Turner
Meet The Producer – network with and order from the best breakfast product producers.
Times and prices are subject to change. Contact venue before setting out.
Please login first.


text:
Playback from Cloud, IP, and Stream
Access virtually limitless video sources and content applications as video sources, with the ability to connect to Cloud-based media, IP cameras and streaming servers through network inputs.
Still & Title Buffers (10)
Access up to 15 additional media sources – instantly – during live production. View and manage buffer content directly inside the integrated multiviewer, including animation preview (in some models) and, incredibly live title editing.
Animation Buffers (5)
Dedicate some of your new buffers for up to 5 more full-motion sources for anything animated that you want instantly available, like LiveSet backgrounds, station logos, animated graphics elements--and set them to loop, run once, move around, slow down, position anywhere, scale, and key.
De-Fielded Grabs
Stills from any input (even buffers) can be captured in a pristine, de-fielded frame for immediate use, whether in the show or published instantly.
Send Recording to Playlist
The Add to Playlist record panel command enables instant turnaround of in-show content, making recorded clips available for immediate playback from any DDR playlist.
Send Grabs to Buffer
Make the scene you've just produced available as a newly captured image source in your show. Grab and send the still image directly to a buffer and have it at your beck and call.
Playlist Editing During Playback
Easily accommodate revisions to the show rundown or new content without missing a beat by making changes and updates to media player playlists during showtime. Every preset bin can be accessed and reorganized on the fly, even playing back content from one playlist while editing on another.


text:
Psalm 54
David pleads for salvation and promises to serve God.
To the chief Musician on Neginoth, Maschil, A Psalm of David, when the Ziphims came and said to Saul, Doth not David hide himself with us?
1 Save me, O God, by thy name, and judge me by thy strength.
2 Hear my prayer, O God; give ear to the words of my mouth.
3 For
4 Behold,
5 He shall reward evil unto mine enemies: cut them off in thy truth.
6 I will freely sacrifice unto thee: I will praise thy name, O Lord; for it is good.
7 For he hath


text:
- Home
Bandaging Supplies
Compression Garments
Wound Care
- Skincare
- Kinesiology-Sports Tape
- Laser Therapy
- Educational
You have no items to compare.
Welcome to Bandages Plus!
You have no items in your shopping cart.
While providing maximum containment, the Juzo Dynamic Thigh High Compression Stockings are extremely soft on the inside and durable on the outside


text:
Ashlea O'Mara >> See More Amateurs
Galleries in Full HD!
Galleries in Full HD!
Ashlea's career ambition is to become a successful glamour model with pictorials published in at least one magazine in every country! Until she achieves her goal, she spends her time socializing with friends, dancing, playing golf and shopping. To find out what else occupi...
Get this complete pictorial in stunning resolution & HD video! View Full Gallery!


text:
By Brendan Conway
Here's the chart highlighting what's gone missing from stocks' remarkable rally — a robust risk appetite.
Niels C. Jensen of Absolute Return Partners, who published the chart, has this to say about it in his December investor letter:
Investors have not yet fully embraced this rally. They have invested in a 'cowardly' fashion, focusing on defensive, low beta stocks rather than more aggressive, often cyclical, high beta stocks (chart 11). If history provides any guidance, there will be a shift to more cyclical, higher beta names, before this rally is well and truly over.
It's in keeping with the trend we've noted on this blog: There's lots of love among investors for low-risk stock investing, and a serious distrust for fast-money investments.
That's a good thing. But the trend has gotten to the point that low-volatility stocks are trading at richer price-earnings ratios than the S&P 500 of late, which is a switch from historical experience.
The trend shows up in the numbers behind PowerShares S&P 500 Low Volatility Portfolio (SPLV) and iShares MSCI USA Minimum Volatility ETF (USMV), two popular ETFs built for the more stable sort of stock investing.
Meanwhile, funds built for the opposite type of investing show P/Es about in line or below the broader index. That's true for PowerShares S&P 500 High Beta Portfolio (SPHB), which trades for 15.7 times next year's earnings, according to Morningstar — compare it to 16.55 times for SPDR S&P 500 ETF (SPY).
H/T to Mebane Faber, who emailed Jensen's letter over the weekend.


text:
We're Sorry,
The Salammbo Art Nouveau Sculpture by Breton you were searching for is/are not currently on our website.
Below are similar pieces that might interest you.
We invite you to browse our website for many other treasures.
If we can help you locate something in particular, please do not hesitate to contact us.
We will be more than happy to assist you.


text:
The Ely District administers 234 of the 240 livestock grazing allotments located within district lines. Other BLM districts in Nevada administer five allotments, and the BLM St. George Field Office, in St. George, Utah, administers one allotment. Today, 139 livestock permittees hold term permits authorizing grazing on public lands administered by the Ely District. Ten of the permittees are sheep operators and 129 are cattle operators.
The goal of the Ely District's rangeland management program is to create sustainable, working landscapes that are economically sound and ecologically healthy. Range staff is responsible for issuing grazing permits, billing for grazing use on public lands, assessing and mitigating the impacts of livestock grazing on land health, overseeing the installation and maintenance of range improvements and monitoring livestock use to insure compliance with grazing rules and regulations. Range is part of the renewable resources staff which includes other program areas such as wild horses and burros, wildlife, riparian and noxious weeds. The range program also provides support to other programs in the office, such as nonrenewable resources and fire.
For additional information about the grazing program, including allotment information, authorized use by allotment, and permit-schedule and operator information, go to the BLM Rangeland Administration System (RAS) at www.blm.gov/ras and, in the left column, click 'Run Reports.'
Additional information is also available on the BLM Nevada State Office website at www.blm.gov/nv/st/en/prog/grazing.html.
Range Improvement Projects
Standards and Guidelines
Caliente Field Office
Egan Field Office
Schell Field Office


text:
For Immediate ReleaseFriday, September 28, 2001
WASHINGTON, D.C. - Attorney General John Ashcroft and the Department of Justice Office of Community Oriented Policing Services (COPS) today announced $800,000 in grant funding for a Mental Health and Community Safety Initiative. These grants are part of a $3 million federal partnership to provide Native American and Alaskan Native communities with support for programs that encourage coordinated efforts between law enforcement, mental health, substance abuse, social service, and public safety professionals. The intent of this program is to create collaborative partnerships that address crime problems associated with substance abuse, youth and family violence, and delinquency and truancy.
Today's grants were awarded to the Mount Sanford Tribal Consortium (AK), Ft Peck Tribes (MT), Isleta Police Department (NM), Pyramid Lake Paiute Tribe (NV), Comanche Indian Tribe (OK), Kaw Nation of Oklahoma (OK), and the Lummi Indian Business Council (WA) to improve safety and the quality of life in native communities. The grants awarded by COPS will cover salaries and benefits for new community or school resource officers and funding for equipment and training.
"COPS is proud to provide support to Tribal Communities to ensure that they have the resources needed to meet their unique public safety needs," said Carl R. Peed, Director of the COPS Office. "This funding is critical to the continued development of the law enforcement and public safety infrastructure in Native communities."
Today's awards were made through the Tribal Mental Health Program, which is a coordinated federal initiative of the Departments of Justice, Health and Human Services, Education, and Interior.


text:
By KEN ENGLISHGreen River
To think that computers raising political money for candidates will help the poor to vote is a myth.
It's the same as dinners at $1,000 for political donations, are given to all corporate workers to attend.
Help the poor to vote by doing away with computers.


text:
Meital :: Pop Music's Newest Star Is a Gay Boy at Heart
I guess it may be great when you are so artistically talented that you can have not one, not two, but three careers.
Well, that is the case with Meital Dohan, the multi-talented Israeli performer who has been called "a Renaissance woman of the type rarely seen these days" by Interview Magazine.
In Israel her film work as an actress garnered her two Israeli Oscar nominations for her performances in "God's Sandbox" and "Giraffes." For her stage work she received the Israeli Tony for Most Promising New Actress for her work with the renowned Cameri Theater.
On this side of the Atlantic, she's had a recurring role on Showtime's "Weeds" and SonyPictures web comedy "Woke Up Dead." She also co-starred in the indie "Monogamy," co-starring Chris Messina and Rashida Jones, that won the Best Narrative Feature at the Tribeca Film Festival and received rave reviews. Off-Broadway she starred in British playwright Anthony Neilson's controversial play "Stitching." She is also the author numerous plays and the book "Love and Other Bad Habits."
She's also a recording artist, simply known as Meital. Her second release in the fall of 2012 "On Ya," featuring Sean Kingston, definitely proves that Meital is in the music game to stay. With both music videos being huge hits on YouTube, Dohan has put her experience in front of the camera as an acclaimed actress in film and television to good use, and really does make love to the camera.
Claiming to be just a big 'ol gay boy inside, Meital seems to know just what her gay following wants to see in their diva pop stars.
I had an opportunity to speak with Meital after completing a mini gay club circuit tour in America, and our chat revealed how she has a psychic to thank for her music career, why her music videos are so gay friendly, the plans for her upcoming album "I'm In Hate With Love," and how she plans to keep doing all that she does in the name of art.
Why music?
BeBe: As I have spent some time looking into your repertoire of works, it's been very interesting for me to find out that you are an awarded actress with an extensive and impressive body of work. Your acting, of course, is where we here in the States were introduced to you with your role on 'Weeds' on Showtime. You are also an author and a playwright. So, what was the impetus that actually occurred to make you pursue music?
Meital: It's kind of a silly, funny story where I was going to do 'Dancing With the Stars' in Israel, and a spiritual guide met me as I was doing the show, and she said 'okay it's time right now to go back to America and pursue your music career.'
BeBe: Oh, Wow!
Meital: Yeah, I thought she was crazy, but I did it anyway (laughing).
Medium told her
BeBe: So, it was a medium who told you needed to be doing music?
Meital: Yeah, a spiritual guide. She doesn't call herself medium. She told me this what I should be doing because I had been working on it for a few years. You know, I took it kind of half seriously and half not. But I said at the very least I can make three phone calls.
One of the calls was Che Pope, who is a producer who works with Dr. Dre, Nelly Nell, and now he works with Kanye West. He was the third person we called, and we really kind of clicked, and he wanted to do an album with me. So, that's how it all started, and it pretty much started within 3 weeks after she told me.
BeBe: Well, has she call you back since wanting a percentage of your success? (both laugh).
Meital: She hasn't called asking for a percentage, but I call her on a regular basis.
Viral on YouTube
BeBe: Now, your debut single 'Yummy Boyz' (produced by Rami Afuni of LMFAO) went totally viral. The video became infectious on YouTube immediately. Within a month, you were over 1 million views of the video. Was that something you were expecting to happen after making the video, or just some thing you were hoping would happen?
Meital: I was pleased and surprised. I was pleased with their (viewing audience) reaction. I didn't know how they were going to react to my making the transition from acting to singing, especially in my home country. But, I was pleasantly surprised.
BeBe: It's always nice to have things like that happen particularly when you put so much hard work into what you're doing. I know how dedicated you are to your theater and acting. The body of your work and the accolades you have received definitely speak to that. So, I can only assume that you put that much work and effort into your music.
Meital: Definitely.
Gay guy inside
BeBe: I have interviewed many recording artists, and when I ask about the gay community following they usually respond that the gay demographic was something that was incidental. But, when I look at the stuff you're doing in your videos with the hot men, and you being a wonderful hot sexual diva with the stuff that all gay men love to see in women, I have to ask if marketing to the gay community was "intentional" on your team's behalf?
Meital: Yeah! You know it's funny because I've been working with FlyLife in New York where their marketing in the gay community is very powerful. Now my first single was called 'Yummy Boyz,' and I didn't realize that yummy boys was a pretty gay name until I realized there is a gay guy inside of me. So, I think in a way I'm more gay than any other gay guy. It's not even intentional. It's just like I'm very gay. I have the mentality of a gay guy.
BeBe: Well it's definitely working, and you have the attention of the gay community. That's for sure. Now, your follow up to 'Yummy Boyz' which is 'On Ya' featuring the wonderful Sean Kingston had its video debut on MTV about a month ago (October 5). You have to be excited about this video particularly since it was directed by Ray Kay who we are familiar with his work with Britney, Justin Bieber, Lady Gaga and others. So, tell me your opinion how this video differs from 'Yummy Boyz' in its approach?
Meital: 'On Ya' is a bigger production. I thought I was gymnast with all the stuff I was doing in the air and all that. It's just a bigger production, you know.
A dance artist?
BeBe: Well, I love it when you kiss Sean Kingston. I thought that was pretty hot.
Meital: Yeah, Sean is sweet.
BeBe: I read something about a comparison between your music and lyrics to Borat meets Portishead. Where does that come from? Have you heard that comparison?
Meital: I think like Borat is the funny element. People say I'm the female Borat because I do crazy shit, and we have a similar sense of humor to some extent. And, Portishead is maybe like the sexy kind of vibe. But, I've been compared to many different artists, which I take as compliments.
BeBe: Now, do you consider yourself strictly a dance music recording artist or are you one of those pop artists that so happens to be able to cross over to the dance charts? And, why I ask that is because I remember back in the day when I interviewed Lady Gaga, she felt that she had a hard time when her first single 'Just Dance' was primarily played on Dance Radio. She had a hard time convincing people she was a pop artist. And, that 'Just Dance' was really a pop song. I think since then she has paid particular attention to that to make sure that her music is very pop-oriented. So, I'm just wondering with your first two singles coming out being very dancy and bouncy for the crowd if you consider yourself a dance artist?
Meital: I just consider myself a good artist. Whether or not I'm pop or dance, I think time will tell. I think my music is going to be electronic music. Some of it is going to be pop-dancy, and some of it is going to be more loungy. Some of it's going to be dub. Some of it is going to be trap as well. There is going to be a lot of different electro styles within the album, which I think is going to become pop music actually.
TV next
BeBe: Over the last 10 years, artists have concentrated mostly in releasing singles. It is very rare these days to find people releasing albums unless they have been in the business for awhile where they have consistently released albums. We're in this iTunes age and singles is kind of where we are given the choices really. We can just buy singles now, and we don't have to buy the whole album for the one song that we really like. But, your intention has always been to put out an album, 'I'm In Hate With Love,' correct?
Meital: Yeah, the singles are a part of an album.
BeBe: We hit a little on the LGBT community for which you have done well performing at some major LGBT events and circuit parties, namely the White Party and the Dinah (both in Palm Springs) earlier in 2012. Going forward I'm sure you will continue to pay attention to this audience. And, are you ready for all this gaydom coming your way?
Meital: Oh yeah, I'm going to be pretty much everywhere. I wish more straight guys would come to the gay clubs, you know? (laughs)
BeBe: Now, you, darlin', have been dubbed the next pop superstar. All the critics out there have nothing but great things to say about you. So, I'm wondering where is this going to leave your acting career?
Meital: Well, I'm still working on a few movies. I'm still working on a TV series right now. So, I think eventually I'm going to do both. For the past year, except for coming back on 'Weeds,' I've pretty much focused on my singing. This coming year I hope to start filming my TV show and everything.
BeBe: There are a few people out there that juggle both and are successful at doing that, and I look forward to following you on both sides of your artistic talents.
For more on Meital, the upcoming release of her highly anticipated debut album "I'm In Hate With Love," and tour dates, follow her on her website at www.meitaldohan.com
As an actress, BeBe was introduced to film with a lead role in the independent film "Under One Sun" with her character dealing with religious, racial and gender issues. Additionally, she appeared in the campy musical "Devious, Inc" (Australian Film Festival, San Francisco Short Film Fest) also adding additional vocals to the musical soundtrack. Both of these performances led to her selection for a lead role in Aisha Media's next short film series, "Con-tin.u.um" to be released in 2012.


text:
Bearpaw Abigail Girls Toddler & Youth Suede Button Boot
Sorry, this item is sold out!
Looks like you've got more shoe shopping to do - have fun!
Looks like you've got more shoe shopping to do - have fun!
Item # dsw12prod4460137
The Bearpaw Abigail never goes out of style! The comfortable suede boot will keep little toes cozy. Easy to pull on, little ones will love the comfort and ease of this boot.
- Suede upper with faux fur detail
- Side button detail
- Cushioned foam midsole for comfort
- 8" shaft height, pull on
- Rubber sole offers great traction
- Imported
- Online Exclusive!
By: RosiefrmTheCityByTheBay
Location: San Franciso
August 09, 2013
Keeps your toes toasty!!!
"I'm 25 but I have really tiny feet and fit a size 3 in kids. I have three different pairs of Bear Paws and while two fit really well, one has been too tight. Well these fit PERFECTLY.I work very early mornings and the weather has been very chilly lately so I put these to the test. It kept me warm the entire time I was outside and even though I haven't applied boot protector yet, it held it very well against the surprise sprinkle we had this morning. It has some cushion in it because I do have a lower back problem but after working a 8 hour shift plus 3 hours of shipping afterwards, I had no problem at all with my back hurting.Overall, do get them for your little one or even yourself if it fits because it was worth the price. The color is also very gorgeous too and it seems you can roll the top down but I haven't tried that yet."
Click anywhere to close this.


text:
Office Hours:
Mon - Thu: 10am - 5pm
Fri: 9am - 1pm
CLOSED Saturday & Sunday
Contact Us:
The Intramural Sports Program at the University of South Florida is designed to provide an opportunity for all students, faculty, and staff to participate in organized recreational competition. Structured leagues and tournaments are offered in over 30 different sports and activities during the Fall, Spring, and Summer semesters. So satisfy your urge to play, come by Campus Recreation and stop by the Intramural Sports Office or contact the Intramural Department at 813-974-4449 or firstname.lastname@example.com.


text:
Type: Sub-task
Status: Closed
Priority: Critical
Resolution: Fixed
Affects Version/s: 2.0
Fix Version/s: 2.3
Component/s: JavaScript, Repositories
Testing Instructions:
This feature adds the ability to drag and drop files into a course while editing it and have then automatically added as activities.
The following tests are loosely described:
- Log in as an admin
- Purge your caches (version bump for weekly release will remove the need for this)
- Enter a course and attempt to drag a file over a section. Make sure nothing happens.
- Turn on editing
- Try dragging again and this time make sure you see a notice at the top of the screen and a notice at the bottom of each section you drag over.
- Try dragging and dropping the following files over a section to make sure they work. Check the activity type that gets added makes sense:
- .png image
- .jpg image
- .txt document
- .pdf document
- .csv file
- .docx document
- A file without an extension
- A zip file (you should get an option about what to do, try both!)
- An MBZ file
- A url (highlight the URL in your browser and drag that over a section)
- Disable the upload repository and dragging a file, make sure nothing happens (because you can't upload)
- Re-enable the upload repository
- Disable the file, folder, page, and url activities
- Make sure you can't drag anything into the course to create an activity
- Renable all of them
- Repeat these in all supported browsers.
Please note there are a couple of known issues, please see the linked issues.This feature adds the ability to drag and drop files into a course while editing it and have then automatically added as activities. The following tests are loosely described: Log in as an admin Purge your caches (version bump for weekly release will remove the need for this) Enter a course and attempt to drag a file over a section. Make sure nothing happens. Turn on editing Try dragging again and this time make sure you see a notice at the top of the screen and a notice at the bottom of each section you drag over. Try dragging and dropping the following files over a section to make sure they work. Check the activity type that gets added makes sense: .png image .jpg image .txt document .pdf document .csv file .docx document A file without an extension A zip file (you should get an option about what to do, try both!) An MBZ file A url (highlight the URL in your browser and drag that over a section) Disable the upload repository and dragging a file, make sure nothing happens (because you can't upload) Re-enable the upload repository Disable the file, folder, page, and url activities Make sure you can't drag anything into the course to create an activity Renable all of them Repeat these in all supported browsers. Please note there are a couple of known issues, please see the linked issues.
Affected Branches:MOODLE_20_STABLE
Fixed Branches:MOODLE_23_STABLE
Pull from Repository:
Pull Master Branch:
Now that gmail has shown that it can be done (for recent versions of Firefox 3.6 / Chrome), it would be great if you could add files directly to a Moodle 2.0 course by dragging & dropping from the user's desktop, using some of the new features of HTML5.
Even if it can't be done directly, would there be an API that could be left open to allow a 3rd-party plugin to add this functionality?
Gliffy Diagrams
Issue Links
- caused a regression
MDL-33056 Drag and drop upload status bar needs better placement and styling [#dndupload-status]
- Closed
- Discovered while testing
MDL-33062 Click to edit doesn't seem to be getting added properly to draged/droped files
- Closed
MDL-33056 Drag and drop upload status bar needs better placement and styling [#dndupload-status]
- Closed
MDL-33054 Dragging a URL to create an activity is unreliable across browsers
- Closed
MDL-33091 Dropping files onto the dndupload-status bar should upload them
- Closed
MDL-33057 Rewrite DND Upload to YUI module (performance)
- Open
- has a non-specific relationship to
MDL-31052 update Course AJAX/javascript to YUI3 and replace section_classes.js
- Closed
- has been marked as being related by
MDL-32937 implement drag/drop for SCORM
- Closed
- is duplicated by
MDL-27297 File UI Improvements
- Closed
- will help resolve
MDL-19075 single click file upload
- Closed
- All
- Comments
- Work Log
- History
- Activity
- Links Hierarchy
I guess the natural place for this would be in the Upload repository plugin inside the file picker.
Details are going to take some thinking about ... I can't see this being done for 2.0 unfortunately.
I'm thinking it would be nice to be able to drop files directly onto the course (possibly also do the same with URLs) and have a resource automatically created with a default title.
I'm up for having a go at the code myself (assuming I have some free time at some point), but fine with it being a Moodle 2.1 issue.
Hi Davo
That will be very handy to add new files to courses, hope you can share your knowledge about dnd in html5, I am interested in implemented this in moodle file picker.
At the moment, my knowledge of this is limited to a couple of articles I have read (but not had any time to do anything with).
The relevant articles are:
I've recently implemented this as Moodle block - http://moodle.org/mod/data/view.php?d=13&rid=4963
(or https://github.com/davosmith/moodle-block_dndupload )
I've had an initial attempt at this feature as a core patch, based on my drag & drop upload block.
It's still a bit rough around the edges, but I'd appreciate any feedback that is available.
Hi Davo,
From the looks of this, its much similar to your excellent block for automatic upload into course sections.
I think the first step before that would be to great to get drag/drop into the file element of forms (rather than needing to click and and select upload and select file, just drag into that form element).
With regard to uploading directly into sections. Whilst this is very very useful I think we'd need to think about the best way to 'autocreate' course modules (rather than hardcoding the different resource types). Perhaps this might be a module hook or setting - ideally we'd allow third-party modules to benefit from it.
I've added a patch to the sub-task
MDL-29766 which implements drag and drop onto a Filemanager element in, what I hope, is a fairly sensible and clean way.
After this, I'll get on with trying to design a sensible way of allowing the 'drag and drop onto a course' code to work.
If any one is looking for a similar functionality and he/she is using Moodle 1.9 ...
You can use: http://tracker.moodle.org/browse/CONTRIB-2730
I've put together a rough design document in the Moodle wiki, covering what I am currently implementing on this issue, it can be found here:
This is a pretty big patch, but I think it basically covers everything needed to get drag and drop of files, text and links onto course pages working.
There are still some definite rough edges - YUI has defeated me when it came to submitting the pop-up dialog box with the 'enter' key, the notification at the top of the page could do with a designer to look at it.
Things that can be done:
- select one or more files and drop onto a course to upload
- select some text in an application and drag onto a course to create a 'page'
- drag a URL from a browser page or the address bar to create a URL
- drag a zip file and choose 'unzip' to create a folder resource
I've hopefully added all the necessary comments, GPL notices and PHP docs.
Looking forward to some feedback on this.
Hi Davo,
I don't think the branch has all the changes on it (I can't see lib/dnduploadlib.php).
OK - looks like I managed to miss out the new files when committing to git.
I've pushed a fixed version out.
Adding Dan M & MD here..
Dan: I wonder if you could find the time to look at what Davo has proposed from a module author point of view. I'm thinking the example of draging and dropping a scorm package onto the course page - could you add support for drag/drop of a scorn package onto the page?
Martin: Just wondering about your thoughts on seeing this in core.
very cool idea - would be nice if you could choose to parse the filename for a title or the imsmanifest.xml for the title to the SCORM (site level setting maybe?)
if I get time I'll try to look later this week!
You are welcome to pull the name out of the imsmanifest.xml file - the value passed into the mod is only a suggestion (based on the name of the file), if you set something different, then this should be picked up automatically (by 'get_fast_modinfo') and sent back to the browser.
Either way, a global configuration option within the SCORM module would seem like the best place to control that behaviour.
If you want to see the code in action, I have set up a demo site here: http://coursednd.dev.synergy-learning.com/course/view.php?id=2
username: teacher
password: teacherpass
There are instructions in the first course section.
If you do have a play with it, please can you delete any uploaded files when you are finished? (I'll take the site down again once it has served its purpose).
There are certainly still one or two rough edges to sort out, but I'd like confirmation that the basic operation is OK, before I start messing around with smaller details.
just took a look at this again - any chance we could modify it so that the module can "inspect" the file before deciding if it is supported rather than just looking at the file type? for example it would be nice to be able to check that it is a zip and it contains an imsmanifest.xml file before showing the option to upload as scorm.
Hi Davo,
Sorry for the delay in getting this peer review started and as always thanks for all your work on this - its looking great.
Here are my notes in progress (not complete):
- In general I wonder if we can share more between this and the form drag and drop javascript. Abstracting away shared code handling and tracking drag events and handling the uploads in something shared and just dealing with the pecularities of each in their own js file.
- Martin asked me to look at how this interacts which potential changes to course formats. I think the best recommendation I can make to reduce the impact of this is define as 'constants' CSS classname/dom identifiers so they are clearly identified in the code and easy to find/change. We might have full pages with only one section and other such things in the future. Example identifiers which are hardcoded within the code:
this.Y.all('li.section.main').each( function(el) {
test.hasClass('section') && test.hasClass('main');
On those lines I think this should be abstracted into a function:
// Work out the number of the section we are on (from its id)
var section = this.get_section(e.currentTarget);
var sectionid = section.get('id').split('-');
if (sectionid.length < 2 || sectionid[0] != 'section') {
return false;
var sectionnumber = parseInt(sectionid[1]);
- I think we need to look at the ajax course editting work that Andrew Nicols has been doing regarding ajax_edit_enabled(), add_resource_element() and add_section() - I think this might tie into the course format work too. That main object is weirdly un-namespaced to me maybe Andrew got rid of it.
- A few of the icons are hardcoded to 16x16 in JS - can this not be done with a css class which presumably already exists for this. (Might break in some themes)
- I don't think this is a safe id generator - surely it should have a time component too var uploadid = Math.round(Math.random()*100000);
- Much be worth a note about using XMLHttpRequest rather than Y.io again.
- The harcoded core stuff (// Add some default types to handle) - can this be done by the plugins which handle them? What happened if someone removes the url resource and nothing handles urls?
- I think rather than doing your own callback work you will be able to use component_callback function
- Some of the error strings introduced probably do not need to be introduced if they are not going to be an issue in normal use. (i.e. if only seen by developers) (examples - invalid course id and sesskey)
@Dan M - I'm not sure if pre-inspection of the files would work. Aside from being more difficult to code, it might produce a slightly more confusing UI, where you drag several files and then, at some random time later (depending on upload speed) boxes start popping up to ask what to do with them. With the current version, the decision box comes up immediately and then the files get on with uploading in the background.
I think that dropping a zip file on a course and choosing 'SCORM', followed by getting an error later is not that dissimilar to adding a SCORM module and attempting to add an invalid zip file directly - most users aren't going to do it unless they have some expectation that they really have a SCORM file and if they are expecting it to be a SCORM file, but it isn't, then it would be more confusing to hide the 'treat as SCORM' option, than to give an error after it has been selected & uploaded.
@Dan P
1. I set out with the intention of writing this code in that way (shared base code between form and course drag and drop), but when it came down to it, aside from some very superficial similarities in structure, I found almost nothing that could be usefully abstracted. Comparing the two files side-by-side showed that every function had subtle differences, which suggested that it wasn't worth creating a shared base class to work from.
2. Good suggestions - I'll get on and implement these.
3. I had some discussion with Andrew at one point (but I can't remember which tracker issue it was on - I can't find it now); at the time he stated that there would need to be a couple of changes to my code (and a slight change to his as well), but nothing too major. I think that any changes to my code will be fairly localised and can be looked at when the course AJAX changes are complete.
4. The icons in question are the 'ajax loading' spinner (which gets replaced by the real icon, once the upload is done) and the 'green plus' icon for adding items. I will switch to using classes for the sizing.
5. I'll add a time component; however, looking again at the code, I don't think there'll ever be more than one dialog on screen at a time (I'd tried popping them all up at once, but that caused horrible problems, so I introduced a queue instead and only popped up one at a time).
6. I'll add a quick note.
8. I'll look into the component_callback function and see if it meets my needs
9. I'll prune out the dev-only error strings.
Re: 7. yep I think that makes sense now i've read more, sorry.
10. I think you should throw a moodle_exception rather than call print_error within the library functions (in practice they are both the same but it reads better).
11. add_type_handler is needlessly looping around $this->types - you could use in_array() and this would be more efficient and easier to understand. Same for is_known_type, has_type_handler, has_file_handler and get_handled_file_types
12. I think you could just throw an exception rather than using send_error (catch it in lib/ajax/dndupload.php and format as it needs to be if required) - I think that would also allow you to do things like require_capability and require_sesskey (which throw exceptions)
13. get_handler_function() - I think can use component_callback
14. dislay_name_from_file Should probably use textlib::strpost and textlib::substr
@Dan P: I've pushed an update to the same branch (I'll merge the commits together once we're ready for integration, but will keep them separate for clarity at the moment):
1. not sure if this is possible
2. done (css classes defined at top of javascript)
3. will need to coordinate with Andrew
4. sizes removed
5. time added
6. comment added
7. agreed to leave
8. plugin_callback used
9. error strings removed
10. print_errors replaced with moodle_exception / coding_exception, as appropriate
11. I don't think in_array will work as I'm comparing with specific member of the object, not the whole object
12. exceptions added + required_XX + MUST_EXIST
13. plugin_callback used
14. textlib used
Adding this as a note to self, but will need to cross-check the module creation against the new capabilities that Tim Hunt has added to 2.3 (mod/xxx:addinstance)
I've just rebased on top of the latest version master and force-pushed this back into github.
I've confirmed that this fully respects the 'addinstance' capabilities (without any fixes needed in my code - apart from one small typo in one of the exceptions).
Hopefully this is close to being ready for integration.
I've been thinking a bit more about making this compatible with current / future course formats, and wondered if this was a sensible approach:
- Create a callback into the format to allow the overriding of the section identifier classes (current assumptions: a section is an 'li' element with classes 'section' and 'main'; it contains a 'ul' element with class 'section', which itself contains 'li' elements to represent each activity)
- Add some way for the format to override the generation of the resource element?
Hmm on your last comment, I must confess I am not sure i'm qualified to give a good answer.
And yep I think this is close to integration, I hope to look at it after i've finished wuth this weeks integration.
Is it possible to add support for Folder upload?
Chrome only (for now, as far as i can tell)
<input type="file" id="file_input" webkitdirectory="" directory="">
see more info:
(As an aside, it would be an interesting question, it it was actually possible, as to how to handle a folder uploaded along with other files - should the contents of the folder (and all sub-folders) be converted into individual file resources, should a 'folder' resource be created, with the files & sub-folders, or should a 'file' resource be created, with the folder structure stored within it).
@Davo - Thanks you for the quick response! I guess it is all very new and maybe even "work in progress". btw, Did you look into the demo : http://html5-demos.appspot.com/static/html5storage/demos/upload_directory/index.html
@Nadav thanks for that link - but it still doesn't help. You can drag and drop a folder onto the file element (or click on it and select a folder), but you can't drag and drop a folder onto an arbitrary place on the page.
@Davo - Dragging a folder and dropping it over the "browse" element seems very useful. It is a minor compromise when considering the benefits. Don't you think? at least until this technology gets more into main stream and maybe gets "standardized" and adopted by other browsers too.
btw, Does the Drag and Drop code supports "Copy and Pasting" of files?
@Nadav Have you tried the course drag and drop demo site I linked above? I can't see any way that the demo you have listed would work with the course drag and drop as it works now. It might be useful as a completely separate feature, in which case, I suggest you open a new tracker issue and explain exactly how you think it would work.
Copy and paste is not drag and drop. As far as I know, browsers don't support uploading of files from the clipboard when copying and pasting (but I could be wrong about that). In addition, it would be difficult to know which section you were uploading to (if you are pasting via the edit menu, or via the Ctrl+V shortcut).
@Davo - Thanks looking forward to see your beautiful code in Moodle 2.3
(Note before I forget it) lib/ajax/dndupload.php needs sesskey protection. A malicious user could potential craft a url which adds a file to a course page..
lib/dnduploadlib.php - function process() (which is the first thing that lib/ajax/dndupload.php calls), 4th line is require_sesskey() (right after two 'require_capability' lines).
Hi Davo,
Thanks for all the updates, apologies for my slow reponses. I've been having a big think about this today and discussed a few points with MD. I'll try and summarise:
- A concern is accidentally dragging files onto the course page and then them being immediately visible to students. A suggestion to deal with this is to pop up a 'what do you want to name this' dialogue much like dragging a link does. The popup would be pre-populated with the filename. This adds a step, but this might actually be a really useful step as well as being protection from accidental uploads. What do you think?
- I think that the work in
MDL-31052is going to do some cleanup that is going to impact this and I think we want to try and coordinate these two changes - i'll try and do this. Just to reassure you though (since I have been less responsive in here than I would like), we definitely want this in 2.3
- Out of interest I tried adding dndupload support to the OU subpage module: (https://gist.github.com/2410790) I don't think it worked because of things relating to this ajax course editting stuff - again relating this with
MDL-31052. It might be interesting exercise to try adding dndupload to submodule as I think it would help design this tobe tolerance to changes in course formats (e.g. passing in the elements we need in as arguments to the JS)
- On course formats flexibility, in MD's recent mockup: http://docs.moodle.org/dev/File:paged_course_formats_sectionpage_mockup.png note the 'drag files here' element. which is always visible when on 'single section on one page' mode. That works there, but on multiple sections on one page we probably want that not to be there. We need to think about how we would elegeantly do this. Ideally the control would be in the calling code.
- CAUTION: I might be over engineering this thought. I think it would be advantageous to move the return structure of the register callback as a php object like we do in lib/outputcomponents rather than a simple array. The reason I think this is because we'd then enforce the data structure with php syntax checking rather than dynamically.
1. I'd be reluctant to add an extra step, as that takes away from the immediacy of being able to drag & drop the files and have them immediately available (plus it would be very annoying if you've just uploaded 5 files and then have to click through 'ok' 5 times). Maybe a better solution would be an 'undo' button/link that appears immediately after you have done the upload (and which disappears again after 10 seconds)? The undo option would delete all the files you have just uploaded (along with the activities / resources created from them). I'd reckon that the odds are pretty slim of a student ever refreshing the page, spotting a file they weren't supposed to see and downloading it in the time it takes the teacher to click 'undo'.
2. I've posted in
MDL-31052 to try and coordinate this
3. I'll take a look at the subpage module
4. I'd noticed the 'drag files here' element - do we want that always visible? If so, I could adjust the drag and drop code to allow for this (although, from my point of view, it would be easier if we could just have a static element on the page informing users of drag and drop, and then pop up the 'drop here' message when they drag files over the section box - even if there is only one section on the page. I think that would be more consistent with what happens when there are multiple sections on the page).
5. The current structure looks like this (if a module wanted to do everything):
['files' => [['extension' => '.ext1', 'message' => 'Turn ext1 into a XXX'], ['extension' => '.ext2', 'message' => 'Turn ext2 into a XXX']],
'addtypes' => [['priority' => 200, 'identifier' => 'foo', 'datatransfertypes' => ['text/foo', 'x-encoded/foo'], 'addmessage' => 'Add foo here', 'namemessage' => 'What do you want to call this foo?'],
['priority' => 100, 'identifier' => 'bar', 'datatransfertypes' => ['text/bar', 'x-encoded/bar'], 'addmessage' => 'Add bar here', 'namemessage' => 'What do you want to call this bar?']],
'types' => [['identifier' => 'foo', 'message' => 'Create an XXX from this foo'], ['identifier' => 'text', 'message' => 'Create an XXX from this text'], ['identifier' => 'bar', 'message' => 'Create an XXX from this bar']]]
I'm not quite sure how you'd encode that into a PHP object, rather than a series of arrays, without it getting very convoluted to create (but I'm happy to be corrected on that front).
Here is the output of the codechecker.
Note that line length warnings/ comments without punctuation are not too important, but great if you do have time to fix up.
The incorrect spacing issues and missing phpdocs are more 'hard rules' for new code.
Re: 1) the other aspect was giving it a decent name, as file names tend not to be descriptive. The little immediate popup was one solution. But
MDL-31215 is the other one.
- Lets leave it as it is for now then.
- Cool
- Thanks
- I think this is just about making the feature more visible/discoverable so do want it always visible, however as discussed lets focus on having it land as it is.
- I think it could be encapsulated (even just by enforcing those array keys), but lets leave it as it is.
- BTW. Whilst I was looking in that area, I noticed that the handle_other_upload does not check for the result of the plugin callback (btw with that function and handle_upload, I would return an empty value rather than a string in the case of not found).
5.1. I've copied the exception from the handle_file_upload function. I return the string for the non-existent function as I want to very clearly distinguish between the coding error of declaring support for drag and drop upload and then not providing a handler function, and the situation where the function is there but processing the uploaded data fails for some other reason.
I've cleaned up the code to fix the comment / whitespace / phpdocs issues (as well as that missing exception from the last comment on this issue).
Also rebased onto master whilst I was at it.
New code is there on github.
Will look at the subpage issue now.
Just tried out the subpage module.
It basically all worked, but with the following issues:
- The non-standard 'AJAX' editing code meant that I had to disable my 'is ajax enabled' check and the non-ajax editing icons were left at the end of the upload.
- The section number for the subpage (100) was higher than $course->numsections, so I had to disable that check on the back-end as well.
I hope that the first of these issues could be fixed by the subpage module adopting the new course AJAX code (when finished). The second issue might just be a case of removing the 'numsections' check and hoping for the best (not sure what other solutions there are to this).
Thanks, the numsections thing is a hack subpage does so not too bothered, I suggested it just again to see if we can tolerate course format changes.
I've rebased this on top of the (in progress) changes in
MDL-22504 and quickly modified it to work. (I wasn't very through with this so may have missed stuff off):
(Main changes: https://github.com/danpoltawski/moodle/commit/f52a8a3bc27e55ef3043ad8cb248c03a74645453 )
Hi Dan,
Quick comment on your changes – to be on the safe side, it's probably worth wrapping the call to invoke_function in a YUI().use():
add_editing: function(elementid) {
YUI().use('moodle-course-coursebase', function(Y) {
M.course.coursebase.invoke_function('setup_for_resource', '#' + elementid);
If, for some reason, the code is called when coursebase hasn't already been required elsewhere, then this should mean that it's included and doesn't throw an error. This could potentially happen if the drag/drop code is included when course ajax is disabled (e.g. by the theme, course format, user, or site admin).
Please note, my github repo hasn't yet been rebased to squash all the commits down, nor does it include the changes from Dan / Andrew on the 20th April (which I was waiting on the integration of the new YUI course editing, at the end of last week, before adding).
As it is now pretty late at night UK time, I'll make these changes first thing in the morning, so could we hold off on integration until then?
The code is now compatible with the new YUI3 AJAX course editing.
All commits have been squashed together.
Unless I've missed something, this should be ready to integrate (but I'll be on-hand for the rest of the week for any urgent fixes).
Fatal error: Call to undefined function dndupload_add_to_course() in /Users/danp/git/moodle/course/lib.php on line 4495
That was on the front page Seems like dndlib needs to be included from course/lib
I've fixed the front page issue on my git branch (and squashed it into the single commit).
Hi guys,
I've spend a good chunk of time looking this over.
Noting I didn't even get as far as testing it, I was purely reading through and understanding the code.
My appologies if I've misunderstood things, however I think there is enough to send this make to be further looked at.
What I've noted:
- theme/base/style/course.css: overflow:clip is invalid css.
- dndupload_handler __construct. I think the code here could certainly be made more robust.
- Rather than use get_plugin_list('mod') consider using get_plugin_list_with_function, it will reduce the module list to just those that have the required callback for we begin iterating (this will tie in with my thoughts below).
- Don't use plugin_callback, its likely to be deprecated in favour of component_callback (and just calls component_callback). However I would recommend not using component_callback either. If you switch to get_plugin_list_with_function as suggested above then practically everything that component_callback for you would already be done, all you would have to do it call the function (you know it exists for every module returned by get_plugin_list_with_function).
By doing this you would be cutting out unneeded component parsing (clean, and normalise), youd be avoiding component directory checks, and youd avoid duplicate function checks.
Personally I don't think component_callback and plugin_callback are the best of functions. They serve their purpose in some ways, but they're not really a great choice unless your component is likely to be from a number of plugin types in which case calling get_plugin.. methods isn't a practical option.
- Perhaps too late in the stage now, but still worth considering I suppose is whether there would be advantage in flipping how that register callback works.
Rather than calling the callback method and requiring it to produce a complex structure which you then need to parse again, why not just call the callback method and pass $this as the only argument. Then each callback method can call add_type/add_type_handler/add_file_handler as they need directly. Those methods are public, and the response structure is not used for anything but parsing to those functions so I'd think that would be a clear win. It would also make the callback MUCH easier to document as people would be able to refer to thie new dndupload API.
- Small idea but within dndupload if you use the identifier as the key when adding types (given it has to be unique anyway) you can reduce the need to iterate the entire collection when looking for a known type, simplifying your is_known_type method as well as functions like add_type_handler. A very minor performance win.
- Leading on from that I see that add_file_handler doesn't have a unique property, however by the looks of it module could be made unique given its used for locating specific handlers. Again if done you could make that the key to simplify those checks.
- dndupload_processor::send_response why is it concatenating an empty string to the result of $mod->get_icon_url() (just curious is all).
- Should dndupload_processor::process check that $content is null if is_file_upload was true.
- Looking at dndupload_processor::handle_file_upload I think that the module should be checked for the handle callback well before the draft file area has been created, and certainly before the upload has been processed into it and a new module created. Perhaps that should be checked within process() before calling handle_file_upload.
- dndupload_processor::finish_setup_course_module could probably be using delete_course_module to make that clean up more future proof.
- I'm not sure about the new string file lang/en/dndupload.php, to be truthful I think those strings should be moved into an existing file and the new file removed. But I'm not 100% sure so we can check with Eloy/Petr/Martin at some point.
- While I havn't tested to be sure the module callbacks should all start with mod_ I think. That is our perferred way of adding them to modules I believe to avoid any further chance of collisions not that there is much. Debugging doesn't get shown with AJAX requests obviously so we'd have to check system logs I think.
- Ideally I think modulename_dndupload_handle should be using modulename_add_instance rather than manually inserting the record. While our core modules are all reasonably simple this will help reduce duplication for those who are doing more with their modules when adding an instance and this ensures things won't be inadverningly missed. Also when cleaning up modulename_delete_instance should be used to clean up anything additional as well. Where possible for both of these anyway, it helps reduce duplication and provides a good example to other developers.
- Just a note in regards to the javascript Y.Node.create('<div class="someclass">Blah</div>'); could be used to simply much of the node creation code there.
There is one larger issue that I have noted as well.
The naming of class and file names and the location of files should reflect what this code is doing and its scope, presently I'm not sure about the naming and location of things. It all looks very clean but I wonder whether things could be moved and renamed to be made clearer.
dnduploadlib.php contains two classes and a function, the function dndupload_add_to_course is only used within course/lib.php, dndupload_processor is only used within lib/ajax/dndupload.php, and finally dndupload_handler is used internally by dndupload_processor, and by dndupload_add_to_course. Essentially this code is being used for viewing courses, and for AJAX calls to make things happen when viewing a course.
Because of this I wonder whether this code should be moved from the lib directory to the course directory as thats where its implementation would suggest it be located.
I also think dndupload_processor needs to be renamed to reflect that it can only be used for AJAX callbacks. This is of course governed by its only real public function process leading eventually to send_response which returns JSON.
I think that alone is a very strong reason to rename this class to reflect its limited use case.
Also just noting so that others are aware I've looked I'm always very dubious of any class that in its process calls require_login and handles basic page validation, everything appears to be fine here, the class is essentially designed specifically to handle an AJAX page request.
As well as the change in naming I think including a check of AJAX_SCRIPT within the constructor may be wise and help to ensure that the correct output initialisation has occured.
Actually that leads onto another point, before echoing out the JSON response $OUTPUT->header should be used to ensure that the correct headers are returned for the response (further enforcing the AJAX requirement I suppose).
Anyway open to thoughts there.
Cheers all
I've added a new commit to my repo. Please could this be checked, before I squash the commits?
- overflow:clip changed to overflow:hidden
- dndupload_handler __construct:
1. switched to get_plugin_list_with_function (I didn't know about this function, otherwise I'd have used it in the first place!)
2. done
3. That was my original design, Dan P suggested otherwise here: http://docs.moodle.org/dev/Talk:Course_drag_and_drop_upload
- The types array is now indexed by the identifier and the relevant functions have been simplified
- I've thought through doing something similar with the file handlers array, but I'm holding back as this makes the javascript more difficult (looping through associative arrays in javascript can pull in extra member variables added by the JS framework, if you're not careful - leaving the code as it is allows a simple 0..length loop in the javascript).
- The empty string concatenation was there to convert the moodle_url object into a string - but looking back at it again, I'm not sure why I didn't just call '->out()' instead (probably an innate fear of chaining function calls). Fixed.
- Check added in case a file upload ever contains a 'content' parameter
- I've added a check to 'handle_other_upload' to ensure the module has registered that it supports this type of content. 'handle_file_upload' will already fail when creating the draft area if the module is not registered to handle the file type being uploaded (or if it is not registered to handle any file types). If the module has declared support for handling file types (via mod_modname_dndupload_register), but does not include a 'mod_modname_dndupload_handle' function, then that is a coding error on behalf of the module creator. I'm not convinced that the extra effort to check for the existence of the function earlier in the processing of the upload is worth it for something that will get caught very quickly during the development process (especially as there only seems to be a built-in Moodle function for calling a callback, not one for separately checking it's existence first).
- switched to 'delete_course_module'
- lang file - awaiting further clarification
- renamed all callbacks to start with 'mod_' (although that seems to contradict every other function in the mod/XX/lib.php files)
- Switched all mod_XX_dndupload_handle functions to call XX_add_instance
- Left the node creation code as it is, as, in many cases, I later update individual elements, based on the AJAX response; the current way leaves references to each of those elements, without having to re-parse the generated HTML.
I've renamed class dndupload_processor => dndupload_ajax_processor, but not moved any of the files (to try and make sure my other changes are still visible in the diff). I will add an extra commit to move the files, if you would prefer that.
Extra check for defined('AJAX_SCRIPT') added to the constructor for this class.
echo $OUTPUT->header() added to send_response function.
I'm pushing this through for integration despite not having a chance to peer review it for Davo. Sorry..
The main moodle.git repository has just been updated with latest weekly modifications. You may wish to rebase your PULL branches to simplify history and avoid any possible merge conflicts. This would also make integrator's life easier next week.
TIA and ciao
Hi Davo,
I have to get going for the night. I've made good progress into the review of these changes and have made a few notes which I will share now.
I'll continue this review tomorrow morning however feel free to address any of these points already now but please ping me if you do so that I know to get the new changes.
Otherwise more feedback tomorrow.
Just before I get to my points I do want to make something clear. This is one awesome feature set, and I can see some very cool directions that this could be taken in the future. But for now before it lands I really think we need to polish this as much as we can before it lands because it is a feature that is going to be touted I'm sure and certainly it is a feature that people are going to be using (can you imagine anything easier than "just drag your file over the section you want it in and Moodle will do the rest").
So my notes so far:
In regards to the interface I really don't like the text that reads 'Add file(s)|link|page here'.
At first I thought it was a link or a button of some kind which says something (lol perhaps just about me).
However I think it is rather confusing/annoying that it is always there.
I really think that we would be much better having something that was displayed when the user was dragging something over either the section or over the course.
Perhaps all we need to do is make the note at the top of the editing page more prominent (its styling needs improving btw) although personally I think we do need a visible drop target in the section, and I think it should only be shown when dragging something over the page (highlighted further when the user is over top of the actual target/section perhaps in some way). Anyway perhaps get MD's thoughts on this, he can make an executive decision to keep this moving at pace.
Also to be mentioned I really do think we need to move files and lang strings for this change as I suggested above. I will discuss this with others when I get a chance.
A couple of suggestions, perhaps for down the track:
- Each module that supports a drag+drop creation could have a setting to enable/disable it. That was installations can control it a little more.
- There should probably be a setting to enable drag/drop creation of activities across the board.
- If you have a section that contains orphaned activities (create an activity in the last section and then reduce the number of sections by 1) you still see the add files here text and if you try to drag them over you get an error about invalid section.
- Things arn't very in tune if you disable file, url, and page modules and then head to a course. You still see the text saying you can add content and you can still drag things over. When you do things just keep spinning. Likely just needing a check somewhere before calling module callbacks to make sure they are enabled right?
- When addinstance cap has been removed for editing user on all activities the add file(s) here link is still shown despite them not actually being able to do it. (note it doesn't allow them to create new instances which is good)
IMO this feature absolutely must land in 2.3. Just going to have another look at the latest interface to follow up on the interface things Sam raised.
Sam I think you may have had some issue in the theme you used or bad cache or something. I used the latest code and the standard theme and the "Add files..." thing in each section only shows when you are over it. It works rather well.
I'm not a huge fan of the yellow message at the top, but I recognise the difficult choices here.
Here's my suggestion for something that promotes discoverability but would look slick.
a) Remove that yellow message from the top.
b) When we first switch to editing mode, show all these drop zones for a few seconds, for all sections, with the text "Drag and drop files, text or links here to upload them", and then fade them out.
c) When a user is dragging something over a section we show a message there (as now) of:
- Drop file(s) here to add them
- Drop text here to add it
- Drop link here to add it
Sam's 3-bug list looks valid and needs fixing.
After some discussion I'm also happy to keep the yellow box as-is for the time being until more people get to test it in 2.3 beta and we might get some more suggestions.
To echo what Martin has said, the 'add' messages should only appear to when something is being dragged. I sometimes see them appearing in the way you describe if I've switched branches and not cleared my browser / Moodle cache.
Being able to enable / disable drag and drop for each module sounds like a reasonable idea, but maybe not essential right away. I'm not sure that being able to disable drag and drop upload across the board has any real benefit (which is why the setting, which was in earlier versions of the code, has been removed); if someone does not want it, they can just not drag things into their browser Window - it does not get in the way of any other functionality.
1. Should it prevent dragging onto orphaned sections, or should I remove the rule about adding to 'invalid' section numbers? (This rule was also causing problems with the subpage module).
2 / 3. I'll add a check that the relevant modules are enabled and the user has the 'addinstance' capability, before adding the modules to the 'handlers' list; I'll also not enable drag and drop at all, if the handlers list is empty.
a) I had hoped that a designer could look at the yellow message and make it look a bit nicer - maybe having it appear when you switch editing on and then fade out would be better?
b)/c) Changing the wording of the drop zones would be a pity, as it would lose the reminder of the type of data you are dragging (file / text / url) - maybe a compromise would be to use 'Drag and drop files, text or links here to upload them' as the initial wording, then replace with the 'Add file | text | link' here message when something is dragged? With that in place, maybe fading-out text in each section would work.
(Update: Martin has edited his message whilst I was posting, in case my message does not quite match with what is written above)
I've pushed an extra commit into my repo, that does the following:
1. Checks that the module is visible/enabled, before adding it as an available handler
2. Ignores any files that are dragged, if there are no 'file' handlers available (unfortunately, I can only filter by file type once the file has been dropped, as browser security prevents me from finding out the file type before then).
3. Completely disable drag and drop if there are no available handlers
4. Allow any positive 'section number' (as this check seemed to be causing more problems than it solved).
Just to reiterate, if there is a designer available who could spend a few minutes tidying up the CSS for the 'Drag files ...' yellow message, then that would be great.
Hi guys,
Its very likely by the sounds it was my cache sorry about that.
I'm about to start looking at this again now, thanks for clarifying things, fixing the noted bugs, and making a decision on interfaces.
Alrighty, well I've looked this over and I'm now happy with that.
I've discussed the files and lang strings with Eloy and we are both in agreement that given this is specifically applicable to a courses and not a global dnd solution the lib file should be moved to a course directory and the strings to where ever the course ajax strings are coming from.
If you like I can do this as part of integration, otherwise please ping me when they are moved so that this can be integrated.
One more thing although I am quite happy for it to happen after, I think it would be swell if the dndupload.js could be converted to a JS module given all of the rest of the course ajax stuff has now been converted. Of course things work now so perhaps best to do this later.
Just a note that I don't think course strings are in a sensibel place at all at the moment (they are in moodle langfile I think)
Moving the files and strings now - should be done in a few minutes.
Should I squash all the commits once done?
All files renamed, as an extra commit on my branch.
For a rebased and 'squashed' version, please use the branch '
Alrighty this has been integrated, congratulations.
During integration I did test this in Chrome and Firefox against instructions I've written. Certainly deserves independent testing again as well.
Could you please read over the testing instructions Davo and add anything I've missed.
Also noting I did make an additional commit (a0a06d0) to fix up a couple of minor bugs I found during my testing:
- Wrong require_once for dndupload.php
- Incorrect lang strings for upload and cancel buttons when selecting how to handle a file
- Muted a JS error I was getting if Firefox
I will create a couple more issues now and link them here.
Linking issue
MDL-33054 to bug when dragging URLs in Firefox. Cross broswer compatability needs testing.
Linked issue
MDL-33056 to move dndupload-status bar to avoid regressions in themes.
Linked to MDL-33057 to convert dndupload.js into a YUI module like the rest of the course AJAX JS
I've noticed that drag/drop and 'click to edit title aren't collaborating that well (seems like the course ajax thing isn't picking it up, creating a bug for andrew).
Hi guys, while testing I noticed these:
On Chromium 18.0
- Drag & drop of plain text or formatted text from a Firefox window causes a JS error because of a notice present in the JSON. Notice: Undefined property: stdClass::$content in /home/fred/www/repositories/testing_master/moodle/mod/page/lib.php on line 501. This works from Chromium to Chromium.
- Drag & drop of URL from Firefox (toolbar, textfield or search field) creates a page instead of a link activity
- The sentence 'Drag and drop files, text or links onto course sections to upload them' appears regardless of disabled activities/repositories (except if all)
- The icon for a MBZ file is 32x32 pixels instead of 16x16
Is it expected?
- The MBZ file acts as a normal file and is downloaded
On Firefox 11.0
- Drag & drop of text or URLs does not work. The notice shown is 'Add files(s) here'. When dropping the text nothing happens, nothing in JS console.
- The sentence 'Drag and drop files, text or links onto course sections to upload them' appears regardless of disabled activities/repositories (except if all)
Is it expected?
- The MBZ file acts as a normal file and is downloaded
On IE9
- All good as in nothing works but nothing shows that it is supposed to work.
Edit: The notice comment applies to Firefox too
I'll try and address these issues this afternoon. Some of them may be difficult or impossible to solve as I am dependent on the browser reporting the right content type so I can process it (certainly during the drag I cannot access the actual content to double-check the type, but I may be able to do something once the drop has happened).
To note, there is (currently) no special handling of mbz files, so the observed behaviour is expected..
Davo: your comment concerns me - if we can't accurately tell what the content type is in all browsers - then perhaps it is not wise to support difference content types at all?
I've added a new branch called '
MDL-22504_drag_and_drop_upload_integration' that addresses as many of the issues as I've been able to fix:
- Text dragged FF => Chrom(ium|e) - looks like this was providing the text with the unicode bytes reversed. I've fixed this by sending off both the raw contents and a version with each pair of bytes reversed to the server. By experimentation (tested with a range of languages, including Persian and Chinese), the first one arrives empty with text dragged from firefox, but the second gets through OK. In all other situations, the original text gets through fine and is used. I have not come up with a sensible way to detect this within the javascript before posting to the server.
- The yellow drag and drop message now reflects the types of handlers available (this will not reflect any 3rd party types registered, but I've taken this approach to avoid trying to construct language strings).
- The MBZ icon (and any other large icon sizes) is now displayed correctly.
Not fixed:
- MBZ files do not have any special handlers - just treated as a normal file.
- Dragging links across browsers
I have investigated carefully the drag types declared by different browsers, with the results shown below:
Destination browser: Firefox (Iceweasel 10.04, Linux)
- Drag file - application/x-moz-file; text/x-moz-url; text/plain; Files => file uploaded
- Drag url from address bar - text/x-moz-url; text/uri-list; text/plain; text/html => url uploaded
- Drag url from page - text/x-moz-url; text/x-moz-url-data; text/x-moz-url-desc; text/uri-list; text/_moz_htmlcontext; text/_moz_htmlinfo; text/html; text/plain => url uploaded
- Drag url from Chrome address bar - application/x-moz-file; text/x-moz-url; text/plain; Files => attempts to upload file and fails (indistinguishable from file upload until the drop event occurs; once the drop has occurred, I can see that there are no files and fall-back to the application/x-moz-url type - will add another commit in a moment that does this)
- Drag url from Chrome page - application/x-moz-file; text/html; text/x-moz-url; text/plain; Files => attempts to upload file and fails (same comment as last item; I don't want to rely on the extra 'text/html' to distinguish from files)
- Drag text from firefox - text/_moz_htmlcontext; text/_moz_htmlinfo; text/html; text/plain => upload html
- Drag text from chrome - application/x-moz-file; text/html; text/plain; Files => tries to upload file and fails (will try same fix as above)
- Drag text from Libre Office / Kate text editor - empty list of types; nothing I can do about it
Destination browser Chrome (19, Linux):
- Drag file - Files => uploads file
- Drag url from firefox (page or address bar) - text/html; text/uri-list; text/plain => uploads url
- Drag url from chrome page - text/html; text/uri-list; text/plain => uploads url
- Drag url from chrome address bar - text/uri-list; text/plain => uploads url
- Drag text from firefox - text/html; text/plain => uploads html (with byte order fix)
- Drag text from chrome - text/html; text/plain => uploads html (also with byte order fix, but ignored)
- Drag text from libre office - text/html; text/plain => uploads html
- Drag text from kate (text editor) - types is null
I've added a further commit (after many hours of messing around with this), which fixes the following issues:
- Links can now be dragged from chrome => firefox
- Text from chrome => firefox works reasonably well for Latin characters, not well for non-Latin characters (I've spent a long time trying to fix this, but I've run out of ideas - I'm hoping this is a fairly unusual use-case); text from firefox => firefox still works fine
- An annoying Firefox bug whereby the URLs of the inserted activities had '~' characters encoded as '%7e', which then logged the user out when they clicked on it
The commit can be found in my '
MDL-22504_drag_and_drop_upload_integration' branch.
I've just been looking at this and really looking at these hacks we now have to do to sort out the content, and varying results on different browsers it makes me think that we should go the simpler for users and developers alike solution of avoiding non-file type drag drop all together.
I know thats radical, but it was my initial instinct too some months ago. Do non-tech people really understand the concept of dragging texts and links around like this anyway? Especially non-mac users?
So, leaving this for discussion and sam to consider.
To summarise the issues:
- Drag and drop of files - no issues
- Drag and drop of urls/text into chrome - no issues (but one bit of content hacking for text dragged from FF=>chrome under Linux, which appears to be reliable)
- Drag and drop of urls into firefox - no issues
- Drag and drop of text into firefox - unreliable (works FF=>FF, corrupts non-ASCII characters chrome=>FF, does nothing for other applications => FF under Linux)
If we wanted to leave file drag and drop in and make text/url dragging an optional system setting (default to files only), then the obvious place, to my mind, would be to edit 'get_js_data' and add an 'if ($CFG->dndfilesonly) {' around the 'foreach' loop (as well as the settings code).
Sorry. I've completely overlooked this while working on other reviews.
Having had a quick look now I really don't like/trust the JS hacks for FF issues. To be truthful I think we are certainly best to remove those.
I think the idea of having a setting to allow drag and drop of content (not just files) is a good idea and I think perhaps the solution is to make it a setting under experimental headings, disabled by default, noted as not working if firefox presently and then remove the FF hacks a leave a todo to fix it once issue within Firefox have themselves being fixed.
That way those who still want to enable it can (and I do think it is a cool feature and should be possible) and there won't be any false pretenses about it working as the experimental setting will say it all.
Whats your thoughts guys?
My +1 for a $CFG->dndallowtextandlinks to enable those two, with a description explaining the issues.
The '
MDL-22504_drag_and_drop_upload_integration' branch now includes the $CFG->dndallowtextandlinks setting on the experimental settings page and removes the content hacks (and adds an extra check to catch the 'empty contents' upload a bit earlier and give a more helpful error message about it).
Hi Davo,
I'm afraid I don't like the look of that one sorry, because:
- The experimental feature isn't matching our style of just being a 'flag' on or off. It should just be an on or off tickbox like the other ones in experimental settings. In fact your description implies that too. So if that could just be a tickbox it'd be better.
- Use if (!empty($CFG->dndallowtextandlinks)) { to prevent warnings when not set
- My gut feeling about that combination of strings for different variations of files/links being enable seems over the top. However I realise it might be the best solution from a translation point of view. My thoughts for now is that we just ignore the multiple file types in that string. However, i'm still thinking if that really is best.
1. I went for a drop-down, as I thought that was clearer about exactly what you were enabling, but I've changed to a tickbox
2. I thought about that, but assumed that after the upgrade the setting would always be present, but have adjusted the code
3. I don't really like the multiple strings either, but the alternatives of constructing language strings or not explaining what you can drag and drop ('drag and drop things' or just 'drag and drop files') would seem to me to be even less desirable (they would make it hard for teachers to discover the extra features - assuming they were enabled by the site admin; it would also make it hard for teachers already aware of the feature to know, if moving between Moodle sites, whether the feature was available).
OK thanks a lot for that Davo.
Discussed a bit between integrators and couldn't think fo a better way to do the lang strings so have pulled that in now.
Test successful.
I just noticed that the icons for xls, ods files are dmg icons. And the icons for docx files are zip icons.
Good job!
This issue has been integrated upstream and is now available both via git and cvs (and in some hours, via mirrors and downloads).
Hi guys. Just for your information - seems that strings were MOVed from lang/en/dndupload.php without an appropriate AMOScript. I know it is a bit annoying but AMOS replays the whole history of commits even on the master branch. So it did register the new dndupload.php file and folks started to translate it. Nothing serious happened this time so no stress. I just wanted to mention
Similar to Frédéric Massart's comment
Testing latest Moodle 2.3 alpha with Firefox 12
Drag and Drop upload generally working well, but some Microsoft file types are uploaded with wrong icon
e.g. pptx and xls show as docx
some docx show as docx others (created by Open Office?) as some form of zipped format (mbz?)
xlsx also show as zipped
I have not investigated further, but wondering if there is an issue with mime-type detection by OS/Browser combinations?
Are the icons correct after a page refresh? If they are still wrong after the page refresh, then this is probably unrelated to drag and drop upload.
Get same icon issue if files are uploaded 'conventionally' through the file picker. So, presumably an issue with core file/mime-type recognition rather than drag-n-drop per se.
If you are using moodle.git, then it might be some days behind, which means you are seeing old bugs. eg
Yes, had installed a few days ago, Moodle 2.3dev (Build: 20120522). So, I'll update and check if fixed.
Just to confirm the recent patch for
MDL-33144 fixed file icon display for us
Thanks Martin!
Davo, thanks a lot for this very cool new feature in Moodle 2.3, which is now documented in the 2.3 wiki: