• Creator
  • #3479


    I turned on and configured the shit out of how pages are cached. If you make a post or leave a comment and it doesn’t show up immediately. Nothing is broken. Be patient. Your post WILL show up within no more than 10 minutes. If this feature gets annoying let me know and I may adjust it. It actually should work in a way that WONT force you to wait for the cache to see your post and only serve cache’d pages when no post is made but, maybe not. Either way, nothing is broken. Actually, things are better than ever. I had some minuscule back-end problems and all of those are fixed. We had a couple of plug-ins that were on but unnecessary. Those are gone.

    I also just made a lot of changes to how the basic site security is monitoring the site. We don’t have any problems but, I know a bunch more than I did when I originally implemented it so, I used that knowledge to do a better job. We have like a gabillion securities so, even if I would have done nothing it may not have mattered. I did it anyway. We have a new firewall. Numerous changes were made to how spam prevention is handled. There may be a captcha to make a new thread. I might turn this off until and if we ever have a problem but for the next day or two I’m going to leave it a is.

    I noticed in the logs that a number of you have numerous failed login attempts. What’s going on with that? Yeah, I even know about that. I know who, when and how many times. Is there something going wrong with logging in for you guys? Personally I have never had a problem. If there is some issue you need to tell me.

    In the near future this site will have advertisements. NONE of the logged in members will be able to see them. We get a whole lot of hits in a day but it is primarily from guests. Guests need to look at ads. I’m going to do it nice and clean but, guests need to look at ads. Guests that sign up just to hide the ads will be guests again before they know it. It really boils down to 2 things: Do I know who you are? And if I don’t know who you are… Are you participating? If I don’t know who you are AND you aren’t participating you’ll be a guest again before you know it AND unable to sign back up. This isn’t quakeone. Play or Pay those are going to be the options.

    • This topic was modified 48 years ago by .

    one day at a timetop | reply

Viewing 15 replies - 1 through 15 (of 76 total)
  • Author
  • #6082

    • topics: 39
    • replies: 306

    I deleted a ton of stuff that was related to deleted plugins but still hanging around … database tables, shortcodes left on pages and entire pages. I’ve jumped around the forum since and nothing seems to be broken. If you notice anything wrong please inform me in this thread and I’ll get it fixed.


    one day at a timetop | reply


    • topics: 39
    • replies: 306

    Heads Up:

    At some point either today or tomorrow I plan to go in the database and delete a bunch of tables that SHOULD only apply to deleted plugins. If the site starts acting weird, that’s just me breaking the fuck out of it. All this stuff is backed up in quintuplicate and can be restored at the click of a button. If I really do break the site I will unbreak it. I doubt there will be any breakage though. The tables I intend to delete are all named after plugins that we don’t use anymore. There is a small chance that some of the data is still being used even though the plugin is deleted but, if that is even true, it’s use shouldn’t be something that would affect the site functionally.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    I deleted a bunch of plugins. I pretty much get harassed to update a bunch of plugins that nobody ever uses so I deleted them.

    There is no more:

    1) Polling System – I am the only one that ever used this and I took my one poll down like 1 hour after I made it
    2) Featured Content For Profiles ~ Basically you could use your gallery and other profile options to create bad-ass presentations of your work.
    3) SEO ~ I’m basically never going to bother to go rewrite everything on this site to be SEO friendly so there was no point in this plug-in
    4) User Slideshows ~ Nobody took the time to use this feature and generally people tend to just post Imgur galleries.
    5) Social Share Icons ~ every page had 0 shares.

    I deleted other stuff but, it’s mostly just admin junk. There may be more to go soon. I’m considering getting rid of the AJAX chat since it never gets used. I may also get rid of BuddyDrive, BuddyDocs, Profile Galleries and EmbedPress (embed anything). None of this stuff ever gets used. I want to slim this site down to what is actually in use. Really I could probably just delete everything except your profile, the bare-bones forum and our security plug-ins.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    lol, that was just some quick and dirty html. It wasn’t meant or designed to be some official thing.

    one day at a timetop | reply


    • topics: 2
    • replies: 51

    I’m laughing so hard:

    Apparently it’s going out of the boundaries, too. 😛


    • topics: 39
    • replies: 306

    I am on the ultimate cusp of officially releasing Qtv. I finished the docs but, I want to go through them one more time to make sure I am completely satisfied with them. I have one totally simple feature to add. Past that I just want to test it a bunch in firefox and chrome to at least make sure there are no prevalent issues.

    I could probably have it released in an hour but, I will probably wait til tomorrow. I need a “minute” for it to bake in that I actually finished the first version of this and feel good about releasing it into the wild. I know my work is solid but, I want to be damn sure. The absolute last thing I want is for someone to use this in one of the major tested browsers and then hit me back that something really really stupid doesn’t work … like the play button (as an example).

    This will definitely be released no later than tomorrow. That is an absolute guarantee. Technically it is already available. I’m just not going to tell you where yet. Fishing for it would be a waste of your time. The version that I have uploaded is completely outside of wordpress in every way. You could play with URLs all day and this forum has no clue it exists.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    I was just testing my ignore feature some more and every now and then it would throw an error claiming that “description is null”. I was like WTF!? So, I traced out the nodeList and guess what I saw (you’ll never guess)? The first 5 results of safe_episodes were the example elements from my help file. LMAO!! I just copy and pasted the actual code to my help file so the visual representations each section describes would be identical to the actual element. Oops…lol. Well that’s easy to fix, at least. This means that even before I made the ignore feature it was possible for the example elements to get chosen at random so, it’s a good thing I made ignore, severely lessening the pool of videos to choose from, and started getting errors cause, I may have never caught that.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    Maaaaaan, ignored episodes was easy as shit to make. I was WAY the fuck off in my line of thinking. This is so simple. All episodes are gathered like this

    this.episodes = _$(“span.gyptv-episode”);

    that is literally every clickable listing that cues|plays|pauses a video.

    Those elements are buried inside of li.gyptv-episodes respective to their channel slug. I wanted clicking the channel slug to be the way to (un) ignore entire channels. So… you click a slug and it either adds or removes the .ignore class to the channel slug (to grey it out) and to li.gyptv-episodes. Now that we have such a major block with the ignore class in it, we construct and alternate episode list like this

    this.safe_episodes = _$(‘li.gyptv-episodes:not(.ignore) > ul.gyptv-listing > li.gyptv-episode-parent > span.gyptv-episode’);

    thereby only getting episodes that are :not() in an ignored episode list. Then I simply told my randomVideo function to choose from “safe_episodes” instead of “episodes”. Done. No tearing apart of anything. No crazy loops that filter through everything one thing at a time. I accomplished the entire thing in 11 lines of code, and changing one thing in 1 line of code. I’m positive it works cause I just ignored every channel except 2, turned on random, and pressed skip about 100 times. It totally works. I could shorten that query to …

    this.safe_episodes = _$(‘li.gyptv-episodes:not(.ignore) span.gyptv-episode’);

    but, I like being really specific … describing the entire chain. That way if I go back to this in 6 months I don’t spend half an hour trying to figure out what the hell is going on and/or where “span.gyptv-episode” actually is. I think I am going to change





    OH! Also, I got rid of like 30 summin lines of getters in my Base Class. I did something to GypQuery and realized that this._whatever in the constructor is NOT private (or protected) to the class, at all (ridiculous). It’s as good as making a public getter and setter all in one … and that’s when I realized that Classes in Javascript are just sugar-coated Objects. The ONLY thing that making those getters was doing was making a read-only version of the variable BUT, the actual variable still has public read/write access so, how fucking useless is that. So, every var that I was declaring in the constructor got renamed to it’s getter name and all corresponding getters were deleted. NOT ONE ERROR. Also, I thought back to how I was having trouble getting some of my functions into a class a while back and took a page from GypQuery by wrapping a new Controls class in a function and making my utility class a constant. I then moved all my controls to that class. Voila, no more “this doesn’t exist” errors, cause “this” is replaced with the utility class constant and therefore scope is maintained instead of being lost to the scope of the callback function. Fuck Javascript.

    Anyway, now the ONLY things that are not classed are anything that is dependent on the YouTube player var. I have tried to put it in a class before and it creates a whole lot of fucking problems. That variable has all it’s own everything going on. It’s everything and my everything don’t agree at all about when things should happen. One of us is always ready too soon and I don’t want to lock my application down to waiting for every iota to be ready before anything happens. This app is 1773 lines of code in total. I want as much of that out the way as fast as I can get it there.

    I’m down to docs. I’m about to go rewrite them right now.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    Here’s a little peep at the size of Qtv. This ENTIRE class is nothing but a dictionary. Using this class you can easily grab elements and the facts/states of them but otherwise, there is NO functionality in this class. Not one setter and everything that is not labeled “get” is only because it has to accept an argument to return the data you requested. All of this just to set the stage to give Qtv behavior.

    class GypTvBase
        {   /*episodes ~ the entire guide*/
            this._episodes          = _$("span.gyptv-episode");
            this._clock             = $("#gyptv-time");
            /*buttons|tab|slide controls|volume slider*/
            this._tabs              = _$('.tab');
            this._rightSCA          = _$("li.gyptv-slide-right");
            this._leftSCA           = _$("li.gyptv-slide-left");
            this._simImgAll         = _$("ul#gyptv-similar > li > img");
            this._show_button       = $("#gyptv-show-current-button");
            this._skip_button       = $("#gyptv-skip-button");
            this._effects_slider    = $('#gyptv-effects-volume');
            /*catalogue|search dependencies and elements*/
            this._descs             = _$('.gyptv-episode-parent > input[id$="-description"]');
            this._cat_search        = $('#gyptv-catalogue-search');
            this._cat_submit        = $('#gyptv-search-submit');
            this._cat_lpage         = $('#gyptv-left-pagination');
            this._cat_rpage         = $('#gyptv-right-pagination');
    	this._search_rcntrl     = $('#gyptv-search-right-control');
            this._search_lcntrl     = $('#gyptv-search-left-control');
            this._menus             = _$("ul.gyptv-listing");
            this._iframe            = $('#gyptv-video');
            this._guide_panel       = $("div#gyptv-guide-panel");
            this._main_panel        = $("div#gyptv-main-panel");
            this._main_ldisp        = $("div#gyptv-info-ldisplay");
            this._main_rdisp        = $("div#gyptv-info-rdisplay");
            this._randTogg          = $("#gyptv-random-toggle");
            this._autoTogg          = $("#gyptv-autoplay-toggle");
            this._playTogg          = $("#gyptv-playlist-toggle");
            this._hideTogg          = $("#gyptv-hide-toggle");
            this._hide_on_audio     = document.getElementById("hide-on-audio");
            this._hide_off_audio    = document.getElementById("hide-off-audio");
            this._button_audio      = document.getElementById("button-audio");
            this._show_audio        = document.getElementById("show-audio");
            this._search_audio      = document.getElementById("search-audio");
            this._playlist_audio    = document.getElementById("playlist-audio");
            this._autoplay_audio    = document.getElementById("autoplay-audio");
            this._random_audio      = document.getElementById("random-audio");
        get hide_on_audio()     { return this._hide_on_audio;   }
        get hide_off_audio()    { return this._hide_off_audio;  }
        get button_audio()      { return this._button_audio;    }
        get show_audio()        { return this._show_audio;      }
        get search_audio()      { return this._search_audio;    }
        get playlist_audio()    { return this._playlist_audio;  }
        get autoplay_audio()    { return this._autoplay_audio;  }
        get random_audio()      { return this._random_audio;    }
        get tabs()              { return this._tabs;                }
        get show_button()       { return this._show_button;         }
        get skip_button()       { return this._skip_button;         }
        get effects_slider()    { return this._effects_slider;      }
        get play_toggle()       { return this._playTogg;            }
        get auto_toggle()       { return this._autoTogg;            }
        get rand_toggle()       { return this._randTogg;            }
        get hide_toggle()       { return this._hideTogg;            }
        get is_playlist()       { return this._playTogg.isChecked;  }
        get is_full_display()   { return this._hideTogg.isChecked;  }
        get random()            { return this._randTogg.isChecked;  }
        get autoplay()          { return this._autoTogg.isChecked;  }
        get descriptions()          { return this._descs;           }
        get search_right_control()  { return this._search_rcntrl;   }
        get search_left_control()   { return this._search_lcntrl;   }
        get catalogue_search()      { return this._cat_search;      }
        get catalogue_submit()      { return this._cat_submit;      }
        get catalogue_left_page()   { return this._cat_lpage;       }
        get catalogue_right_page()  { return this._cat_rpage;       }
        get guide_panel()       { return this._guide_panel;         }
        get main_panel()        { return this._main_panel;          }
        get video_display()     { return this._main_ldisp;          }
        get info_display()      { return this._main_rdisp;          }
        get menus()             { return this._menus;               }
        get clock()             { return this._clock;               }
        is_possible(_e)             { return _e.has("possible");                                    }/*true|false control is marked possible*/
        get right_slide_cntrl_all()	{ return this._rightSCA;	                                    }/*all right sliders*/
        get left_slide_cntrl_all()	{ return this._leftSCA;                                         }/*all right sliders*/
        right_slide_cntrl(_slug)    { return $$(this.right_slide_cntrl_all.withAttr("alt", _slug));	}/*specific right slider*/
        left_slide_cntrl(_slug)	    { return $$(this.left_slide_cntrl_all.withAttr("alt" , _slug));	}/*specific left slider*/
        slug_from_sid(_sid)	{ return _sid.replace(/[0-9]+/g, "");			    }/*get slug from slug id*/
        num_from_sid(_sid)	{ return parseInt(_sid.match(/([0-9]+)/g)[0]); 	    }/*get id num from slug id*/
        sid_from_el(el)     { return el.attr("alt");                            }/*get slug id from element*/
        slug_from_el(el)    { return this.slug_from_sid(el.attr("alt"));        }/*get slug from element*/
        episode_parent_all(_slug)	{ return _$("#"+_slug+" > li.gyptv-episodes > ul.gyptv-listing > li.gyptv-episode-parent"); }
        episode_parent(_sid)		{ return $("li.gyptv-episode-parent[alt=\""+_sid+"\"]");                                    }
        episode_parent_notice(_sid) { return $("li.gyptv-episode-parent[alt=\""+_sid+"\"] > .gyptv-notice");	                }
        channel_menu(_slug)		    { return $("#"+_slug+" > li.gyptv-episodes > ul.gyptv-listing");	                        }
        get active_episode_parent_all()    { return this.episode_parent_all(this.active_slug);      }
        get active_episode_parent()        { return this.episode_parent(this.active_sid);           }
        get active_episode_parent_notice() { return this.episode_parent_notice(this.active_sid);    }
        get active_channel_menu()          { return this.channel_menu(this.active_slug);            }
        get episodes ()     { return this._episodes;                                }
        get cued     ()     { return $("span.gyptv-episode.cued");                  }
        get playing  ()     { return $("span.gyptv-episode.playing");               }
        get paused   ()     { return $("span.gyptv-episode.paused");                }
        get buffering()     { return $("span.gyptv-episode.buffering");             }
        get inwait   ()     { return $("span.gyptv-episode.inwait");                }
        sid_episode(_sid)	{ return $("span.gyptv-episode[alt =\""+_sid+"\"]");	}/*specific*/
        get similar_image_all() { return this._simImgAll; }
        get cue_sid()		{ return this.cued.attr("alt");				        }/*currently cued slug id*/
        get play_sid()		{ return this.playing.attr("alt");			        }/*currently playing slug id*/
        get pause_sid()	    { return this.paused.attr("alt");			        }/*currently paused slug id*/
        get buff_sid()		{ return this.buffering.attr("alt");		        }/*currently buffering slug id*/
        get wait_sid()		{ return this.inwait.attr("alt");			        }/*currently inwait slug id*/
        get active_sid()    { return this.sid_from_el(this.active_episode);     }/*active sid id*/
        get cue_slug()		{ return this.slug_from_sid(this.cue_sid);			}/*currently cued slug*/
        get play_slug()	    { return this.slug_from_sid(this.play_sid);			}/*currently playing slug*/
        get pause_slug()	{ return this.slug_from_sid(this.pause_sid);		}/*currently paused slug*/
        get buff_slug()	    { return this.slug_from_sid(this.buff_sid);			}/*currently buffering slug*/
        get wait_slug()	    { return this.slug_from_sid(this.wait_sid);			}/*currently inwait slug*/
        get active_slug()   { return this.slug_from_sid(this.active_sid);       }/*active slug*/
        get cue_num()		{ return this.num_from_sid(this.cue_sid);			}/*currently cued sid num*/
        get play_num()		{ return this.num_from_sid(this.play_sid);			}/*currently playing sid num*/
        get pause_num()	    { return this.num_from_sid(this.pause_sid);			}/*currently paused sid num*/
        get buff_num()		{ return this.num_from_sid(this.buff_sid);			}/*currently buffering sid num*/
        get wait_num()		{ return this.num_from_sid(this.wait_sid);			}/*currently inwait sid num*/
        get active_num()    { return this.num_from_sid(this.active_sid);	    }/*active sid num*/
        {	var s = $("#"+_slug);
        	return (s != null)?s.top:NaN;
        {	var s = $("#"+_slug);
        	return (s != null)?s.height:NaN;
        {	var s = this.last_episode(_slug);
        	return (s != null)?(s.width + s.left):0;
        get active_channel_y()		{ return this.channel_y(this.active_slug);		}
        get active_channel_height() { return this.channel_height(this.active_slug);	}
        get active_channel_width()	{ return this.channel_width(this.active_slug);	}
        get scroll_width()
        {	var lid = $(".gyptv-channel-id");     /*all channel id's are the same width we just need any one*/
        	var scr = $("#gyptv-guide-scroll-content");
        	return ((lid != null) && (scr != null))?(scr.width - lid.width) * this.allowance:NaN;
        {	var ea = this.episode_parent_all(_slug);
        	if(ea != null)
        	{	var n = ea.length-1;
        		return $$(ea.el[n]);
        	return null;
        get active_last_episode(){	return this.last_episode(this.active_slug);	}
        get active_episode()
        {   var c;
            if((c = this.playing.el) == null){ if ((c = this.paused.el) == null){ if ((c = this.buffering.el) == null){ if ((c = this.inwait.el) == null){ if ((c = this.cued.el) == null){ return c; }}}}};
            return $$(c);
        get next_episode_from_active()
        {   var n		= this.active_num;
            var aepa	= this.active_episode_parent_all;
            var ne		= null;
            if((n++) < aepa.length) ne = this.sid_episode(this.active_slug+n);
            return ne;

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    My host gave me a 25% discount on my next purchase. I’m going to use it to upgrade this site to the next level up hosting package. That will quadruple our storage, double our RAM, upgrade our server processor speed, give me SSH ability and I think give us more databases (5 I believe. I may be confusing the database part with the next package up from the one I am talking about). We are using a plan right now that is literally called “Starter Kit” (lol). When I started this I did not know what to expect and I didn’t want to pay a bunch of money for possibly nothing. I mean, I wasn’t sure what to even do (in a “what am I going to build” sense) when this all began. We are way past that. Anyway, after Nov 11th the site should run faster and due to having SSH I will be able to install Node, which will allow me to make all kinds of stuff.

    I want our chat canvas back. SSH will allow me to install one directly on this server. I’ll be able to also do other things that are so real-time you can “see your respondents letters as they are being typed”. I have some really big ideas with that kind of power.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    LOL! My app doesn’t work at all in IE. At least not the IE that came stock with this computer from 3 years ago. I hate IE, never cater to it in any conceivable way and personally think it’s funny that Qtv doesn’t work in it. Safari, Chrome, Firefox, Opera … all work fine. I’m not updating my IE just to see if my app works in a newer version of it. I would completely delete IE if windows let me.

    Did I mention “completely fuck IE from 20 years ago til today and well into the future!”? Only fucking browser that has to make up all of it’s own rules. The biggest companies on Earth can pretty much all agree to the same standard but not IE, oh no, they gon’ revolooshuneyes. Fuckin garbage. I’m gonna browser sniff in my js and put a big fat message on every IE screen.

    Your Browser Is Infected With The Internet Explorer Virus

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    I had an idea for another feature so, I added it but, I have to do one more thing before it is complete. It totally works but, I should probably allow the user to determine if they want it to work and by how much. I also cleaned out all the garbage saved codes from my project and reorganized some of the directories to make it as clean as possible. I also took a crash course in GULP. I haven’t installed it or worked with it yet but, it seems pretty simple. When the time comes to minify and crush my dependencies I don’t see it being an issue.

    Once I program up a user setting for my new feature (easy as pie) I am finally going to attack the docs again. Then I intend to finally implement this ignore feature that I have been avoiding like the plague. That feature is something I really wish I would have had the forethought to make long before I got this far. I’ve come up with an idea on how to do it that shouldn’t require a hell of a lot of surgery but, I am seriously treading on thin ice no matter how I go about it. I have to fuck with the most involved resource of the entire app, the guide. The guide comes “bundled” as one thing and now I have to rip that thing apart, pick and choose and put it back together. That has to happen EVERY time a channel is (un)ignored. That isn’t the biggest problem though. The biggest problem is ignoring passively. In other words, ignore UNLESS the user has chosen something from the ignored channel BUT don’t unignore the channel just because the user selected something. And there-in lies the biggest problem “Pay attention to things that technically do not exist within the currently select-able database.”. Not looking forward to programming this feature, at all but, I also refuse not to have it. I hate it when I am watching Qtv on random continuous play and scene 22 of Nehahra or some super long video like Arrrcee’s more recent Quake Grave’s gets randomly selected. I personally want to be able to ignore super long and/or serial channels for random continuous play. I have watched a FUCK LOAD of Qtv (in testing). This feature isn’t optional.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    I’m down to just cleaning up the help file and making the ignore feature. I know that seems like I barely did anything but:

    1) my nap turned into an 8 hour sleep (I could use 8 more)
    2) I tightened up a bunch of stuff. I noticed a few little nuances that weren’t necessarily wrong they could just be better.

    For instance: when a selected episode slides into view it was possible that it would not completely come into view vertically. My system considered any amount of it in view as “visible”. Generally, it WOULD bring it completely into view due to the fact that cued selections and currently playing selections could easily be far enough apart vertically that one or the other would always be out of view when you toggle … forcing it to come completely back into view when toggled back. However, in some cases both could be in view with one only partially in view and my system used to consider both of those as “in view”. I made it smarter and it only took 2 lines of code. There are other such things like this that I made tighter. I also took a look at which things could be done just once. For instance, every time I do this $(‘#some_element’) I am remaking that element into a GypQuery class but, chances are I could have just made it upon App initiation (1 time) and make a getter for it. Not everything could be rewired like that but, quite a few things could, and now they are.

    Here’s a good one. A channel slides by a pixel offset but, if you resize the screen that pixel offset is wrong (it could even be VERY wrong depending on how dramatic the resize). This means on resize everything should be recalculated. And now it is. I went the quick method. I simply reset everything back to zero and then call showCued() and showActive() which slides the cued selection (if any) into view and then slides the currently playing|paused|buffering|waiting (whichever applies to active) selection into view.

    When you cued a video it would change the main title in the control bar. Now it doesn’t do that and only changes the information in the catalogue.

    when you hovered search next/prev it would give the tooltip “next|previous result” even if the respective direction was inactive … due to you being at the ultimate ends of the results or maybe cause you haven’t searched for anything yet in the first place. That is fixed.

    Just a bunch of little small nuance stuff. There was more. Actually the list was pretty extensive but, I’m mostly confident that I have eliminated them all. So, even though saying I have the help file rewrite and ignore left sounds like barely anything got done, I actually did a whole lot. However, even though the help file and ignore are the last things to do to CREATE Qtv, I still need to go take a crash course in GULP and crush this 40mb plugin down to it’s bare dependencies and minimize everything. Then I need to go to my youTube and take a real good look at these playlists … probably even make some new ones, as-well-as find more content. Some of these videos couldn’t be more boring. I’m not saying any names but, Did you take a whole bottle of downers before that walkthrough? My God, it’s like a walkthrough given by a zombie, Unnnnnnnggghh …DOLP.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    I’m gonna take a break … maybe even a nap. Here’s a shot of my docs. Some of it is wrong cause it’s left over from the last version. It wasn’t written very well in the first place. I burned through the docs as fast as I could and barely even tried to make it readable. I was more worried about getting the groundwork laid than writing something thought out. My next step is to go over every section and reconsider the wording, as well as fix any wrong information.

    one day at a timetop | reply


    • topics: 39
    • replies: 306

    1) help document is fully incorporated into the right tab area ~ still needs to be rewritten a little
    2) display quirks fixed
    3) logo and name are complete ~ still Qtv but logo it very different
    4) not going to do the subscribe link. I didn’t think that one through. Of course I can’t make an automatic subscribe link by proxy. What if you aren’t even a member of youTube? How would I know if you are signed in? I can make A subscribe link but, it will open up youTube in another tab and everything that enatails. That’s not what I meant by a subscribe link. I meant some ajax request gets sent to youTube and it is completely seamless. Click, done … not click, load page, whatever youTube does when you click a subscribe link, etc… So, there won’t be a subscribe link.

    5) pagination hasn’t been touched yet but, it shouldn’t be too hard
    6) ignore hasn’t been touched yet and I am seriously not looking forward to it. It’s going to require surgery to make that work and I am positive I am going to break a whole lot of things before I get it all ironed out.

    one day at a timetop | reply

Viewing 15 replies - 1 through 15 (of 76 total)

You must be logged in to reply to this topic.