Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

In my current project, I have been told to design a custom timer job which will run once a month and display a popup(which I'm planning to show as a modal dialog coded in jQuery). On clicking the popup, the user data and the date will be stored in a server side list. The timer job will need to run every month regardless of the date in the list. My question is, how do I display the popup coded in client side from the timer job and how do I save the user information in the server side list? I'm at loggerheads with this!
UPDATE: Oops forgot to mention what the timer job is meant for. We actually have to send emails to the user if he hasn't acknowledged, in addition to the popup display. If after 5 days he still hasn't acknowledged, a mail will go to the admin informing him about this. I think that's where the timer job will be used. Sorry for omitting so much out.


Any and all comments are really appreciated. Thanks in advance!

share|improve this question
    
So you are not really making a timer job, you are storing a date and checking against it right? –  Sam Sussman Dec 27 '12 at 14:14
    
No, the requirement says the popup has to be sent after a month ends regardless of the date. If no acknowedgement is received, the details of the users who haven't acknowledged the popup will be escalated to a higher official. –  uberz91 Dec 27 '12 at 14:20
    
Can you explain more "how do I display the popup coded in client side by retrieving the date from the server side list" –  user3470 Dec 27 '12 at 14:20
    
Sorry. edited the post. –  uberz91 Dec 27 '12 at 14:25

3 Answers 3

You could have the timer job create an item with a column holding the user name (ideally in a hidden list or maybe add a column to the users list ?)

Then you can create a delegate control or a small javascript wich checks if the current user is on that list and if the is has been created less than 5 days ago, if yes then show popup.

share|improve this answer

Okay, so this is not a timer job, it is a date value that must be kept somewhere. (A SharePoint TimerJob is a piece of code that runs via the OWSTIMER.exe on a certain schedule and has no access to a UI.

What you could do is either store a date value on a User Profile or create a List or a SQL Table that stores the date for each user. When that user logs on or goes to a certain page, or any page, you check where you store the value. You can do this with the SharePoint Object Model from C# in the asp page, or using the Client Side Object Model using javascript. When the data is a month or more old, display the popup. Accepting the popup will update the value, either with c# behind or javascript.

share|improve this answer
    
Thanks for answering. I forgot to mention the timer job's functionality in this. It'll be used for sending mails to the concerned users in addition to showing the popup. Really sorry. –  uberz91 Dec 27 '12 at 15:17
    
These will need to be two separate things if you want the emails to be sent in the background.You can always send emails from the behind code on the page from c#, or write a web service that the javascript calls. There is no way to do anything UI related from a timer job, but you can send emails from a web part/page. –  Sam Sussman Dec 27 '12 at 16:36
up vote 0 down vote accepted

I'm not trying to do this now. I'm using the timer job to send reminder emails at the start of every month to remind them to see the page by sending a link to the site in the email. And when the user visits the site at the start of the month, I display the popup using jQuery and enter the details of the user along with the date at which he acknowledged in a list. Now, I query the list and if the user is already present, do not show the popup throughout the month.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.